Enregistrer une clôture

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 PendingIntent pour 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.