зарегистрировать устройство для push-уведомления при первом запуске

#iphone #objective-c #ios #push #apple-push-notifications

#iPhone #objective-c #iOS #толкать #apple-push-уведомления

Вопрос:

При самом первом запуске push-приложения пользователя спрашивают, хочет ли он разрешить push-уведомления.

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

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

при следующем запуске эта информация обновляется, но до тех пор, пока пользователь не перезапустит приложение (что может занять много времени во времена многозадачности), я не могу отправить этому человеку push-сообщение.

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

спасибо за все подсказки!

Ответ №1:

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

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

Комментарии:

1. Думаю, я понимаю, почему Apple отправила это сообщение в первую очередь, но не могли бы вы дать представление о том, как это сделать правильно?

2. я добавляю эти значения на свой сервер, потому что я не хочу отправлять уведомления пользователям, которые отключили все уведомления.

3. Если пользователь отключает уведомления, служба обратной связи должна сообщить вам (а если нет, я бы не стал беспокоиться об этом). Вы также можете периодически повторять регистрацию несколько раз при запуске (если уведомления не включены) или когда ваше приложение находится на переднем плане. Возможно, вам даже не потребуется повторная регистрация; возможно, enabledRemoteNotificationTypes вносит изменения (и, возможно, вы можете наблюдать это с помощью KVO, если он не отправляет уведомление).