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