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.