Registrar uma cerca

Seu app recebe um callback por PendingIntent sempre que o estado de uma cerca muda. Seu app precisa registrar cada limite antes de ser usado.

Registrar uma cerca

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

Para registrar e cancelar o registro de uma cerca, é necessário:

  • Uma instância do cliente da API Google Play Services.
  • Uma instância AwarenessFence, que é a própria cerca.
  • 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 abaixo 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árias cercas 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 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 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.