1.http传输安全
以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求
你可以在Info.plist配置中改用下面的XML源码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
如果使用上面的方法禁用ATS,但还是无法联网。仍然提示要使用https
遇到此问题,基本出现一个project多Target,所以要注意你的Target所属的Info.plist,本人就犯过这低级错误。
如下图:
2.应用跳转(sso等)
如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。
同样在info.plist增加:
<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>renrenios</string>
<string>renrenapi</string>
<string>renren</string>
<string>renreniphone</string>
<!-- 易信 URL Scheme白名单-->
<string>yixin</string>
<!-- instagram URL Scheme白名单-->
<string>instagram</string>
<!-- whatsapp URL Scheme白名单-->
<string>whatsapp</string>
<!-- line URL Scheme白名单-->
<string>line</string>
<!-- Facebook URL Scheme白名单-->
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
3.第三方网络框架受影响 比如 AFNetworking
现在的 AFNetworking 的 AFHTTPRequestOperationManager实现是使用的 NSURLConnection 。
但 AFNetworking 也有更新计划,移除 NSURLConnection相关API,迁移到 AFHTTPSessionManager,但还未执行,详情见:https://github.com/AFNetworking/AFNetworking/issues/2806。
4.Bitcode
用Xcode 7 beta 3在真机(iOS 8.3)上运行一下工程,结果发现工程编译不过。看了下问题,报的是以下错误:
ld: ‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’ 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. for architecture arm64
得到的信息是引入的一个第三方库不包含bitcode。
对于iOS,bitcode是可选的;对于watchOS,bitcode是必须的;而Mac OS是不支持bitcode。
所以,如果我们的工程需要支持bitcode,则必要要求所有引入的第三方库都支持bitcode。
如果只是iOS平台,我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置,然后进行设置成NO
5.iOS9 下使用 Masonry会引起崩溃的一种情况
我们在使用时候一直将 leading 与 left 划为等号,这样做在 iOS8(及以前)上是正常的,但在 iOS9上这样的观念可能会引起崩溃,比如:
1 | make.left.equalTo(self.mas_leading).offset(15); |
应该为:
1 | make.left.equalTo(self.mas_left).offset(15); |
同理 mas_training 也需要改为right
5.XCode7模拟器报错
Unable to open liblaunch_sim.dylib Try reinstalling Xcode or the simulator runtime.
解决办法解决办法
一、找到目标文件
/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/system/host/liblaunch_sim.dylib
二、拷贝到目标地址一和目标地址二。
目标地址一
/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS8.1.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/host/liblaunch_sim.dylib
目标地址二
/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS8.2.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/host/liblaunch_sim.dylib
图中红色部分是原文件名字进行了修改,为了以后备份使用,liblaunch_sim.dylib为拷贝过来的文件