为什么这么多canOpenURL?

时间:2016-03-02 08:06:40

标签: ios security xcode6 ios9 url-scheme

https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1运行AlipaySDK演示时,发生了一些奇怪的事情。

从xcode的日志输出中,有超过10个日志要说

  

-canOpenURL:网址失败:“momochs://” - 错误:“此应用不允许查询方案妈妈

演示中没有源代码可以通过简单的搜索来打印出这些内容。静态库只是支付,不应该根据我的理解进行检查。

这里的问题是弄清楚为什么会发生这种情况或者其他设置错误?

  

2016-03-02 15:58:55.998 AliSDKDemo [4491:1610409] -canOpenURL:网址失败:“momochs://” - 错误:“此应用不允许查询方案妈妈”   2016-03-02 15:58:55.999 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“tenpay://” - 错误:“此应用不允许查询方案支付”   2016-03-02 15:58:55.999 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“com.icbc.iphoneclient://” - 错误:“此应用程序不允许查询方案com.icbc。 iphoneclient”   2016-03-02 15:58:56.000 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“wx2654d9155d70a468://” - 错误:“此应用程序不允许查询方案wx2654d9155d70a468”   2016-03-02 15:58:56.000 AliSDKDemo [4491:1610409] -canOpenURL:网址失败:“meituan0000://” - 错误:“此应用不允许查询方案meituan0000”   2016-03-02 15:58:56.000 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“sinaweibo://” - 错误:“此应用程序不允许查询方案sinaweibo”   2016-03-02 15:58:56.001 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“dianping://” - 错误:“此应用程序不允许查询方案dianping”   2016-03-02 15:58:56.001 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“diditaxi://” - 错误:“此应用程序不允许查询方案diditaxi”   2016-03-02 15:58:56.002 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“cn.12306://” - 错误:“此应用程序不允许查询方案cn.12306”   2016-03-02 15:58:56.002 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“mtxx://” - 错误:“此应用程序不允许查询方案mtxx”   2016-03-02 15:58:56.002 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“youku://” - 错误:“此应用程序不允许查询方案优酷”   2016-03-02 15:58:56.003 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“baidumap://” - 错误:“此应用程序不允许查询方案baidumap”   2016-03-02 15:58:56.003 AliSDKDemo [4491:1610409] -canOpenURL:URL失败:“iosamap://” - 错误:“此应用程序不允许查询方案iosamap”

1 个答案:

答案 0 :(得分:2)

  

为什么有这么多canOpenURL?

因为他们想知道安装了哪些应用程序,所以直到iOS8这是一个很难理解的技巧,知道你安装了哪些应用程序,他们基本上有一个他们想知道的应用程序方案列表,所以他们会连续{{ 1}}调用每个应用程序方案,然后收集数据并将其发送回服务器,以满足他们所需的任何目的。

值得庆幸的是,在iOS9中不再允许这样做,因为您需要提供您的应用会执行canOpenURL次呼叫的方案列表,调用不在canOpenURL中的网址方案会导致你看到的日志警告

  

奇怪的是我得到了如下的日志信息,但找不到任何信息   源代码打印出来的东西。

SDK不是从我看到的开源的,所以你无法窥视他们的代码,代码在静态库info.plist文件中

  

想知道他们如何在没有源代码的情况下做到这一点?任何技术能够实现这一目标吗?感谢

没什么特别的,如果你编写一个项目并将其构建为静态库,你将获得*.a文件中的编译源代码,你可以导入到其他项目并在那里使用,只要你有正确的头文件,这正是支付宝的做法

希望这可以解决这种混乱,我建议保持原样,不要让他们像那样拉出特技。

你总是可以将这些方案的列表添加到.a中,但是你必须自己向苹果解释为什么你需要打开这么多应用程序,再次,非常糟糕的想法,简单地忽略它你很高兴去!