iOS9适配遇到的问题

来源:互联网 发布:js 事件对象 target 编辑:程序博客网 时间:2024/05/22 13:11

最近在维护公司的一个项目,这个项目有些老了,为了增加存在感,boss要求能在通知栏显示一些小公告。于是开始去了解一些iOS8的 widget,当时手上可调试的机器只有一台iOS7,于是就将Xcode升级到7.2了,用自己的手机调试。

Xcode升级到7之后,调试的过程中出现了很多警告和编译出错的问题:

1)定位的问题:

在iOS8的基础上,增加Required background modes 键 ,如下图1。注意,这个键是表征的是一个数组,在做这个数组中增加一个对象  App registers for location updates。

图一:

对应的源码为:



2) http适配:

这里还有个坑,我们公司的后台把图片等资源放到了阿里云的服务器上,app这边请求向后台Get图片资源的时候,其实是http的协议来着。近期公司不会去更新存放图片的服务器。所以,要做适配了。当前Xcode版本是7.2,所以在info.plist文件中需要增加App Transport Security Settings这个键,App Transport Security Settings是个字典,在这个字典里面增加Allow Arbitrary Loads这个key对应的value是个布尔值,选择YES。



对应的XML文件为:

这里有个需要解释的:Xcode 7.1之后,编译器会自动把NSAppTransport SecuritySettings转化为App Transport Security Settings,对应的

NSAllowsArbitraryLoads 也会转化为 Allow Arbitrary Loads。目的是一样的,不需要过多的去深究。

3)白名单的问题:

项目中集成了支付宝、微信等三方SDK,由于这些三方公司开放的接口没有支持https协议,所以Xcode在升级到7.x之后,这些SDK会出现不能完成跳转到对应的APP,尤其是微信,都无法完成SDK的初始化。控制台会报出错误:

xxxx - error: "This app is not allowed to query for scheme xxxx''

建议先去对应的SDK平台去看看是否有新的SDK匹配了iOS9,或者有对应的适配方案。没有的话就在info.plist增加key:LSApplicationQueriesSchemes,类型为NSArray。需要支持的白名单,为string类型。如下图:


我这边需要天机的是微信和支付宝。

对应的XML文件:




以上就是目前遇到的坑,后续会陆续整理。


更全的iOS9适配请移步:

http://www.lai18.com/content/1885570.html

https://github.com/ChenYilong/iOS9AdaptationTips


 关于iOS8 widget有兴趣的可以参看

http://www.cnblogs.com/xdream86/p/3855932.html

http://blog.csdn.net/phunxm/article/details/42715145

http://onevcat.com/2014/08/notification-today-widget/

0 0
原创粉丝点击