Можно ли использовать push-уведомления для запуска кода без уведомления Пользователя?
У меня есть приложение, которое должно взаимодействовать с сервером (чтобы обновить его данные) каждые 24 часа. Это должно произойти, даже если приложение не открыто, ни в фоновом режиме.
В идеале мне бы хотелось:
- каждые 24 часа мой сервер отправляет push-уведомление на iPad
- это пробуждает приложение и запускает код, необходимый для обновления данных
- уведомление затем отбрасывается
Возможно ли что-либо из этого?
Это приложение только проснулось После того, как пользователь нажмет на уведомление? Или я могу запустить некоторый код, прежде чем показывать уведомление?
Могу ли я вообще отказаться от уведомления?
Если Push-уведомления не являются правильным способом сделать это, то что же???
Спасибо, ребята!
4 ответа:
С выпуском iOS 7 это, наконец, возможно с помощью удаленных / беззвучных уведомлений. Они работают так же, как и Push-уведомления, но вместо немедленного оповещения пользователя они могут запускать фоновый режим выборки и загружать/загружать новое содержимое.
Вот простой учебник: http://www.objc.io/issue-5/multitasking.html
Это возможно только в том случае, если ваше приложение является приложением газетного киоска, если это так, вы можете отправлять push-уведомление с помощью
content-available: true
один раз в 24 часа.Если это не приложение для газетных киосков, вы можете вместо этого использовать GPS-ограждения для запуска кода. Разрешается разрешить пользователю устанавливать GPS-ограждения, если они хотят, чтобы приложение обновлялось, когда пользователь приближается к определенной области (т. е. их дом / работа). Это разбудит приложение,и вы сможете запустить фоновую загрузку. Instapaper, например, делает это.
Если период всегда будет составлять 24 часа, Вы можете использовать локальные уведомления вместо push-уведомлений.
Ваше приложение не сможет выполнить ни одного кода, если пользователь не откроет push-уведомление, push-уведомления обрабатываются ОС, и ваше приложение не имеет никакого контроля над ними, пока оно не активировано или в фоновом режиме вы должны взглянуть на руководство по программированию push-уведомлений
Альтернативный способ выполнить то, что вы пытаетесь сделать, - это получить данные. с сервера каждый раз, когда приложение запускается и последнее обновление произошло на 24 часа раньше,
- при каждом обращении к серверу сохраняйте дату в NSUserDefault
- каждый раз, когда пользователь открывает приложение, проверьте, произошел ли последний контакт с сервером до 24 часов, а затем обновите данные