Seu app recebe um callback por PendingIntent sempre que o estado de uma barreira muda. Seu app precisa registrar cada barreira antes de poder ser usada.
Registrar uma barreira
Para registrar uma barreira, use o
FenceClient,
e para criar um FenceUpdateRequest,
use FenceClient.updateFences().
Chame addFence() para cada barreira a ser adicionada.
Os seguintes itens são necessários para registrar e cancelar o registro de uma barreira:
- Uma instância do cliente da API Google Play Services.
- Uma instância
AwarenessFence, que é a própria barreira. - Um
PendingIntentpara processar mudanças de estado. - Uma chave de barreira, que é uma string que identifica a barreira e é mapeada para um par
AwarenessFence-PendingIntent.
O exemplo de código a seguir mostra um método que chama updateFences() para registrar uma barreira:
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. Você pode usar quantos métodos PendingIntent forem necessários, mas é preferível usar um único PendingIntent para todos os callbacks de barreira. Se você usar uma chave de barreira que já foi registrada para chamar addFence(), os valores AwarenessFence e PendingIntent serão substituídos para essa chave.
Cancelar o registro de uma barreira
Para cancelar o registro de uma barreira, chame
getFenceClient().updateFences(),
e use FenceUpdateRequest.Builder()
para criar uma solicitação de atualização de barreira. Em seguida, chame removeFence(), como mostra o 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 barreira.