Ho avuto lo stesso problema: la chiamata registerForRemoteNotificationTypes:non è stata invocata néapplication:didRegisterForRemoteNotificationsWithDeviceToken: néapplication:didFailToRegisterForRemoteNotificationsWithError:
Alla fine ho risolto questo problema con l'aiuto della nota tecnica di Apple TN2265 .
Questo è quello che ho fatto:
Prima di tutto, ho ricontrollato che mi sto effettivamente registrando correttamente per le notifiche push , inclusa la verifica del mio profilo di provisioning per la chiave "aps-environment" e la firma del codice del file .app stesso. Avevo impostato tutto correttamente.
Ho quindi dovuto eseguire il debug dei messaggi di stato delle notifiche push nella console (è necessario installare il profilo di provisioning PersistentConnectionLogging.mobileconfig sul dispositivo e riavviarlo. Vedere TN2265 in "Osservazione dei messaggi di stato push"). Ho notato che il processo di apns avvia un timer e calcola una data minima di attivazione, il che mi ha fatto sospettare che il messaggio di conferma della registrazione della notifica push, che normalmente viene presentato a questo punto, sia soppresso da APNS, come indicato in TN2265:
Reimpostazione dell'avviso sulle autorizzazioni per le notifiche push su iOS
La prima volta che un'app abilitata per il push si registra per le notifiche push, iOS chiede all'utente se desidera ricevere notifiche per quell'app. Una volta che l'utente ha risposto a questo avviso, questo non viene presentato di nuovo a meno che il dispositivo non venga ripristinato o l'app non sia stata disinstallata da almeno un giorno.
Se desideri simulare la prima esecuzione della tua app, puoi lasciare l'app disinstallata per un giorno. È possibile ottenere quest'ultimo senza attendere effettivamente un giorno impostando l'orologio di sistema in avanti di un giorno o più, spegnendo completamente il dispositivo, quindi riaccendendolo.
Quindi, ho rimosso l'app dal dispositivo, quindi ho modificato manualmente la data dell'iPhone in Impostazioni, riavviato il dispositivo e reinstallato l'app.
La prossima volta che il mio codice ha chiamato registerForRemoteNotificationTypes, ha ricevuto le richiamate come previsto.
Questo ha risolto il problema per me. Spero che sia d'aiuto.