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

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

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

Для регистрации ограждения используйте FenceClient , а для создания FenceUpdateRequestFenceClient.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);
         }
     });

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