Как периодически получать CoreDocation didDetermineState срабатывает - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь выяснить, находится ли пользователь рядом с iBeacon на iOS. Для этого я использую CoreLocation.

Когда пользователь входит в регион, запускается didEnterRegion, а затем didDetermineState. Когда пользователь покидает регион, запускается didExitRegion (возможно, с некоторой задержкой), а затем didDetermineState. Я даже обнаружил флаг в CLBeaconRegion, который запускает didDetermineState, когда дисплей включен.

Пока это работает нормально. Тем не менее, я бы хотел время от времени получать вызов didDetermineState. Это не должно быть частым, каждый час или два были бы совершенно нормальными, и я не возражал бы, что это не был точно такой же интервал, если он гарантированно сработает через пару часов.

Я знаю, что могу запросить вызов didDetermineState, позвонив по номеру requestStateForRegion, но для этого необходимо запустить приложение.

Я хочу выделить следующие случаи:

  1. Пользователь вошел в регион и остается там в течение нескольких часов / дней / недель / месяцев / лет / десятилетий с включенным телефоном
  2. Пользователь вошел в регион, исчерпалБатарея (или отключенный Bluetooth) и может или не может остаться в какой-то момент

Если обновление было гарантировано каждые один или два часа, я мог бы быть уверен, что 2. это случай, если обновление несрабатывает после этого периода.

Решения, о которых я думал до сих пор:

  • , чтобы отправлять (беззвучный) пуш на устройство каждый час и вызывать приложение requestStateForRegion inфон. Но, похоже, не гарантировано получить фоновое время. Кроме того, он имеет недостаток, заключающийся в том, что устройству требуется активное подключение к Интернету.
  • для отправки (не тихого) нажатия на устройство, зная, что оно включит дисплей и, следовательно, вызовет обновление. Но получение видимого толчка все время раздражает, и опять же требуется подключение к Интернету.

Есть ли какой-либо другой способ вызвать requestStateForRegion для фонового / приостановленного приложения время от времени?

...