Votre application reçoit un rappel de PendingIntent
chaque fois que l'état d'une clôture change. Votre application doit enregistrer chaque clôture avant de pouvoir être utilisée.
Enregistrer une clôture
Pour enregistrer une clôture, utilisez FenceClient
et, pour construire une FenceUpdateRequest
, utilisez FenceClient.updateFences()
.
Appelez addFence()
pour chaque clôture à ajouter.
Les éléments suivants sont requis pour enregistrer et annuler l'enregistrement d'une clôture:
- Une instance de client de l'API des services Google Play
- Une instance
AwarenessFence
, qui est la clôture elle-même - Une
PendingIntent
pour gérer les changements d'état. - Une clé de clôture, qui identifie la clôture et est mappée à une paire
AwarenessFence
-PendingIntent
L'exemple de code suivant montre une méthode qui appelle updateFences()
pour enregistrer une clôture:
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 de clôture uniques, appelez addFence()
plusieurs fois. Vous pouvez utiliser autant de méthodes PendingIntent
que nécessaire, mais il est préférable d'utiliser un seul 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 clôture, appelez getFenceClient().updateFences()
et utilisez FenceUpdateRequest.Builder()
pour créer une requête de mise à jour de la clôture. Appelez ensuite removeFence()
, comme illustré dans 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