La tua app riceve un callback tramite 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 la
FenceClient,
e per creare un FenceUpdateRequest,
utilizza FenceClient.updateFences().
Chiama addFence() per ogni recinzione da aggiungere.
Di seguito sono riportati i requisiti per registrare e annullare la registrazione di una recinzione:
- Un'istanza del client API di Google Play Services.
- Un'istanza di
AwarenessFence, ovvero la recinzione stessa. - Un
PendingIntentper gestire le modifiche dello stato. - Una chiave di recinzione, ovvero una stringa che identifica la recinzione e mappa una coppia
AwarenessFence-PendingIntent.
Il seguente esempio di codice mostra un metodo che chiama updateFences() per registrare una recinzione:
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 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 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: gestire i callback di recinzione.