Registra un recinto

La tua app riceve un callback da PendingIntent ogni volta che lo stato di una recinzione cambia. La tua app deve registrare ogni recinzione prima di poterla utilizzare.

Registrare una recinzione

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

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

  • Un'istanza di client API Google Play Services.
  • Un'istanza AwarenessFence, ovvero la recinzione stessa.
  • Un PendingIntent per gestire le modifiche dello stato.
  • Una chiave di recinzione, ovvero una stringa che identifica la recinzione e viene mappata 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 che ti servono, 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 una recinzione

Per annullare la registrazione di una recinzione, chiama getFenceClient().updateFences(), e utilizza FenceUpdateRequest.Builder() per creare una richiesta di aggiornamento della recinzione. Poi 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 perimetrali.