J'ai eu le même problème: appeler registerForRemoteNotificationTypes:
invoqué ni application:didRegisterForRemoteNotificationsWithDeviceToken:
niapplication:didFailToRegisterForRemoteNotificationsWithError:
J'ai finalement résolu ce problème à l'aide de la note technique d'Apple TN2265 .
C'est ce que j'ai fait:
Tout d'abord, j'ai revérifié que je m'inscrivais bien aux notifications push , y compris la vérification de mon profil d'approvisionnement pour la clé "aps-environnement" et la signature du fichier .app lui-même. J'ai tout configuré correctement.
J'ai ensuite dû déboguer les messages d'état de notification push dans la console (vous devez installer le profil de provisionnement PersistentConnectionLogging.mobileconfig sur votre appareil et le redémarrer. Voir TN2265 sous «Observation des messages d'état push»). J'ai remarqué que le processus apns démarre une minuterie et calcule une date d'incendie minimale, ce qui m'a fait suspecter que le message de confirmation d'enregistrement Push-Notification, qui est normalement présenté à ce stade, est supprimé par APNS, comme indiqué dans TN2265:
Réinitialisation de l'alerte d'autorisations de notifications push sur iOS
La première fois qu'une application activée par push s'enregistre pour les notifications push, iOS demande à l'utilisateur s'il souhaite recevoir des notifications pour cette application. Une fois que l'utilisateur a répondu à cette alerte, elle n'est plus présentée à moins que l'appareil ne soit restauré ou que l'application n'ait été désinstallée pendant au moins un jour.
Si vous souhaitez simuler une première exécution de votre application, vous pouvez laisser l'application désinstallée pendant une journée. Vous pouvez réaliser ce dernier sans attendre réellement un jour en réglant l'horloge système d'un jour ou plus en avant, en éteignant complètement l'appareil, puis en le rallumant.
J'ai donc supprimé l'application de l'appareil, puis modifié manuellement la date de l'iPhone dans les paramètres, redémarré l'appareil et réinstallé l'application.
La prochaine fois que mon code a appelé registerForRemoteNotificationTypes
, il a reçu des rappels comme prévu.
Cela a résolu le problème pour moi. J'espère que cela aide.