Я сам разбирался в этом.
Если вы можете организовать push-уведомление из своего бэкэнда («Тихое push-уведомление», также известное как «контент-доступный»), это будет хорошим вариантом. В реальных ситуациях это, кажется, дает вам лучший контроль над временем. К сожалению, это не сработает, если у человека нет связи. Кроме того, к сожалению, вам нужен бэкэнд, который может ставить события в очередь за раз (а не только в ответ на ввод). Если у вас уже есть такой бэкэнд, и ваше приложение полезно для пользователя только тогда, когда они в любом случае имеют покрытие сети, это наверное лучший вариант. Кажется, это подходящее использование технологии, поэтому Apple должна одобрить.
Другой вариант, который я пытаюсь - использовать фоновую выборку. Вы указываете «минимальный интервал», чтобы избежать чрезмерной выборки. Попробуйте как минимум 50% оставшегося времени до мероприятия. Каждый раз, когда приложение просыпается (будь то на переднем плане, потому что пользователь открыл его, или в фоновом режиме, потому что его открывает background-fetch), вы можете рассчитать время до следующего события, обновить интервал выборки или запустить мониторинг региона. . Предполагается, что вы должны использовать «фоновую выборку» для получения информации с сервера, но, похоже, нет никаких требований для опроса сервера, вместо этого вы можете опросить свои внутренние данные. Я еще не тестировал это полностью, но это кажется многообещающим.
Вы можете использовать мониторинг значительных изменений местоположения, который, как я читал, будет активировать ваше приложение на короткое время каждые 15 минут или меньше, и вы можете использовать информацию о времени / местоположении, чтобы решить, включать ли геозону. Я думаю, что это будет хорошо работать в сочетании с вышеупомянутой «фоновой выборкой»: за много часов или дней до события вы полагаетесь на фоновую выборку, которую затем используете для включения мониторинга значительных изменений местоположения за несколько часов до события. (Есть предположение, что геозона на самом деле более экономична, чем мониторинг значительных изменений, но вы можете предположить, что другие приложения на устройстве пользователя уже будут следить за значительными изменениями, и в этом случае предельная стоимость вашего приложения добавляется в список должно быть минимальным.)
Собрав их все вместе, вы можете создать последовательность
background fetch -> significant location monitoring -> geofencing
по мере приближения времени.
Существует также функция мониторинга CLVisit, она не очень хорошо изучена, но предположительно потребляет меньше энергии и вызывается реже, чем мониторинг значительного изменения местоположения. Если фоновая выборка или тихие удаленные уведомления не помогают разбудить ваше приложение, попробуйте и сообщите об этом!
Вы не можете (пока) сделать тихое локальное уведомление о доступном содержимом (AFAICT). Однако, возможно, вы можете запланировать локальное уведомление «Ваше мероприятие начнется завтра» или что-то, что убеждает пользователя выбрать параметр, запускающий геозону. Вот руководство по нему http://www.appcoda.com/local-notifications-ios8/, ответ действия может быть UIUserNotificationActivationMode.Background, чтобы ваша геозона могла активироваться (если пользователь отвечает на уведомление), не выводя приложение на передний план.
Прошло от 5 до 6 недель с тех пор, как вы спросили, у вас уже есть собственный ответ? Пожалуйста, дай мне знать.
person
music_and_cities
schedule
18.01.2016