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

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

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

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

Для регистрации и отмены регистрации забора необходимы:

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

В следующем примере кода показан метод, который вызывает 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);
         }
     });

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