iOS выполняет проверку до получения уведомления о начале

Я пишу приложение, в котором используется служба Push Notification от Apple. Некоторые из push-уведомлений основаны на местоположении пользователей и должны поставляться только в том случае, если пользователь находится на некотором расстоянии от объекта. Я не хочу постоянно обновлять позицию пользователя на моем сервере и выполнять проверку таким образом, во-первых, из соображений безопасности и, во-вторых, сократить использование сети. Есть ли способ, когда push-уведомление получено устройством, чтобы выполнить проверку до того, как пользователь будет уведомлен, и если он не соответствует критериям, отмените уведомление? Спасибо за помощь!

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

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

У вас есть контроль над push-уведомлениями, если они получены во время работы вашего приложения.

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

Имейте в виду, что фоновая обработка в приложениях запрещена, за исключением 4 вещей

  1. Отслеживание местоположения (вы можете подписаться на код запуска, когда пользователь меняет геолокацию)
  2. сигнализация
  3. Воспроизведение музыки
  4. Передача голоса по IP

Ничто из них не может быть выполнено в фоновом режиме.

Начиная с iOS7, ваш код может быть запущен, я цитирую, «примерно в то же время, когда пользователь видит уведомление»:

Усовершенствования многозадачности

Приложения, использующие push-уведомления для уведомления пользователя о том, что новый контент доступен, могут получать контент в фоновом режиме. Для поддержки этого режима включите ключ UIBackgroundModes со значением удаленного уведомления в файле Info.plist вашего приложения. Вы также должны реализовать приложение: didReceiveRemoteNotification: fetchCompletionHandler: метод в вашем делете приложения.

Подробнее см. Здесь:

https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS7.html#//apple_ref/doc/uid/TP40013162-SW10

и здесь:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4-SW57

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

  • iOS push-уведомление не работает над созданием магазина приложений, где работает над тестовым нажатием
  • IOS удаленное push-уведомление не работает IOS9, где работает полнофункциональный IOS10
  • Поток Apple APNS с незарегистрированными устройствами
  • didRegisterForRemoteNotificationsWithDeviceToken не получает вызов на ios 10
  • iOS - ошибка с ошибкой подписи кода (0xE8008016) - push-уведомления
  • Невозможно заставить JavaPNS работать для Push-уведомлений
  • API IOS 10, APNS и Binary Provider API
  • Звук уведомлений iOS не отменяется при открытии
  • Push-уведомления отправляются в другое приложение
  • После загрузки новой сборки в iTunes у меня возникла проблема с выпуском push-уведомления
  • Уведомления iOS Push не отправляются на производство
  • Давайте будем гением компьютера.