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.