iOS9 快速适配Tips

Xcode7正式版发布之后,我们团队第一时间进行了升级体验,在确定没有重大bug之后,全体升级Xcode7,世界如此美好~~~
但是升级之后还是遇到一些问题,把踩的坑小记一下.

1.Swift2.0语法更新之后编译不通过.

当初为了学习中,我们项目中某个模块使用swift实现,现在想来这绝逼是最2的事情了,Xcode6以来,每次更新都随着语法的变动,每次看到编译后一堆红色警告都是心烦意乱.对应解决办法不难,修改代码即可.

2. Bitcode导致编译不通过问题

在修改完swift代码之后,编辑报错如下:

xxx does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.

Xcode7之后,默认开启Bitcode,但是引用的第三方库不支持啊,AppThinning始终是个美好的愿景啊,暂时可以通过修改Build settings - Build Options - Enable Bitcode 改为NO来解决.

3.Http request fail

iOS9之后默认只支持更安全的HTTPS请求,我们公司暂时不支持HTTPS,我们可以来到info.plist里面添加一项来搞定它.

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
4.新字体导致UI问题

新苹方字体个人很喜欢,小字体时观看对眼睛更友好,但是字体间距好像比以前稍微宽了一丢丢,导致UI出现了一丢丢问题,稍微注意一下Label宽度即可.

5.键盘闪现bug

应用内无缘无故弹出数字键盘,不知道哪里出问题了,stackoverflow查询之后发现是UIAlertview的问题,需要改为iOS8添加的UIAlertController,(iOS8新特性---更优雅的弹窗),但是由于应用还要支持iOS7,这个问题不了了之,暂且记下.

6. canOpenUrl机制改变导致无法跳转应用

iOS9之后处于对用户隐私的考虑,对使用URLScheme跳转做了限制,只需要在info.plist里面LSApplicationQueriesSchemes字段下添加相应的UrlScheme即可正常跳转,白名单上限是50个.
常见白名单

 <key>LSApplicationQueriesSchemes</key>
<array>
    <!-- 微信 URL Scheme 白名单-->
    <string>wechat</string>
    <string>weixin</string>

    <!-- 新浪微博 URL Scheme 白名单-->
    <string>sinaweibohd</string>
    <string>sinaweibo</string>
    <string>sinaweibosso</string>
    <string>weibosdk</string>
    <string>weibosdk2.5</string>

    <!-- QQ、Qzone URL Scheme 白名单-->
    <string>mqqapi</string>
    <string>mqq</string>
    <string>mqqOpensdkSSoLogin</string>
    <string>mqqconnect</string>
    <string>mqqopensdkdataline</string>
    <string>mqqopensdkgrouptribeshare</string>
    <string>mqqopensdkfriend</string>
    <string>mqqopensdkapi</string>
    <string>mqqopensdkapiV2</string>
    <string>mqqopensdkapiV3</string>
    <string>mqzoneopensdk</string>
    <string>wtloginmqq</string>
    <string>wtloginmqq2</string>
    <string>mqqwpa</string>
    <string>mqzone</string>
    <string>mqzonev2</string>
    <string>mqzoneshare</string>
    <string>wtloginqzone</string>
    <string>mqzonewx</string>
    <string>mqzoneopensdkapiV2</string>
    <string>mqzoneopensdkapi19</string>
    <string>mqzoneopensdkapi</string>
    <string>mqzoneopensdk</string>

    <!-- 支付宝  URL Scheme 白名单-->
    <string>alipay</string>
    <string>alipayshare</string>

</array>

PS:哪位仁兄应用里面添加了50个url scheme让我来膜拜一下

7.约束leading与training导致的崩溃

iOS9以前leadingtraining基本可以理解为leftright,但是iOS9之后不是了,貌似说增加了某些国家文字支持,是从右往左导致leadingtrainingleft跟right相反了(求证实),我在使用Masonry添加约束的时候已经全用leftright替换.

8.preferredLanguages导致应用默认为英文的bug

哈哈哈哈更新iOS9之后微信跟微博第一时间中枪了.....
嗯嗯,严肃.
iOS9正式版之后[NSLocale preferredLanguages]返回的当前语言后面加了所在国家后缀,比如中国地zh-Hans变成了zh-Hans-CN,这时候使用返回值的前缀做国际化适配即可.
例如if ([currentLanguage hasPrefix:@"zh-Hans"])

差不多就酱,遇到啥新问题再记下来_
每次升级都是一堆坑,求一家最低支持iOS9设备的公司Orz......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 很可能你的应用是与一个支持HTTPS传输数据的服务器交互,但是并没有使用TLS 1.2或更高。在这种情况下,你定义...
    Www刘阅读 3,156评论 0 5
  • 医闹这个事不是新鲜事,隔不了多久,在某个医院,就会上演。有破口大骂的,有动手打人的,有在医院大厅设灵堂哭丧的,更激...
    公子一小白阅读 702评论 0 0
  • 我最近都在看这本书《另一种选择》,它对我的帮助很大,书的感情线和逻辑线搭配的很好,读起来不枯燥。 印象中两件事情最...
    3分钟即兴演讲阅读 191评论 2 3
  • Masonry 实例化 redView 和 blueView 设置 redView 和 blueView 的约束 ...
    云海长天阅读 1,178评论 0 1
  • 哈密分行巴里坤支行地处巴里坤县城,是2014年成立的县级支行。在这里,有着淳朴的民情,历史久远的文化。我支行自成立...
    c1166c2c930f阅读 326评论 0 0