Подтвердить что ты не робот

DidFailToRegisterForRemoteNotificationsWithError: пользователь отказался от ошибки?

Если пользователь отказывается от уведомлений о включении push, мы получим сообщение об ошибке через makeFailToRegisterForRemoteNotificationsWithError. Кто-нибудь знает, каким будет код в объекте NSError в этом случае (чтобы отличить его от, скажем, никакого соединения, доступного)?

4b9b3361

Ответ 1

Я не думаю, что ваш исходный оператор (всегда) имеет значение true. Если приложение правильно подписано с действительным профилем подготовки, вызов registerForRemoteNotificationTypes: приведет к application:didRegisterForRemoteNotificationsWithDeviceToken:, независимо от выбора уведомлений пользователя в приложении "Настройки". По моему опыту, единственный раз, когда я встречал application:didFailToRegisterForRemoteNotificationsWithError:, вызывался из-за неправильно подписанного приложения. В приведенной ошибке упоминается "нет действительного права доступа aps-environment, найденного для приложения".

Ответ 2

Хотя этот вопрос старый и согласен с большинством ответов @Jerred, я все равно думал о публикации обновленного ответа.

Ответ на главный вопрос в потоке: НЕТ.

приложение: didFailToRegisterForRemoteNotificationsWithError: вызывается, когда приложение подписывается с неправильным профилем подготовки.

Кроме того,

приложение: didRegisterForRemoteNotificationsWithDeviceToken: вызывается только тогда, когда пользователь включает по крайней мере один из значков, баннер/предупреждение или звук в центре уведомлений (в приложении "Настройки" ) для вашего приложения.

Существуют сценарии, в которых iOS не будет вызывать ни один из этих методов

  • Когда пользователь отказывается предоставить разрешения для приложения для отправки push-уведомлений
  • Если нет подключения к сети и предоставлены разрешения для отправки push-уведомлений.
  • Когда пользователь отключает push-уведомления для приложения из центра уведомлений в приложении "Настройки".

Ответ 3

По моему опыту, метод didFailToRegisterForRemoteNotificationsWithError: зарезервирован для более серьезных случаев, который препятствует тому, чтобы приложение даже отображало диалог запроса разрешения уведомлений пользователю. Случаи, о которых я знаю, включают приложение, запущенное на устройствах, которые не поддерживают push-уведомления (например, Simulator) или некоторая неправильная конфигурация в разрешении aps-environment в бинарном приложении.