У мене була та сама проблема: дзвінок registerForRemoteNotificationTypes:не викликався ні, application:didRegisterForRemoteNotificationsWithDeviceToken:ніapplication:didFailToRegisterForRemoteNotificationsWithError:
Врешті-решт я вирішив це питання за допомогою технічної записки Apple TN2265 .
Це те, що я зробив:
По-перше, я ще раз перевірив, чи справді я правильно реєструюсь для push-сповіщень , включаючи перевірку свого профілю підготовки для ключа "aps-environment" та кодового підписання самого файлу .app. Я все це правильно налаштував.
Потім мені довелося налагоджувати повідомлення про стан push-сповіщень у консолі (вам потрібно встановити на вашому пристрої профіль забезпечення PersistentConnectionLogging.mobileconfig і перезавантажити його. Див. TN2265 у розділі "Спостереження повідомлень про статус push"). Я помітив, що процес apns запускає таймер і обчислює мінімальну дату спрацьовування, що змусило мене запідозрити, що повідомлення про підтвердження реєстрації Push-Notification, яке зазвичай представлене в цей момент, пригнічується APNS, як зазначено в TN2265:
Скидання сповіщення про дозволи push-сповіщень на iOS
Перший раз, коли додаток із підтримкою push-реєстрації реєструється для push-сповіщень, iOS запитує користувача, чи бажає він отримувати сповіщення для цієї програми. Після того, як користувач відповів на це сповіщення, воно більше не відображається, якщо пристрій не відновлено або програму не видалено принаймні протягом доби.
Якщо ви хочете змоделювати перший запуск програми, ви можете залишити програму невстановленою на день. Ви можете досягти останнього, фактично не чекаючи доби, встановивши системний годинник вперед на день або більше, повністю вимкнувши пристрій, а потім знову ввімкнувши пристрій.
Отже, я видалив програму з пристрою, а потім вручну змінив дату iPhone у Налаштуваннях, перезавантажив пристрій та заново встановив програму.
Наступного разу, коли мій код зателефонував registerForRemoteNotificationTypes, він отримав зворотні дзвінки, як очікувалося.
Це вирішило проблему для мене. Сподіваюся, це допоможе.