Если фоновые приложения не могут запускаться автоматически, как Cardcase запускается при изменении местоположения? - PullRequest
2 голосов
/ 30 декабря 2011

Приложение Cardcase позволяет узнать, заходите ли вы в магазин, с которым у вас ранее были отношения (если вы создали там вкладку для платежей и т. Д.).

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

Отредактировано для уточнения моего вопроса: я не спрашиваю, как отслеживать изменения местоположения или как отслеживать изменения местоположения в фоновом режиме. Мой вопрос: если пользователь установит это приложение, затем добавит несколько вкладок для некоторых местоположений, а затем перезагрузит свой iPhone, то как это приложение может впоследствии уведомлять их, когда они приближаются к местоположению, если запуск приложения при загрузке не поддерживается?

Должно ли это приложение (и вообще любое другое приложение) зависеть от того, запускается ли оно пользователем явно после каждой перезагрузки устройства?

Ответы [ 2 ]

4 голосов
/ 30 декабря 2011

Вы можете сделать это с помощью мониторинга региона.В CLLocationManager вы регистрируете регионы, которые хотели бы отслеживать с помощью этого метода:

- (void)startMonitoringForRegion:(CLRegion *)region desiredAccuracy:(CLLocationAccuracy)accuracy

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

Из документов Apple :

Если вы начинаете мониторинг региона и ваше приложение впоследствии закрывается, система автоматически перезапускает его в фоновом режиме, если граница регионапересекаетсяВ таком случае словарь опций, передаваемый приложению: didFinishLaunchingWithOptions: метод вашего делегата приложения содержит ключ UIApplicationLaunchOptionsLocationKey, чтобы указать, что ваше приложение было запущено из-за события, связанного с расположением.Кроме того, создание нового менеджера местоположений и назначение делегата приводит к доставке сообщений соответствующего региона.

РЕДАКТИРОВАТЬ

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

Надеюсь, это поможет.

0 голосов
/ 04 июля 2012

Это работает для приложений гео-фехтования (приложений, использующих startMonitoringForRegion).

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

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

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

...