Registrar una cerca

Tu app recibe una devolución de llamada de PendingIntent cada vez que cambia el estado de una valla. Tu app debe registrar cada valla antes de que se pueda usar.

Registra una valla

Para registrar una valla, usa FenceClient y, para construir un FenceUpdateRequest, usa FenceClient.updateFences(). Llama a addFence() para cada valla que se agregue.

Para registrar y cancelar el registro de una valla, se requiere lo siguiente:

  • Instancia de cliente de la API de Servicios de Google Play
  • Una instancia de AwarenessFence, que es la misma valla.
  • Un PendingIntent para controlar los cambios de estado.
  • Es una clave de valla, que es una cadena que identifica la valla y se asigna a un par AwarenessFence-PendingIntent.

En el siguiente ejemplo de código, se muestra un método que llama a updateFences() para registrar una valla:

    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);
            }
        });

Para crear varias barreras con claves únicas, llama a addFence() varias veces. Puedes usar tantos métodos PendingIntent como necesites, pero es preferible usar un solo PendingIntent para todas las devoluciones de llamada de la valla. Si usas una clave de valla que ya se registró para llamar a addFence(), los valores de AwarenessFence y PendingIntent se reemplazarán para esa clave.

Cómo cancelar el registro de una valla

Para cancelar el registro de una valla, llama a getFenceClient().updateFences() y usa FenceUpdateRequest.Builder() para crear una solicitud de actualización de la valla. Luego, llama a removeFence(), como se muestra en el siguiente ejemplo:

 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);
         }
     });

Próximo paso: Administra las devoluciones de llamada de la valla.