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.