Tuve el mismo problema: la llamada registerForRemoteNotificationTypes:no se invocó application:didRegisterForRemoteNotificationsWithDeviceToken:niapplication:didFailToRegisterForRemoteNotificationsWithError:
Finalmente resolví este problema con la ayuda de la nota técnica TN2265 de Apple .
Esto es lo que hice:
En primer lugar, verifiqué dos veces que de hecho me estoy registrando correctamente para las notificaciones push , incluida la verificación de mi perfil de aprovisionamiento para la clave "aps-environment" y la firma de código del archivo .app en sí. Lo tenía todo configurado correctamente.
Luego tuve que depurar los mensajes de estado de notificaciones push en la consola (necesita instalar el perfil de aprovisionamiento PersistentConnectionLogging.mobileconfig en su dispositivo y reiniciarlo. Consulte TN2265 en "Observación de mensajes de estado push"). Noté que el proceso apns inicia un temporizador y calcula una fecha de disparo mínima, lo que me hizo sospechar que el mensaje de confirmación de registro de notificación push, que normalmente se presenta en este punto, está suprimido por APNS, como se indica en TN2265:
Restablecimiento de la alerta de permisos de notificaciones push en iOS
La primera vez que una aplicación habilitada para push se registra para recibir notificaciones push, iOS le pregunta al usuario si desea recibir notificaciones para esa aplicación. Una vez que el usuario ha respondido a esta alerta, no se vuelve a presentar a menos que el dispositivo se restaure o la aplicación se haya desinstalado durante al menos un día.
Si desea simular una primera ejecución de su aplicación, puede dejar la aplicación desinstalada durante un día. Puede lograr lo último sin esperar un día realmente adelantando el reloj del sistema un día o más, apagando el dispositivo por completo y luego volviendo a encenderlo.
Entonces, eliminé la aplicación del dispositivo, luego cambié manualmente la fecha del iPhone en Configuración, reinicié el dispositivo y reinstalé la aplicación.
La próxima vez que mi código llamó registerForRemoteNotificationTypes, recibió devoluciones de llamada como se esperaba.
Esto me resolvió el problema. Espero eso ayude.