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

时间:2015-12-05 19:11:59

标签: ios xcode facebook twitter

在Xcode 7之前,它运行良好。当我发布像" myapp:// mylink?id = 1"在Facebook和Twitter上进行社交媒体共享,用户可以点击它,如果安装了它,它将打开我自己的iOS应用程序。我知道xcode 7限制了50个url方案,任何应用程序都可以询问" canOpenUrl"在实际进行" openUrl"之前。显然Facebook和Twitter都在打开链接之前检查了canOpenUrl(它们在他们的应用程序中的UIWebView中打开),并且因为他们无法添加所有世界的应用程序'由于50限制,我的应用程序现在无法通过我的自定义网址方案从FB和Twitter打开,因此自定义网址计划进入他们的app plist。日志在控制台上显示以下内容:

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方案等我测试只是直接在Facebook和Twitter上发布myapp:// mylink?id = 1链接,它仍然没有工作给出同样的错误。

添加: iOS9的新规则是你需要在你的应用程序plist中添加最多50个以下内容,以便你的应用程序可以在操作系统中查询canOpenURL,但它也无法用于大型应用程序,如FB&amp; Twitter的:

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

在我阅读有关研究此问题的内容时,解决方案是:

  1. Apple应该将此限制更改为更高的速率限制,以便滥用应用程序(如亚马逊的东西)不会使用它来扫描所有已知的url方案来构建应用程序安装的统计信息,
  2. 或Facebook和Twitter等大型社交媒体网站应该停止检查canOpenURL,并且只需继续进行openURL而不进行验证。
  3. 甚至更好,我们应该为自定义URL方案名称空间构建一些集中式数据库,iOS和其他应用程序都应该将它用于这种一般用途。

1 个答案:

答案 0 :(得分:0)

好的,Facebook和Twitter最近发布了现已修复此问题的更新。 好像他们不再检查canOpenURL,并让任何应用程序的自定义网址方案打开,除非他们正在采取其他方式来验证它。