繁体   English   中英

Xcode 7 + canOpenURL,如何让Facebook和Twitter打开我自己的应用程序链接

[英]Xcode 7 + canOpenURL, how to have Facebook and Twitter to open my own app links

在Xcode 7之前,它工作正常。 当我在Facebook和Twitter上发布诸如“ myapp:// mylink?id = 1”之类的链接以进行社交媒体共享时,用户可以单击它,并且如果已安装,它将打开我自己的iOS应用程序。 我知道xcode 7限制了50个url方案的限制,任何应用程序在实际进行“ openUrl”操作之前都可以询问“ canOpenUrl”。 显然,Facebook和Twitter仍在打开链接(它们在其应用程序内部的UIWebView中打开)之前检查canOpenUrl,并且由于限制为50,因此无法将世界上所有应用程序的自定义url方案添加到其应用程序plist中,因此我的应用程序现在无法使用我的自定义网址方案从FB和Twitter打开。 日志在控制台上显示以下内容:

Twitter[827] <Warning>: -canOpenURL: failed for URL: "myapp://mylink?id=1" - 
error: "This app is not allowed to query for scheme myapp"

现在的问题是,有什么办法可以像以前一样使用户可以在FB和Twitter上单击某些链接(myapp:// mylink?id = 1),然后通过自定义网址方案打开我自己的应用?

仅供参考,我实际上在这些网站上发布了诸如http://myweb.com/link?id=1之类的链接,并且该链接是根据HTTP标头请求在我的网络服务器上处理的,以决定重定向到实际的网站,或者如果是iOS,重定向到myapp:// mylink?id = 1,并且如果Android然后重定向到另一个android应用程序的url方案等。我测试了直接将myapp:// mylink?id = 1链接直接发布到Facebook和Twitter上的情况,不能给出相同的错误。

附加: iOS9的新规则是,您需要在应用程序plist中添加以下内容(最多50个),以便您的应用程序可以在操作系统中查询canOpenURL,但是对于大型应用程序(如FB和Twitter),它也变得不可用:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>myapp-custom-url-scheme</string>
</array>

从围绕研究此问题的阅读中得出的解决方案是:

  1. 要么Apple应该将此限制更改为更多基于速率的限制,以免滥用的应用(例如Amazon之类的应用)不会使用它来扫描所有已知的url方案以建立应用安装统计信息,
  2. 或Facebook和Twitter等大型社交媒体网站应停止检查canOpenURL,然后继续进行openURL而不进行验证。
  3. 甚至更好,我们应该为自定义URL方案名称空间构建一些集中式数据库,iOS和其他应用程序都应将其用于此类常规用途。

好的,Facebook和Twitter最近发布了可解决此问题的更新。 好像他们不再检查canOpenURL,并让任何应用程序的自定义url方案打开,除非他们正在采取其他方法对其进行验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM