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