У меня есть проблема, связанная с маркером устройства APNS. До этого я использовал Xcode 10.2 и iOS 12.1. В этот момент я получал токен устройства в методе делегата
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
Я регистрируюсь на APNS, как это, и это работало нормально.
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
if(!error){
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
}];
Теперь, когда iOS 13 установлена на моем устройстве iPhone и используется Xcode 11, метод делегата didRegisterForRemoteNotificationsWithDeviceToken не вызывается. Невозможно понять эту проблему. Я уже провел исследование по этому вопросу, я знаю, что есть некоторые изменения в получении токена от метода делегата, но в моем случае метод делегата даже не вызывается. Опять же, это нормально работает для iOS 12.
apple-push-notifications
ios13
xcode11
IOS Dev
источник
источник
Ответы:
Просто перезагрузите свой iPhone. Это так просто, и в 90% случаев это решит вашу проблему.
источник
Войдите на https://appleid.apple.com/ , затем откройте URL-адрес « https://developer.apple.com/account/ios/identifier/bundle » или « https://developer.apple.com/account/resources». / сертификаты / список ".
Во-первых, создайте два новых сертификата: (1) Apple Development Sign версии для разработки приложений для iOS, macOS, tvOS и watchOS. Для использования в Xcode 11 или позже. (2) Apple Distribution Подпишите свои приложения для отправки в App Store или для специального распространения. Для использования с Xcode 11 или позже.
Затем найдите меню «Идентификаторы» через URL « https://developer.apple.com/account/resources/identifiers/list ». Отредактируйте свои идентификаторы своего приложения, убедитесь, что SSL-сертификат разработки и производственный SSL-сертификат добавлены в Push-уведомления.
Далее откройте меню «Профили» через URL « https://developer.apple.com/account/resources/profiles/list ». Удостоверьтесь, что Сертификаты как тип DistributionFor, который будет использоваться в Xcode 11 или позже, и сохраните
Наконец, загрузите файл профиля обеспечения и файлы сертификатов CA, созданные на ваш MAC, который будет добавлен в приложение XCode и цепочку ключей, дважды щелкнув файлы отдельно.
Более того, не забудьте перезагрузить свой мобильный телефон и убедиться, что вы правильно настроили удаленное уведомление.
источник
Я тоже столкнулся с той же проблемой. Я перепробовал много сценариев. Я добился успеха после выполнения следующих шагов:
registerForRemoteNotifications
метод в основном потоке.В моем случае я получал токен устройства, но есть задержка ответа (я думаю, из-за регистрации удаленных уведомлений в фоновом потоке). Но после перемещения
[[UIApplication sharedApplication] registerForRemoteNotifications]
в основной теме все работает нормально.Вот мой код:
Надеюсь, это поможет.
источник
Я только что решил эту проблему следующим образом.
Добавьте некоторую печать в метод didRegisterForRemoteNotificationsWithDeviceToken и оставьте устройства подключенными.
Тогда это работает нормально.
Я надеюсь, что это поможет кому-то.
источник
Это связано с отсутствием DeviceSupport в вашей установке XCode для версии платформы, используемой вашим устройством развертывания.
В моем случае платформа 13.1 отсутствовала. Чтобы решить, просто добавьте DeviceSupports в папку
Вы можете загрузить отсутствующий DeviceSupport с: https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport
источник
Попробуй это.
Это сработало для меня.
источник