Eu tive o mesmo problema: chamar registerForRemoteNotificationTypes:
não invocado application:didRegisterForRemoteNotificationsWithDeviceToken:
nemapplication:didFailToRegisterForRemoteNotificationsWithError:
Acabei resolvendo esse problema com a ajuda da nota técnica TN2265 da Apple .
Isso é o que eu fiz:
Em primeiro lugar, verifiquei duas vezes se estou realmente me registrando corretamente para notificações push , incluindo a verificação do meu perfil de provisionamento para a chave "aps-environment" e a assinatura de código do próprio arquivo .app. Eu tinha tudo configurado corretamente.
Em seguida, tive que depurar as mensagens de status de notificação por push no console (você precisa instalar o perfil de provisionamento PersistentConnectionLogging.mobileconfig em seu dispositivo e reiniciá-lo. Consulte TN2265 em "Observando mensagens de status por push"). Percebi que o processo apns inicia um cronômetro e calcula uma data mínima de disparo, o que me fez suspeitar que a mensagem de confirmação de registro do Push-Notification, que normalmente é apresentada neste ponto, foi suprimida pelo APNS, conforme indicado em TN2265:
Redefinindo o alerta de permissões de notificações push no iOS
Na primeira vez que um aplicativo habilitado para push se registra para notificações push, o iOS pergunta ao usuário se deseja receber notificações para esse aplicativo. Depois que o usuário responde a este alerta, ele não é apresentado novamente, a menos que o dispositivo seja restaurado ou o aplicativo tenha sido desinstalado por pelo menos um dia.
Se você deseja simular a primeira execução de seu aplicativo, pode deixá-lo desinstalado por um dia. Você pode conseguir o último sem realmente esperar um dia, ajustando o relógio do sistema um dia ou mais, desligando o dispositivo completamente e, em seguida, ligando-o novamente.
Então, removi o aplicativo do dispositivo, alterei manualmente a data do iPhone em Ajustes, reiniciei o dispositivo e reinstalei o aplicativo.
Na próxima vez que meu código foi chamado registerForRemoteNotificationTypes
, ele recebeu retornos de chamada conforme o esperado.
Isso resolveu o problema para mim. Espero que ajude.