Votre application reçoit un rappel par PendingIntent chaque fois que l'état d'une limite géographique change. Votre application doit enregistrer chaque limite géographique avant de pouvoir l'utiliser.
Enregistrer une limite géographique
Pour enregistrer une limite géographique, utilisez le
FenceClient,
et pour créer un FenceUpdateRequest,
utilisez FenceClient.updateFences().
Appelez addFence() pour chaque limite géographique à ajouter.
Les éléments suivants sont requis pour enregistrer et supprimer l'enregistrement d'une limite géographique :
- Une instance de client d'API des services Google Play.
- Une instance
AwarenessFence, qui est la limite géographique elle-même. - Un
PendingIntentpour gérer les changements d'état. - Une clé de limite géographique, qui est une chaîne identifiant la limite géographique et mappant une paire
AwarenessFence-PendingIntent.
L'exemple de code suivant montre une méthode qui appelle updateFences() pour enregistrer une limite géographique :
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 limites géographiques 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 un seul PendingIntent pour tous les rappels de limites géographiques. Si vous utilisez une clé de limite géographique déjà enregistrée pour appeler addFence(), les valeurs AwarenessFence et PendingIntent sont écrasées pour cette clé.
Supprimer l'enregistrement d'une limite géographique
Pour supprimer l'enregistrement d'une limite géographique, appelez
getFenceClient().updateFences(),
et utilisez FenceUpdateRequest.Builder()
pour créer une requête de mise à jour de la limite géographique. Appelez ensuite removeFence(), comme indiqué 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 limites géographiques.