You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让Universal Links不记住应用选择或清除已存选择?

好问题!这确实是iOS Universal Links机制里一个容易让人挠头的点,我来给你拆解清楚:

首先明确:iOS本身没有提供官方配置项,让Universal Links每次都弹出应用选择对话框——系统的默认逻辑就是记住用户第一次的选择,之后直接打开对应应用,除非触发重置操作。

不过你可以通过两种思路解决你的需求:

一、清除已保存的应用关联选择

如果只是想重置当前的选择,让下次点击链接时重新弹出选择框,有这几种可行方法:

  • 重置单个应用的关联
    对于App Store下载的应用,直接长按图标→选择「删除App」,重新下载安装后,系统就会忘记之前的选择;如果是企业签名应用,删除后重新安装,或者在「设置」→「通用」→「VPN与设备管理」里找到对应企业证书,重新信任后也能重置关联。
  • 系统级重置(一刀切)
    打开「设置」→「Safari浏览器」→「清除历史记录与网站数据」,这个操作会重置所有网站的Universal Links关联偏好,当然也包括你的链接。缺点是会清除用户的Safari历史,所以如果只是针对特定链接,这个方法有点粗暴,但确实有效。
  • 应用内代码触发重置(仅针对自己的应用)
    如果你是其中一个应用的开发者,可以在应用内部调用UIApplication.shared.open(_:options:completionHandler:)时,传入[UIApplication.OpenExternalURLOptionsKey.universalLinksOnly: false]参数,这个参数会强制系统重新处理链接的应用选择逻辑,但只能在你自己的应用内部生效,无法影响用户从外部点击链接的行为。

二、让每次点击都弹出选择框的替代方案

既然系统默认会记住选择,如果你想让用户每次都有选择机会,只能通过变通方法实现:

  • 搭配自定义URL Scheme
    给两个应用分别配置自定义URL Scheme(比如appA://appB://),然后在网页的链接点击事件里,不直接使用Universal Links,而是弹出一个自定义的网页弹窗,提供“打开应用A”“打开应用B”“在浏览器打开”三个选项,用户点击对应选项时再调用对应的Scheme或Universal Links。这种方式完全由你控制,不受系统记忆影响,但需要前端页面配合开发。
  • 使用中间跳转页
    把你的Universal Links指向一个专门的中间网页,这个页面里放两个按钮,分别对应打开两个应用的链接(可以用各自的Universal Links或Scheme)。用户每次点击原始链接都会先进入这个中间页,再手动选择要打开的应用。这种方式不需要修改应用配置,只需要调整网页端的逻辑,实现成本较低。

最后补充一句:iOS设计这个记忆机制是为了减少用户重复操作,提升体验,但如果你的业务场景确实需要用户每次都选择,上面的方案就是目前最可行的解决路径。

内容的提问来源于stack exchange,提问作者hecroge

火山引擎 最新活动