iOS выполняет проверку до получения уведомления о начале
Я пишу приложение, в котором используется служба Push Notification от Apple. Некоторые из push-уведомлений основаны на местоположении пользователей и должны поставляться только в том случае, если пользователь находится на некотором расстоянии от объекта. Я не хочу постоянно обновлять позицию пользователя на моем сервере и выполнять проверку таким образом, во-первых, из соображений безопасности и, во-вторых, сократить использование сети. Есть ли способ, когда push-уведомление получено устройством, чтобы выполнить проверку до того, как пользователь будет уведомлен, и если он не соответствует критериям, отмените уведомление? Спасибо за помощь!
- Rich Push Notification - видео не будет воспроизводиться в расширении содержимого уведомлений
- Как получить регистрацию от Azure notificationhub в iOS
- Как читать push-уведомления из других приложений в iOS
- вопросы о локальных и push-уведомлениях на ios
- application: handleActionWithIdentifier: не вызывается
- OneSignal измененный контент iOS 10
- доступ к уведомлениям APNS в тестировании UIAutomation iOS
- Как проверить, зарегистрировано ли приложение с удаленным уведомлением?
Нет, к сожалению, вы не можете выполнить какой-либо код на стороне клиента, не нажимая на уведомление, когда приложение не запускается. Вам нужно будет сделать свою проверку на стороне сервера, чтобы решить, не направить ли нажатие.
Push-уведомления, полученные, когда приложение не работает (наиболее типичный случай), находятся вне вашего контроля. Как только они будут отправлены, они будут получены и показаны пользователю (при условии, что пользователь предоставил разрешения)
У вас есть контроль над push-уведомлениями, если они получены во время работы вашего приложения.
Возможно, вы могли бы использовать локальные уведомления (уведомления, которые сгенерированы и получены с пользовательского устройства). У вас будет полный контроль над их созданием.
Имейте в виду, что фоновая обработка в приложениях запрещена, за исключением 4 вещей
- Отслеживание местоположения (вы можете подписаться на код запуска, когда пользователь меняет геолокацию)
- сигнализация
- Воспроизведение музыки
- Передача голоса по IP
Ничто из них не может быть выполнено в фоновом режиме.
Начиная с iOS7, ваш код может быть запущен, я цитирую, «примерно в то же время, когда пользователь видит уведомление»:
Усовершенствования многозадачности
Приложения, использующие push-уведомления для уведомления пользователя о том, что новый контент доступен, могут получать контент в фоновом режиме. Для поддержки этого режима включите ключ UIBackgroundModes со значением удаленного уведомления в файле Info.plist вашего приложения. Вы также должны реализовать приложение: didReceiveRemoteNotification: fetchCompletionHandler: метод в вашем делете приложения.
Подробнее см. Здесь:
и здесь:
Я еще не пробовал это, но мне интересно, отправляете ли вы полезную нагрузку push-уведомления, которая не имеет стандартных значений «alert», «badge» в «apns», но в пользовательском значении она все равно будет вызывать ваш код, но без отображение push-уведомления.