O app recebe um callback de PendingIntent sempre que o estado de uma cerca
muda. Seu app precisa registrar cada cerca antes de poder ser usada.
Registrar um isolamento
Para registrar uma cerca, use
FenceClient.
Para criar um FenceUpdateRequest,
use FenceClient.updateFences().
Chame addFence() para cada limite a ser adicionado.
Os seguintes itens são necessários para registrar e cancelar o registro de uma cerca:
- Uma instância do cliente da API Google Play Services.
- Uma instância
AwarenessFence, que é a própria cerca. - Um
PendingIntentpara processar mudanças de estado. - Uma chave de restrição, que é uma string que identifica a restrição e mapeia para um par
AwarenessFence-PendingIntent.
O exemplo de código a seguir mostra um método que chama updateFences() para
registrar uma restrição:
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 barreiras com chaves exclusivas, chame addFence()
várias vezes. É possível usar quantos métodos PendingIntent forem necessários, mas é
preferível usar um único PendingIntent para todos os callbacks de restrição. Se você usar uma chave de restrição 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
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 a seguir:
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 limite.