Как правильно обрабатывать контролируемые сотни регионов? - PullRequest
1 голос
/ 03 ноября 2011

Мне нужно контролировать ~ 400 регионов по всему миру (некоторые места в столицах с радиусом 1-3 км).Тем не менее, существует ограничение на количество отслеживаемых областей на приложение, поэтому я не могу зарегистрировать их все при запуске.В документах Apple нет конкретного максимального числа регионов, но некоторые говорят, что безопасное максимальное количество регионов составляет 10 регионов ( здесь ).

Состояние документов Apple "Чтобы обойти эти ограничения,вам следует рассмотреть возможность регистрации только тех регионов, которые находятся в непосредственной близости от пользователя. По мере изменения местоположения пользователя вы можете удалить области, которые теперь находятся дальше, и добавить области, идущие по пути пользователя ".Итак, вопрос в том, как и когда управлять этими регионами?

Основными обратными вызовами являются didEnterRegion и didExitRegion при использовании мониторинга региона.Поэтому в начале я думал, что каждый раз, когда пользователь будет входить в какой-либо регион, я получу уведомление, в котором я могу удалить старые регионы, найти соответствующие ближайшие 10 регионов и зарегистрировать их.Но проблема будет возникать в тех случаях, когда пользователь не войдет в ближайший регион, а будет двигаться дальше от него (например, полететь самолетом из какого-то места в противоположное место планеты), и я никогда не получу изменения вобновите список отслеживаемых регионов, потому что didEnterRegion никогда не будет вызываться.

Чтобы обойти эту проблему, я думаю добавить мониторинг значительных изменений, потому что я должен получать обратные вызовы (уведомления) каждый раз, когда меняется одна из треугольных вышек сотовой связи.Таким образом, я мог бы использовать эти уведомления для обновления списка контролируемых регионов довольно часто.Вот и все, что вы думаете по этому поводу?

1 Ответ

3 голосов
/ 03 ноября 2011

Первая мысль, которая приходит на ум, состоит в том, что если у вас есть десять регионов для работы, то вы действительно хотите установить уведомления для 9 ближайших областей интереса, а затем один регион, который не является действительным регионом, а мета -область вокруг текущего местоположения. Таким образом, вы, скорее всего, получите обратный вызов didExitRegion, когда пользователь уходит из текущего местоположения. В этот момент вы отменяете регистрацию во всех 10 регионах и повторяете процесс. (т.е. перерегистрировать 9 + мета-регион на основе нового текущего местоположения.)

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

Еще один вариант, хотя, возможно, и неодобрительный, заключается в том, чтобы сообщить ОС, что ваше приложение является приложением VOIP. Это позволяет вам регистрироваться для периодических пробуждений. Вы можете использовать их для обновления ваших регионов. Я не знаю, в какой степени Apple проверяет использование этой возможности, но стоит попробовать.

...