Ваше приложение получает обратный вызов от 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);
}
});
Следующий шаг: управление обратными вызовами забора .