APNS 无法获取设备令牌



My code.

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate                  = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (!error) {
NSLog(@"~ios10-----");
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
}else{
NSLog(@"~ios10---error--");
}
}];

iPhone 5s ios 11.4.1中的此代码是工作,didRegisterForRemoteNotificationsWithDeviceToken方法调用。 但是在iPhone 6s ios 13.5.0中不起作用。经过几天的谷歌搜索,在APNS连接失败 找到解决方案,修复方法是在wifi设置中更改手机以使用替代DNS,例如Google(8.8.8.8(或Cloudflare(1.1.1.1(。但是我无法修改用户手机的DNS。

如果您有任何想法,请告诉我。谢谢

你可以试试这个,希望这对你有帮助。

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_9_x_Max) {
UIUserNotificationType allNotificationTypes =
(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
UIUserNotificationSettings *settings =
[UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
[application registerUserNotificationSettings:settings];
} else {
// iOS 10 or later
#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
// For iOS 10 display notification (sent via APNS)
[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions =
UNAuthorizationOptionAlert
| UNAuthorizationOptionSound
| UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) {
}];
#endif
}