Votre application reçoit un rappel par PendingIntent
chaque fois que l'état d'une clôture change. Votre application doit enregistrer chaque barrière avant de pouvoir l'utiliser.
Enregistrer une clôture
Pour enregistrer une clôture, utilisez FenceClient
. Pour construire un FenceUpdateRequest
, utilisez FenceClient.updateFences()
.
Appelez addFence()
pour chaque barrière à ajouter.
Les éléments suivants sont nécessaires pour enregistrer et annuler l'enregistrement d'une clôture :
- Instance Google Play Services API Client.
- Une instance
AwarenessFence
, qui est la clôture elle-même. - Un
PendingIntent
pour gérer les changements d'état. - Clé de clôture, qui est une chaîne identifiant la clôture et mappant à une paire
AwarenessFence
-PendingIntent
.
L'exemple de code suivant montre une méthode qui appelle updateFences()
pour enregistrer une barrière :
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);
}
});
Pour créer plusieurs clôtures avec des clés uniques, appelez addFence()
plusieurs fois. Vous pouvez utiliser autant de méthodes PendingIntent
que nécessaire, mais il est préférable d'utiliser une seule méthode PendingIntent
pour tous les rappels de clôture. Si vous utilisez une clé de clôture déjà enregistrée pour appeler addFence()
, les valeurs AwarenessFence
et PendingIntent
sont remplacées pour cette clé.
Annuler l'enregistrement d'une clôture
Pour annuler l'enregistrement d'une barrière, appelez getFenceClient().updateFences()
et utilisez FenceUpdateRequest.Builder()
pour créer une requête de mise à jour de la barrière. Appelez ensuite removeFence()
, comme le montre l'exemple suivant :
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);
}
});
Étape suivante : Gérer les rappels de clôture.