Registra un recinto

La tua app riceve un callback da PendingIntent ogni volta che cambia lo stato di un recinto. L'app deve registrare ogni recinto prima che possa essere utilizzato.

Registra una recinzione

Per registrare un recinto, utilizza FenceClient e per creare un FenceUpdateRequest, utilizza FenceClient.updateFences(). Chiama il numero addFence() per ogni recinto da aggiungere.

Per registrare e annullare la registrazione di un recinto sono richiesti i seguenti elementi:

  • Un'istanza di client dell'API Google Play Services.
  • Un'istanza AwarenessFence, ovvero la recinzione stessa.
  • Un PendingIntent per gestire le modifiche dello stato.
  • Una chiave recinzione, ovvero una stringa che identifica la recinzione e viene associata a una coppia AwarenessFence-PendingIntent.

Il seguente esempio di codice mostra un metodo che chiama updateFences() per registrare un recinto:

    Awareness.getFenceClient(this).updateFences(new FenceUpdateRequest.Builder()
        .addFence(FENCE_KEY, exercisingWithHeadphonesFence, mPendingIntent)
        .build())
        .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Log.i(TAG, "Fence was successfully registered.");
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.e(TAG, "Fence could not be registered: " + e);
            }
        });

Per creare più recinti con chiavi univoche, chiama addFence() più volte. Puoi utilizzare tutti i metodi PendingIntent di cui hai bisogno, ma è preferibile utilizzare un singolo PendingIntent per tutti i callback di recinzione. Se utilizzi una chiave di recinzione già registrata per chiamare addFence(), i valori AwarenessFence e PendingIntent vengono sovrascritti per quella chiave.

Annullare la registrazione di un recinto

Per annullare la registrazione di un recinto, chiama getFenceClient().updateFences() e utilizza FenceUpdateRequest.Builder() per creare una richiesta di aggiornamento del recinto. Quindi chiama removeFence(), come mostrato nell'esempio seguente:

 Awareness.getFenceClient(this).updateFences(new FenceUpdateRequest.Builder()
     .removeFence(FENCE_KEY)
     .build())
     .addOnSuccessListener(new OnSuccessListener<Void>() {
         @Override
         public void onSuccess(Void aVoid) {
             Log.i(TAG, "Fence was successfully unregistered.");
         }
     })
     .addOnFailureListener(new OnFailureListener() {
         @Override
         public void onFailure(@NonNull Exception e) {
             Log.e(TAG, "Fence could not be unregistered: " + e);
         }
     });

Passaggio successivo: Gestisci i callback del recinto.