您的位置:首页 > 移动开发 > IOS开发

iOS9适配常见问题

2015-11-11 15:30 399 查看
1.http传输安全

以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求

你可以在Info.plist配置中改用下面的XML源码:

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

如果使用上面的方法禁用ATS,但还是无法联网。仍然提示要使用https

如下图:



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为拷贝过来的文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: