强制使用苹果通用链接打开应用程序

7

我已经在我的应用程序中设置了通用链接。

现在,在Safari浏览器中浏览我的网站并访问一个注册了通用链接的页面时,它会在Safari中打开并询问我是否要在我的应用程序中打开。

有没有一种方法能够始终在应用程序中打开?不提示在应用程序中打开,只要安装了就直接打开,否则在Safari中继续浏览。


我相信第一次必须询问,但之后它将始终打开? - Sean Lintern
@SeanLintern88 我也这么认为。但我不想像在安卓上那样先询问用户,因为我将所有的UL重定向到一个标准页面,所以当它在Safari中继续时,提示就会丢失。如果不可能的话,我就得寻找另一种解决方案 :) - Robert Broersma
我不认为是这样的。苹果基本上给用户一个选择,他想继续使用Safari还是切换到本地应用程序。 - Losiowaty
通用链接在第一次使用时不会询问用户,它们只会立即打开应用程序,直到/除非用户明确禁用它们(这实际上相当容易做到)。您所描述的是自定义URI方案的行为。您能否提供有关您的配置的更多详细信息? - Alex Bauer
1
请注意,如果您正在Safari中浏览,则通用链接必须位于与其所在页面不同的域上,才能打开应用程序。 - Alex Bauer
显示剩余6条评论
1个回答

15

这里有两个不同的问题:

1. 在Safari中,Universal Link的URL需要与其所出现的页面位于不同的域名/子域名下

Apple对Universal Links的使用非常保守。在Safari中限制之一是不允许应用程序在用户已经浏览同一个站点时打开(这样做很有意义——如果用户在Safari中打开了一个站点而不是应用程序,如果该站点上的每个链接都试图打开应用程序,那么这可能会很烦人,尤其是如果应用程序没有正确配置深度链接路由)。

解决方法是为希望打开应用程序的链接使用单独的域名/子域名。例如,如果您的网站位于example.com,则将任何想要打开应用程序的链接指向link.example.com,然后将没有安装应用程序的用户重定向回主网站或前往App Store。这实际上是我们在Branch.io构建的系统(您可以考虑使用它而不是重新构建自己的系统!)

2. 您所描述的不是Universal Links的行为

Universal Links在打开应用程序时甚至第一次都不会要求用户确认。它们总是立即打开应用程序,甚至没有请求网页,直到/除非用户明确禁用它们(这实际上相当容易做到)。您所描述的是自定义URI方案的行为,因此我怀疑您在Universal Link指向的页面上有某种自动重定向到应用程序的URI方案。在大多数情况下,这实际上并不是最好的想法,因为没有应用程序的用户将看到一个不好的错误消息。


1
1 是完全正确的。2 不是,我没有使用任何URI Scheme。我相信当您在同一域上浏览时,智能横幅确实会出现,或者至少您可以将其拉下来。 - Robert Broersma
嗯,我从未见过这种情况。你能给出示例链接或视频吗? - Alex Bauer
非常好的答案,亚历克斯。但在上述情况中,您必须将apple-site-links-association文件托管在哪个域?我想也应该放在link.example.com上吧? - stueynet
1
@stueynet 是的,就是这样!AASA 文件放在链接 URL 的域名上。 - Alex Bauer
应用程序要直接打开,URL 必须先被访问过。如果 URL 中有任何一个字符被更改,那么弹出窗口将再次出现。这正是我现在遇到的问题,因为我的路径参数不断变化。有什么解决办法吗? - Navneet Gill
这个 app.link 服务在 Safari 13 上不再打开没有安装应用的 iPad 的 App Store。我猜是因为它像 Mac OS X Safari 一样运行。 - odinho - Velmont

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接