Enregistrer une clôture

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