IOS10系统 app没有出现在系统设置-通知列表处理
IOS10 系统更新,对程序员来说最大的改变就是做好布局和推送的兼容处理。布局兼容比较好处理,下面总结下IOS10推送问题的处理经验
1、app 有推送功能,安装后却没有出现在 系统设置-通知列表 处理
OS10推送新增了UserNotifications Framework,导入引用 #import <UserNotifications/UserNotifications.h> 并在 AppDelegate didFinishLaunchingWithOptions 方法中添加注册。具体参考如下:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.f) {
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (!error) {
NSLog(@"succeeded!");
}
}];
}
注册成功,即可在设置-通知中 看到对应 app 的 通知设置信息,详细参考如下文章:iOS10推送通知适配
2、App推送收不到,使用 [[UIApplication sharedApplication] isRegisteredForRemoteNotifications] 检测通不过 处理
如果在推送证书都正确的情况下,推送 注册检测通不过。说明配置存在问题,请按照如下步骤核对:
a、在XCode 中选中项目 -> 选择TARGETS项 -> 选择 Capabilities 开启 "Push Notification"项
b、在XCode 中选中项目 -> 选择TARGETS项 -> 选择 Capabilities 开启 "Background Modes"项,并勾选 “Remote notification” 项
更多详细内容,请参考如下文章:iOS10 推送最新配置
3、IOS10 系统关闭通知后再开启,开启成功却收不到推送处理
公司app使用的 友盟推送,把情况反馈给对方,对方技术回复是 IOS10 系统的bug。经过本人在 10.0.1 和 10.0.2 上多次测试,关闭(使用的系统关闭方法 [[UIApplication sharedApplication] unregisterForRemoteNotifications],也收不到)后开启确实收不到。但是,却发现 通过系统【设置】 -> 【通知】哪里关闭后开启能够正常接收推送。折中的处理办法是引导用户去 系统 - 设置 - 通知中关闭 。详细代码如下:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.f) {
// IOS10 推送关闭后开启 收不到信息,但是通过[设置] - [通知] 关闭后开启,能正常收到
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
}
//关闭推送
else{
//..此处使使用正常的关闭,不受影响
}
以上方法,亲测有效。希望给遇到同样困扰的同行们参考!