Mam problem związany z tokenem urządzenia APNS. Przed użyciem Xcode 10.2 i iOS 12.1. W tej chwili uzywałem tokena urządzenia metodą delegowania
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
Rejestruję się w APNS w ten sposób i działało dobrze.
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
if(!error){
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
}];
Teraz po zainstalowaniu iOS 13 na moim urządzeniu iPhone i przy użyciu Xcode 11 metoda delegowania didRegisterForRemoteNotificationsWithDeviceToken nie jest wywoływana. Nie można zrozumieć tego problemu. Przeprowadziłem już badania nad tym, wiem, że istnieją pewne zmiany w pobieraniu tokena z metody delegowania, ale w moim przypadku metoda delegowania nie jest nawet wywoływana. Znowu działa dobrze dla iOS 12.
apple-push-notifications
ios13
xcode11
IOS Dev
źródło
źródło
Odpowiedzi:
Po prostu uruchom ponownie iPhone'a. To takie proste, aw 90% przypadków rozwiąże Twój problem.
źródło
Zaloguj się na https://appleid.apple.com/ , a następnie otwórz adres URL „ https://developer.apple.com/account/ios/identifier/bundle ” lub „ https://developer.apple.com/account/resources / certyfikaty / lista ”.
Najpierw utwórz dwa nowe certyfikaty: (1) Wersje programistyczne Apple Development Sign dla aplikacji na iOS, macOS, tvOS i watchOS. Do użytku w Xcode 11 lub nowszym. (2) Dystrybucja Apple Podpisuj swoje aplikacje w celu przesłania do App Store lub dystrybucji Ad Hoc. Do użytku z Xcode 11 lub nowszym.
Następnie znajdź menu „Identyfikatory” za pośrednictwem adresu URL „ https://developer.apple.com/account/resources/identifiers/list ”. Edytuj swoje identyfikatory swojej aplikacji, upewnij się, że do powiadomień wypychanych został dodany certyfikat rozwoju SSL i certyfikat produkcji SSL.
Następnie otwórz menu „Profile” za pośrednictwem adresu URL „ https://developer.apple.com/account/resources/profiles/list ”. Upewnij się, że Certyfikaty jako typ DistributionFor, które będą używane w Xcode 11 lub później, i zapisz
Na koniec pobierz plik profilu informacyjnego i pliki certyfikatów CA utworzone na komputerze MAC, które zostaną dodane do XCode i aplikacji łańcucha kluczy, klikając dwukrotnie pliki osobno.
Co więcej, pamiętaj o ponownym uruchomieniu telefonu komórkowego i upewnij się, że poprawnie skonfigurowałeś zdalne powiadomienie.
źródło
Też napotkałem ten sam problem. Próbowałem wielu scenariuszy. Odniosłem sukces po wykonaniu poniższych kroków:
registerForRemoteNotifications
metoda w głównym wątku.W moim przypadku otrzymywałem token urządzenia, ale odpowiedź jest opóźniona (myślę, że ze względu na rejestrowanie zdalnych powiadomień w wątku w tle). Ale po przejściu
[[UIApplication sharedApplication] registerForRemoteNotifications]
do głównego wątku wszystko działa dobrze.Oto mój kod:
Mam nadzieję, że to pomoże.
źródło
Właśnie rozwiązałem ten problem w następujący sposób.
Dodaj wydruk w metodzie didRegisterForRemoteNotificationsWithDeviceToken i utrzymuj urządzenia podłączone.
Potem działa dobrze.
Mam nadzieję, że komuś to pomoże.
źródło
Jest to związane z brakiem DeviceSupport w instalacji XCode dla wersji platformy używanej przez urządzenie do wdrażania.
W moim przypadku brakowało platformy 13.1. Aby rozwiązać, po prostu dodaj DeviceSupports w folderze
Możesz pobrać brakujące DeviceSupport z: https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport
źródło
Spróbuj tego.
To zadziałało dla mnie.
źródło