Сброс настроек push-уведомлений для приложения - PullRequest
168 голосов
/ 13 марта 2010

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

Диалог (инициируемый registerForRemoteNotificationTypes), однако, появляется только один раз для приложения. Как мне сбросить память iPhone OS моего приложения. Удаление приложения и переустановка не помогают.

Ответы [ 13 ]

2 голосов
/ 22 мая 2012

В Apple Tech Note также описано, что вы можете восстановить устройство, чтобы сбросить диалоговое окно push-уведомлений.

Это не означает, что вы также можете использовать опцию «Общие -> Сброс -> Стереть все содержимое и настройки» на самом устройстве (iOS 5.x).

1 голос
/ 21 августа 2013

В дополнение к ответу Ианолито.

У меня возникла та же проблема с приложением, которое я скачал год назад, и изначально отказывалось от push-уведомлений. Теперь, желая получить push-уведомления, эти шаги работали для меня на iOS 7 beta. Не уверен, какие именно точки вызвали его.

  • Закройте и удалите приложение.
  • Перейдите в настройки iCloud и удалите приложение из iCloud. Сделайте это на всех других устройствах, на которых включено резервное копирование iCloud для приложений. После деактивации и удаления сделайте новую резервную копию. Приложение не должно быть указано в списке резервных копий. (Возможно, поэтому Техническая записка от Apple, описанная ianolito, перестала работать в iOS 5, так как iCloud был представлен в iOS 5, и во многих включено резервное копирование iCloud для приложений.)
  • Перейдите к настройкам времени и установите время более чем на 1 месяц вперед.
  • Выключить iPhone (без сброса).
  • Подождите, включите его снова и снова загрузите приложение.
  • Запустите приложение, и мне снова будет показано диалоговое окно.
  • Снова включите резервное копирование приложения, поскольку оно все еще деактивировано. Исправьте время.

Слава богу, мне не нужно было «Стереть все содержимое и настройки». Может быть, это кому-нибудь поможет.

0 голосов
/ 23 мая 2017

После нескольких часов поиска, и без удачи с предложениями, приведенными выше, это сработало как прелесть 3.x +

override func viewDidLoad() {
        super.viewDidLoad()


            requestAuthorization()

}

func requestAuthorization() {

        if #available(iOS 10.0, *) {

            UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
                print("Access granted: \(granted.description)")
            }

        } else {
            // Fallback on earlier versions
        }

    }
...