【问题标题】:Why so many canOpenURL?为什么会有这么多canOpenURL?
【发布时间】:2016-06-14 23:22:53
【问题描述】:

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

从xcode中的日志输出来看,有10多条日志要说

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

demo中没有源码可以通过简单的搜索打印出来。并且静态库只是进行付款,根据我的理解不应该进行此类检查。

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

2016-03-02 15:58:55.998 AliSDKDemo[4491:1610409] -canOpenURL:URL 失败:“momochs://” - 错误:“此应用不允许查询方案 momochs” 2016-03-02 15:58:55.999 AliSDKDemo[4491:1610409] -canOpenURL:URL 失败:“tenpay://” - 错误:“此应用不允许查询方案 tenpay” 2016-03-02 15:58:55.999 AliSDKDemo[4491:1610409] -canOpenURL:URL 失败:“com.icbc.iphoneclient://” - 错误:“此应用不允许查询方案 com.icbc。 iphone客户端” 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:URL 失败:“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”

【问题讨论】:

标签: ios security xcode6 ios9 url-scheme


【解决方案1】:

为什么会有这么多canOpenURL?

因为他们想知道安装了哪些应用程序,直到iOS8这是一个丑陋的技巧来知道你安装了哪些应用程序,他们基本上有一个他们想知道的应用程序列表,所以他们会连续@987654321 @ 调用每个应用程序方案,然后收集数据并将其发送回他们的服务器以用于他们需要的任何目的。

谢天谢地,这在 iOS9 中不再允许,因为您需要提供您的应用将针对 canOpenURL 调用的方案列表,调用不在您的 info.plist 中的 url 方案将导致您看到该日志警告

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

我看到的SDK不是开源的,所以你无法查看他们的代码,代码在静态库*.a文件中

只是想知道他们如何在没有源代码的情况下做到这一点?有什么技术可以>实现这一点吗?谢谢

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

希望这可以消除混乱,我建议保持原样,不要让他们完成这样的特技。

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

【讨论】:

  • 还有一个问题:有什么安全问题可以被苹果拒绝吗?
  • 这真的很难说,但只要你不手动将这些应用程序包含在权利中,你可能会很好,但在某些时候苹果可能会在审查过程中包含这些应用程序,但从我的工作来看,我还没有看到这种情况发生!
猜你喜欢
  • 2016-10-18
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 2017-01-04
  • 2023-04-06
  • 2019-09-01
  • 2010-10-06
  • 2014-10-19
相关资源
最近更新 更多