Зарегистрировать забор

Ваше приложение получает обратный вызов от PendingIntent всякий раз, когда состояние ограждения меняется. Ваше приложение должно зарегистрировать каждое ограждение, прежде чем его можно будет использовать.

Зарегистрировать забор

Для регистрации ограждения используйте FenceClient , а для создания FenceUpdateRequest используйте FenceClient.updateFences() . Вызывайте addFence() для каждого добавляемого ограждения.

Для регистрации и отмены регистрации ограждения необходимо следующее:

  • Экземпляр клиента API сервисов Google Play .
  • Экземпляр AwarenessFence , который представляет собой само ограждение.
  • PendingIntent для обработки изменений состояния.
  • Ключ ограждения, представляющий собой строку, идентифицирующую ограждение и сопоставляющую его с парой AwarenessFence - PendingIntent .

В следующем примере кода показан метод, который вызывает updateFences() для регистрации ограждения:

    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);
            }
        });

Чтобы создать несколько ограждений с уникальными ключами ограждения, вызовите addFence() несколько раз. Вы можете использовать столько методов PendingIntent , сколько вам нужно, но предпочтительнее использовать один PendingIntent для всех обратных вызовов ограждения. Если вы используете ключ ограждения, который уже был зарегистрирован для вызова addFence() , значения AwarenessFence и PendingIntent перезаписываются для этого ключа.

Отменить регистрацию забора

Чтобы отменить регистрацию ограждения, вызовите getFenceClient().updateFences() и используйте FenceUpdateRequest.Builder() для создания запроса на обновление ограждения. Затем вызовите removeFence() , как показано в следующем примере:

 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);
         }
     });

Следующий шаг: управление обратными вызовами Fence .