Enregistrer une clôture

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.