Registrar una cerca

Tu app recibe una devolución de llamada de PendingIntent cada vez que cambia el estado de un perímetro. Tu app debe registrar cada cerca para que se pueda usar.

Registra una valla

Para registrar un perímetro, usa FenceClient y, para construir un FenceUpdateRequest, usa FenceClient.updateFences(). Llama a addFence() para cada cerca que quieras agregar.

Para registrar y cancelar el registro de un perímetro, se requiere lo siguiente:

  • Una instancia de cliente de la API de Servicios de Google Play
  • Una instancia de AwarenessFence, que es la cerca en sí.
  • Un PendingIntent para controlar los cambios de estado.
  • Una clave de cerca, que es una cadena que identifica la cerca 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 un perímetro:

    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 cercas con claves de cerca ú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 cerca. Si usas una clave de cerca que ya se registró para llamar a addFence(), los valores de AwarenessFence y PendingIntent se reemplazarán para esa clave.

Cancela el registro de un perímetro

Para anular el registro de un perímetro, llama a getFenceClient().updateFences() y usa FenceUpdateRequest.Builder() para crear una solicitud de actualización de perímetro. 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 cerca.