一、先上图1:
- 这是ios9白名单问题:
-canOpenUrl: failed for URL: " " -error:This app is not allowed to query for scheme xxx
起因于 ios9 对传输安全的支持
在新一代的iOS系统中,默认需要为每次网络传输建立SSL。解决这个问题有两种方法:
解决方法:
A.建立白名单(根据需要删减)并添加到你的app的plsit中
<key>LSApplicationQueriesSchemes</key>
<array>
<string>wechat</string>
<string>weixin</string>
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<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>
<string>alipay</string>
<string>alipayshare</string>
</array>
或者 直接在info中配置(其他白名单名称参考 👆 )
B.强制将NSAllowsArbitraryLoads属性设置为YES,并添加到你应用的plist中
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
</true>
</dict>
俗话说的好,没有调查就没有发言权,测试后发现 这份来自于微博官方文档的解决方案并不对,准确的来说是描述不对。B 的解决是https连接的问题,是访问网络的问题 ,适配ios9 第一步要做到事情,如果你们的后台服务器不支持https,那你只好使用 👆 的解决方案了。附上错误码:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
或者 在 info里添加:
二、上图2:
- 这是ios9 Bitcode问题:
xxx does not contain bitcode. You must rebuild it with bit code enabled
起因于 Xcode7默认开启Bitcode
解决方法:
方法一:使用bitcode,
虽然我也不会用,但我知道许多第三方包不支持bitcode,所以对于引用第三方文件的开发者来说使用它并不简单(可能是因为我菜,别打脸)。
方法二:关闭Bitcode,方法见下图
简单粗暴,不过我喜欢
发现了一篇好的文章,不光介绍了适配ios9的方法,还把为什么会出现这种问题简单介绍了一下,自问暂时不可能比他整理的更好,所以直接奉上 连接了。