Вызов приложения iOS, когда ibeacon находится в пределах досягаемости

У меня есть приложение iOS (на iphone), которое запускается, когда ibeacon (сервер) находится в пределах досягаемости. Он работает нормально, пока приложение работает в фоновом или переднем плане.

Есть ли способ вызвать приложение, когда оно не работает и обнаруживает ibeacon?

Что я понял, прочитав Справочник по классам CLLocationManager от Apple, так это то, что такая функциональность возможна, но я могу ошибаться.

Однако, если кто-то знает, как этого можно добиться, приветствуется краткий пример.

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

Спасибо!


person Radium    schedule 21.11.2013    source источник


Ответы (4)


Я задаю этот вопрос уже несколько недель, и ответ - нет.

Apple совершенно ясно выразилась на форумах разработчиков по этому поводу:

«Обратите внимание, я говорю о том, что пользователь явно убивает приложение в переключателе приложений. В этот момент пользователь сказал нам, что это приложение не должно запускаться, и мы учтем это, не запуская приложение повторно. больше. Если приложение будет завершено ОС (например, из-за нехватки памяти), мы продолжим запускать приложение для мониторинга региона. Надеюсь, это немного прояснит ситуацию.

И если приложение просто приостановлено (т. е. пользователь нажимает кнопку «Домой», чтобы выйти из приложения), тогда да, мы продолжим возобновлять работу приложения при входе в регионы или выходе из них. Единственное изменение в iOS 7 заключается в том, что пользователь явно убивает приложение в переключателе приложений».

https://devforums.apple.com/message/886796#886796

person BEEKn    schedule 21.11.2013
comment
Начиная с iOS7.1, приложения по-прежнему будут запускаться по событию iBeacon, даже если приложение будет уничтожено пользователем. - person danielbeard; 23.04.2014

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

Подробное доказательство находится в моем сообщении в блоге здесь: http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

person davidgyoung    schedule 22.11.2013
comment
Привет, Дэвид. Конечно, ты прав, твое приложение может работать в фоновом режиме. Но он НЕ будет варьироваться, если пользователь явно полностью закрыл приложение. Одним из интересных способов справиться с этим может быть использование Passbook: насколько я понимаю, это единственное приложение, которое выводит ваш телефон из «закрытого» состояния. - person BEEKn; 23.11.2013
comment
Понятно, но это более конкретный вариант использования, чем указано в вопросе. Если вы запустите приложение хотя бы один раз для настройки региона мониторинга iBeacon, а затем перезагрузите телефон (убедившись, что ваше приложение не работает в фоновом режиме, как задается вопрос), iOS запустит приложение в фоновом режиме при изменении региона. Это можно продемонстрировать на моем примере приложения в сообщении блога, указанном выше, что в основном и является тем, что задает вопрос. - person davidgyoung; 23.11.2013
comment
Начиная с iOS 7.1 это изменилось. Я могу убить приложение из переключателя приложений, и iBeacon разбудит приложение, после чего я смогу успешно его ранжировать. Это работает, даже если я перезагружу устройство. - person danielbeard; 23.04.2014

Важно отметить, что начиная с iOS 7.1+, даже если пользователь явно принудительно завершает работу приложения, если в этот момент он отслеживал области маяков, приложение будет запущено снова и сможет работать в фоновом режиме в течение короткого времени. промежуток времени.

person Mike    schedule 28.08.2014
comment
Вы знаете, как долго длится этот короткий период времени? И что вам разрешено делать в это время? - person Jonathan; 13.02.2015
comment
Насколько я знаю, это время ок. 5 секунд. - person Mike; 14.02.2015
comment
Вы знаете, можем ли мы делать то, что делаем? Как запись файла в журнал? - person Jonathan; 14.02.2015
comment
Я сделал все, от отправки быстрого запроса к серверу, до определения ближайших маяков, журналов и т. Д. Пока вы знаете, что у вас есть только короткое время и вы можете закончить то, что вы делаете, я не думаю, что есть какие-то ограничения на то, что вы можете сделать за эти ~ 5 секунд.. - person Mike; 15.02.2015

Я бы порекомендовал вам прочитать все о фоновой обработке в iOS. Насколько я понимаю, это зависит как от того, сколько пользователь запускает приложение, так и от системных ресурсов. Насколько я понимаю, ОС адаптируется к использованию приложений и распределяет все процессы для поддержки использования приложений. Сомневаюсь, что это вырезано и высушено.

Для загрузки контента рекомендуются push-сообщения, чтобы время от времени запускать обновления. Я не удивлюсь, если push, возможно, придется отправить сообщение или два, чтобы «перерегистрировать», как это было.

person John Stack    schedule 27.10.2014