Registrar uma cerca

Seu app recebe um callback de PendingIntent sempre que o estado de uma cerca muda. O app precisa registrar cada cerca antes de usá-la.

Registrar uma cerca

Para registrar uma cerca, use o FenceClient. Para criar uma FenceUpdateRequest, use FenceClient.updateFences(). Chame addFence() para cada cerca a ser adicionada.

Os seguintes requisitos são necessários para registrar e cancelar o registro de uma cerca:

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

O exemplo de código abaixo mostra um método que chama updateFences() para registrar uma cerca:

    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 for necessário, mas é preferível usar um único PendingIntent para todos os callbacks de cerca. Se você usar uma chave de cerca 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 virtual

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 abaixo:

 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 cerca.