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

iOS9 的白名单问题

2016-02-28 17:31 351 查看
这几天,由于版本更迭,使用xcode 7打包,在处理白名单时,遇到了一些问题。

主要如下,被跳转的App没有添加跳转app的URL scheme至白名单,那么为什么能够回跳。

1、使用Xcode 7 打包的工程,在iOS9系统中运行打开其他app时,会遇到白名单的问题。

      主要报错如下

 -canOpenURL: failed for URL: “weibo://” - error: “This app is not allowed to query for scheme weibo”

为什么会有这个报错?

  iOS 9 通过白名单的机制对呼起的app进行过滤,如果某App不在白名单中,则执行 canOPenUrl时,此App不能够被呼起,返回值为false。

2、如何解决

在工程文件的plist中,增加LSApplicationQueriesSchemes的键值对,即可。

常用的app的URL Scheme如下。

<key>LSApplicationQueriesSchemes</key>

 <array>

    <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>

    <string>alipay</string>

    <string>alipayshare</string>

</array>

3、 我的疑问

大家有没有考虑一个问题,继续分享的时候,微信或微博肯定没有添加你的app的URL Scheme,那么他们又是如何返回你的应用的呢?

经过测试,原因如下,

白名单机制,主要针对的是canOpenURL 找个函数。而OpenUrl是不受白名单限制的,也就是说

当我们使用

if([self canOpenUrl:test]){ [ self openUrl:test]} 时,由于test未添加至白名单,所以返回false,无法打开。

但是直接使用 [self openURL:test]是可以打开的。这也就是为什么分享之后,能够跳回的原因。

4、

当然,一般打开app,需要通过canOpen进行判断,否则,会发生没有响应的情况。联机调试会发现,打开的app未NULL的报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios url scheme xcode