Registrar uma cerca

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 PendingIntent para 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.