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.