Miałem ten sam problem: wywołanie registerForRemoteNotificationTypes:nie wywołało ani application:didRegisterForRemoteNotificationsWithDeviceToken:aniapplication:didFailToRegisterForRemoteNotificationsWithError:
Ostatecznie rozwiązałem ten problem za pomocą notatki technicznej Apple TN2265 .
Oto co zrobiłem:
Po pierwsze, dwukrotnie sprawdziłem, czy faktycznie rejestruję się poprawnie w celu korzystania z powiadomień push , w tym zweryfikowałem mój profil obsługi administracyjnej dla klucza „aps-environment” i kodowanie samego pliku .app. Miałem to wszystko poprawnie skonfigurowane.
Następnie musiałem zdebugować komunikaty o stanie powiadomień push w konsoli (musisz zainstalować profil informacyjny PersistentConnectionLogging.mobileconfig na swoim urządzeniu i ponownie go uruchomić. Zobacz TN2265 w sekcji „Obserwowanie komunikatów o stanie push”). Zauważyłem, że proces apns uruchamia licznik czasu i oblicza minimalną datę odpalenia, co skłoniło mnie do podejrzenia, że komunikat potwierdzenia rejestracji Push-Notification, który jest zwykle wyświetlany w tym miejscu, jest tłumiony przez APNS, jak wskazano w TN2265:
Resetowanie alertu dotyczącego uprawnień do powiadomień push w systemie iOS
Gdy aplikacja obsługująca funkcję push po raz pierwszy rejestruje się w celu otrzymywania powiadomień push, system iOS zapyta użytkownika, czy chce otrzymywać powiadomienia dotyczące tej aplikacji. Gdy użytkownik zareaguje na to ostrzeżenie, nie zostanie on ponownie wyświetlony, chyba że urządzenie zostanie przywrócone lub aplikacja zostanie odinstalowana przez co najmniej jeden dzień.
Jeśli chcesz zasymulować pierwsze uruchomienie aplikacji, możesz pozostawić ją odinstalowaną na jeden dzień. Możesz osiągnąć to drugie bez czekania dnia, ustawiając zegar systemowy do przodu o dzień lub więcej, całkowicie wyłączając urządzenie, a następnie włączając je ponownie.
Usunąłem więc aplikację z urządzenia, a następnie ręcznie zmieniłem datę iPhone'a w Ustawieniach, zrestartowałem urządzenie i ponownie zainstalowałem aplikację.
Następnym razem, gdy mój kod zadzwonił registerForRemoteNotificationTypes, otrzymał oddzwonienie zgodnie z oczekiwaniami.
To rozwiązało problem. Mam nadzieję, że to pomoże.