Seu app recebe um callback de PendingIntent
sempre que o estado de uma cerca
muda. O app precisa registrar cada cerca antes de usá-la.
Registrar uma cerca
Para registrar uma cerca, use o
FenceClient
.
Para criar uma FenceUpdateRequest
,
use FenceClient.updateFences()
.
Chame addFence()
para cada cerca a ser adicionada.
Os seguintes requisitos são necessários para registrar e cancelar o registro de uma cerca:
- Uma instância de cliente da API Google Play Services.
- Uma instância
AwarenessFence
, que é a cerca em si. - Um
PendingIntent
para processar mudanças de estado. - Uma chave de cerca, que é uma string que identifica a cerca e é mapeada para um
par
AwarenessFence
-PendingIntent
.
O exemplo de código abaixo mostra um método que chama updateFences()
para
registrar uma cerca:
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 criar várias cercas com chaves exclusivas, chame addFence()
várias vezes. É possível usar quantos métodos PendingIntent
for necessário, mas é
preferível usar um único PendingIntent
para todos os callbacks de cerca. Se você
usar uma chave de cerca que já foi registrada para chamar addFence()
, os
valores AwarenessFence
e PendingIntent
serão substituídos para essa chave.
Cancelar o registro de uma cerca virtual
Para cancelar o registro de uma cerca, chame
getFenceClient().updateFences()
e use FenceUpdateRequest.Builder()
para criar uma solicitação de atualização de cerca. Em seguida, chame removeFence()
, conforme
mostrado no exemplo abaixo:
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óxima etapa: gerenciar callbacks de cerca.