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.