适配iOS9出现的一些问题

前段时间,公司的项目中集成的微信支付在测试的时候出现了问题,明明手机上安装了微信,支付的时候却总是提示"未安装微信客户端",经查验发现只有iOS9系统的有这种问题,于是进行调试,发现控制台打印出了一下提示:-canOpenURL: failed for URL: "weixin://app/wx9c8771d3c07dfd30/" - error: "This app is not allowed to query for scheme weixin"

经搜索后得知:应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。

受此影响,当你的应用在iOS 9中需要使用微信SDK的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>mqqOpensdkSSoLogin</string>
    <string>mqzone</string>
    <string>sinaweibo</string>
    <string>alipayauth</string>
    <string>alipay</string>
    <string>safepay</string>
    <string>mqq</string>
    <string>mqqapi</string>
   <string>mqqopensdkapiV3</string>
   <string>mqqopensdkapiV2</string>
    <string>mqqapiwallet</string>
    <string>mqqwpa</string>
    <string>mqqbrowser</string>
    <string>wtloginmqq2</string>
    <string>weixin</string>
    <string>wechat</string>
</array>
以上全部列举了一下,需要什么加什么就可以了,关于微信支付,我只加了两个

<string>weixin</string>
<string>wechat</string>
然后还需要加入如下代码:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
这样基本就解决了问题,貌似只能真机上没有问题,如果在模拟器上的话,可能会提示:-canOpenURL: failed for URL: "weixin://app/wxdaae92a9cfe5d54c/" - error: "(null)",这是因为模拟器上并没有安装微信。


附带https的解决办法

iOS9引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)
新特性要求App内访问的网络必须使用HTTPS协议,但是现在公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS协议传输。
可用以下解决办法:
在Info.plist中添加NSAppTransportSecurity类型Dictionary。
在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

上面其实已经涉及到了,这里再简单提一下。


iOS中Bitcode的问题解决

报错如下:

ld: warning: directory not found for option '-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/Developer/Library/Frameworks'
ld: -bundle and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
clang: error: linker command failed with exit code 1 (use -v to see invocation)
解决办法(暴力的):关闭Bitcode

Build Settings”->”Enable Bitcode”改成"NO"。








你可能感兴趣的:(Bitcode,适配iOS9)