我的应用程序在Appstore中。推送通知在iOS 9中运行正常,但在iOS 10中无法正常工作。我没有收到iOS 10设备的任何推送通知。我检查了服务器中的设备令牌和证书。全部正确。我还在设置应用中检查了通知属性。一切都很好。但我没有收到任何通知。我只是关闭并打开我的应用程序的通知。我打开我的应用程序来检查设备令牌是否正在改变。它已更改并更新到我的服务器。然后我正在接收通知。现在它对我的设备工作正常。
我担心这是否会影响所有用户或仅影响我。有人找到合适的解决方案,请告诉我。
提前致谢
答案 0 :(得分:7)
使用xCode 8 GM需要对iOS 10进行一些更改 您需要实现UserNotifications.framework及其委托方法以获取推送通知的工作。
我已使用新的UserNotifications.framework解决了我的问题。 请点击此链接:Push notification issue with iOS 10
答案 1 :(得分:6)
"的 UserNotifications 强>"在iOS10中不是强制性的。 "的 UIUserNotificationSettings 强>"仍然适用于iOS10。
如果您有以下代码,它应该可以在iOS10中使用。
Row13
但如果您使用 Xcode8 及更高版本进行构建,请确保在权利中包含以下条目。启用"推送通知后,将自动添加此条目"在" 功能"。
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
在发布 - 分发版本中,这将自动更改为 以下
<key>aps-environment</key>
<string>development</string>
答案 2 :(得分:3)
我们需要更改iOS 10的一些代码。
Appdelegate.h
#import <UserNotifications/UserNotifications.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate>
@end
检查操作系统版本
#define SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
注册通知
- (void)registerForRemoteNotifications {
if(SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(@"10.0")){
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
if(!error){
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
}];
}
else {
// Code for old versions
}
}
亨德尔代表方法
//foreground app.
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{
NSLog(@"User Info : %@",notification.request.content.userInfo);
completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge);
}
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{
NSLog(@"User Info : %@",response.notification.request.content.userInfo);
completionHandler();
}
答案 3 :(得分:1)
在iOS 10上添加推送通知权利是必要的,因此如果您在功能中“修复问题”,问题将自动解决。