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.