iOS10已经发了,最近发现App在iOS10上有一些问题,主要是iOS10的字体变了,一些Label要做适配。还有一些相机权限之类的。更加详细的可以参考这篇文章
https://github.com/ChenYilong/iOS10AdaptationTips
之前一直纠结要不要升级Xcode8,毕竟好多插件都不能用了,还有用Xcode7打包的App在iOS10上运行能不能收到推送,经过一天的测试。结果如下:
以下结果是我用极光推送测试的结果(JPush)
Xcode7打包的App能不能再iOS10上收到推送?
答案:可以的,能够收到推送。但是点击推送或者从推送启动App之前的方法不再响应。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { |
也就是只能收到,但是点击推送以后只会打开App而不会走didReceiveRemoteNotification,所以页面不跳转。
(我是用AD_Hoc证书发了一个测试版。用iOS10的机子装上以后使用推送生产环境推送测试的。AppStore版本没测试)
Xcode8升级以后怎么做iOS10适配
我是根据最新的Jpush官方文档做的适配
https://docs.jiguang.cn/jpush/client/iOS/ios_guide_new/
需要注意的几点:
1.Xcode8的疯狂输出模式
刚用Xcoed8时候吓着了,疯狂输出一大堆log信息。建议关闭掉。
关闭办法
进入地方在你选择模拟器的左边有一个你的App图标和名字,点击一下选择Edit Scheme。 然后选择Run->Environment Variables->+号
OS_ACTIVITY_MODE =disable
然后打钩,完事
但是Xcode8的NSLog不打印了 = =!我这边是这个情况
2.Push Notification开关
刚在Xcode8上运行时候肯定会报错。需要在Tragets->Capabilites打开Push Notification开关。
点击修复后会自动生成一个xxx.entitlements的文件(xxx是你的工程名字)
你会发现里面会有APS Environment 并且为development
那你需要上线时候改成发布吗?
并不用可以忽略它,它对你发布并无影响。只要你发布时候选择的是发布证书依旧是发布环境。
但是,如果你用Xcode8生成以后再用Xcode7打开,如果不删除这个文件,打包时候就会报错,
所以如果你想用Xcode8做完适配以后还想用Xcode7发包的话请删除掉这个文件。(然后删除掉会报错)把下图选中哪行后面的路径删掉就好了
更新:昨天试了下,删除这个文件再用Xcode7打包以后安装到iOS10可以收到推送但是还是不响应推送处理的方法。
暂时解决办法是使用Xcode7开发最后发版使用Xcode8
Xcode7打包报错应该有解决办法,暂时留个坑
代码适配
因为用的第三方,所以按着文档来就好了,但是也有一些小坑
|
|
有趣的是iOS10当App正在运行时候也可以在上方弹出推送框