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.

Registrar una cerca

Para registrar una cerca, usa el FenceClient y, para construir un FenceUpdateRequest, usa FenceClient.updateFences(). Llama a addFence() para cada valla que desees agregar.

Se requiere lo siguiente para registrar y cancelar el registro de una valla:

  • Una instancia de Cliente de la API de Servicios de Google Play
  • Una instancia de AwarenessFence, que es la valla en sí
  • Un PendingIntent para controlar los cambios de estado
  • Una clave de valla, que es una string 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 vallas con claves de valla únicas, llama a addFence() varias veces. Puedes usar todos los métodos PendingIntent que necesites, pero es preferible usar un solo PendingIntent para todas las devoluciones de llamada de vallas. Si usas una clave de valla que ya se registró para llamar a addFence(), los valores AwarenessFence y PendingIntent se reemplazan por esa clave.

Cancela el registro de una cerca

Para cancelar el registro de una valla, llama a getFenceClient().updateFences() y usa FenceUpdateRequest.Builder() a fin de construir una solicitud de actualización de vallas. 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 vallas.