Registra un recinto

La tua app riceve un callback entro il giorno PendingIntent ogni volta che lo stato di un recinto cambia. La tua app deve registrare ogni recinto prima di poter essere utilizzato.

Registra un recinto

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

Per registrare un recinto e annullarne la registrazione, occorre quanto segue:

  • Un'istanza di Client API Google Play Services.
  • Un'istanza AwarenessFence, ovvero il recinto.
  • Un PendingIntent per gestire le modifiche dello stato.
  • Una chiave di recinzione, che è una stringa che identifica la recinzione e la mappa a una coppia AwarenessFence-PendingIntent.

L'esempio di codice riportato di seguito 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ù recinzioni con chiavi di recinzione univoche, chiama più volte addFence(). Puoi utilizzare tutti i metodi PendingIntent che ti servono, ma è preferibile utilizzare un solo 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 la chiave.

Annullare la registrazione di un recinto

Per annullare la registrazione di un recinto, chiama getFenceClient().updateFences() e utilizza FenceUpdateRequest.Builder() per costruire una richiesta di aggiornamento del recinto. Quindi chiama la funzione removeFence(), come 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 di recinzione.