Registrar uma cerca

Seu app recebe um callback até PendingIntent sempre que o estado de um limite muda. Seu app precisa registrar cada limite antes de poder ser usado.

Registrar uma cerca

Para registrar um limite, use o FenceClient e, para criar um FenceUpdateRequest, use FenceClient.updateFences(). Chame addFence() para cada limite que você quer adicionar.

Os itens a seguir são necessários para registrar e cancelar o registro de um limite:

  • Uma instância do cliente da API Google Play Services.
  • Uma instância de AwarenessFence, que é o limite.
  • Um PendingIntent para processar mudanças de estado.
  • Uma chave de limite, que é uma string que identifica o limite e é mapeada para um par AwarenessFence-PendingIntent.

O exemplo de código a seguir mostra um método que chama updateFences() para registrar um limite:

    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ários limites com chaves exclusivas, chame addFence() várias vezes. Você pode usar quantos métodos PendingIntent precisar, mas é preferível usar um único PendingIntent para todos os callbacks de limite. Se você usar uma chave de limite 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 limite, chame getFenceClient().updateFences() e use FenceUpdateRequest.Builder() para criar uma solicitação de atualização de limite. 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 limite.