在这个情况下:
- Twitter 的官方应用已注册,可在 iOS 9 上使用通用链接处理 twitter.com URL
- 用户从 Safari 启动并安装 Twitter 的官方应用程序
- 用户单击 Twitter 声称的 URL 之一的链接
怎么了?它是留在 Safari 中还是切换到 Twitter 的应用程序?
在这个情况下:
怎么了?它是留在 Safari 中还是切换到 Twitter 的应用程序?
Does it stay within Safari or switch to Twitter's app?
留在野生动物园。
更新:一种解决方法是拥有第二个子域,您也可以将其用于通用链接。以 Twitter 为例,如果 Twitter 使用 ul.t.co 作为链接,那么 twitter.com 上点击 ul.t.co 的用户将被带入 Twitter 应用程序。Branch的用户受益于 Universal Links 的这一“功能”。
这似乎是通用链接的固有限制。如果有人解决了这个问题,我很想听听解决方案。
请注意,仍然可以在 iOS 9 的浏览器中触发 URI 方案——我们在我的公司Branch执行此操作。您需要注意的是,您不能像在 iOS 8 及更低版本上那样在 iframe 中触发 URI 方案。
所以我建议检查 navigator.agent 并且:
如果是 iOS 9,如果是,设置window.location = 'twitter://';
是否要尝试打开 Twitter 应用程序。如果用户没有安装 Twitter,他们将看到一条错误消息。
如果是 iOS 8 或更低版本,您仍然可以在 iframe 中触发 URI 方案,如果未安装应用程序,用户将不会看到错误消息。
Does it stay within Safari or switch to Twitter's app?
切换到 Twitter 应用程序(使用 Twitter 应用程序 v6.39 在 iOS 9.1 上测试),除非您将其关闭(请参阅st.derrick于 2015 年 9 月 24 日在iOS9 中的评论:通用链接不起作用)。
直接来自苹果网站:
使用通用链接使您的应用能够处理指向您网站的链接
强调您的网站。此功能结合了许多东西,其中之一是共享 Web 凭据。总结如下:
访问共享的 Web 凭据需要应用程序、网站和用户的许可。
为了实现访问,必须创建一个关联:
将 apple-app-site-association 文件添加到您的网站。此文件必须包含站点要与之共享凭据的所有应用程序的应用程序标识符,并且必须正确签名。
简而言之,是的,但也不是。它必须得到所有机构/各方的支持(网站和应用程序,就像移交一样)。在您的情况下,如果 twitter 包含通用链接的正确证书(以及 Apple 包括权利),那么它将像已经做的那样重定向它们。
为了具体回答您的问题,该技术本身可用于完全绕过整个 Safari,通过将用户直接发送到相关应用程序,而不是通过向您自己的应用程序添加特定权利(com.apple.developer)来代替 http 调用.associated-domains),即使我明白你的意思。它不是为 Safari 设计的
它会在官方 Twitter 应用程序中打开链接。
通用链接允许 iOS 9 用户在 WKWebView 和 UIWebView 视图和 Safari 页面中点击指向您网站的链接时打开您的应用程序,此外还有导致调用 openURL: 的链接,例如邮件、消息和其他应用。
对于运行早于 9.0 的 iOS 版本的用户,点击指向您网站的通用链接会在 Safari 中打开该链接。
留在萨法里。
根据我的经验,当单击其他应用程序(iMessage、Mail、Slack 等)的链接以及从 safary 内的 google 搜索结果中单击时(如果结果链接到 applinks-page),应用程序会打开