Registrar uma cerca

O app recebe um callback de PendingIntent sempre que o estado de uma cerca muda. Seu app precisa registrar cada cerca antes de poder ser usada.

Registrar um isolamento

Para registrar uma cerca, use FenceClient. Para criar um FenceUpdateRequest, use FenceClient.updateFences(). Chame addFence() para cada limite a ser adicionado.

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

  • 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 restrição, que é uma string que identifica a restrição e mapeia para um par AwarenessFence-PendingIntent.

O exemplo de código a seguir mostra um método que chama updateFences() para registrar uma restrição:

    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. É possível usar quantos métodos PendingIntent forem necessários, mas é preferível usar um único PendingIntent para todos os callbacks de restrição. Se você usar uma chave de restrição 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.