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

Ваше приложение получает обратный вызов от 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);
         }
     });

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