如果不满足某个条件,你怎么能忽略一个通用链接?
Posted
技术标签:
【中文标题】如果不满足某个条件,你怎么能忽略一个通用链接?【英文标题】:How can you ignore a universal link if a certain condition is not met? 【发布时间】:2021-08-30 15:52:01 【问题描述】:我们目前支持通用链接的通配符。所以我的应用链接看起来像:applinks:*.company.com
。
假设我只想处理一个链接,如果它是https://company.com/?query1=abc
假设我点击的是https://company.com/?query1=123
的链接
由于不满足条件,我想忽略此链接并阻止我的 ios App 响应它。这可能吗?
我以为我只能在continue:restorationHandler 中返回false
,但这并不妨碍iOS 应用程序打开。
【问题讨论】:
如果您的应用无法处理 URL,它必须在 URL 上调用open
以将用户返回到 safari。 由您的应用打开的通用链接永远不会在您的应用中在中打开。用户仍会看到您的应用打开,然后弹回 Safari。
@Paulw11 不错的推荐。我认为由于某种原因这会导致递归调用,但看起来并没有。想要提交它作为答案,我会接受吗?
【参考方案1】:
从 application(_:continue:restorationHandler:)
返回 false
不会导致 URL 被传递回 Safari(如您所见)。文档指出:
如果你没有实现这个方法或者你的实现返回 false,iOS 会尝试为你的应用创建一个文档以使用 URL 打开
所以返回 false 只会导致 iOS 尝试以不同的方式启动您的应用。
您可以拨打open(_:options:completionHandler:)
并传递您收到的网址。然后该 URL 将在 Safari 中打开; iOS 不会向您的应用传递您的应用自行打开的通用链接,因为这可能会造成无限循环。
【讨论】:
以上是关于如果不满足某个条件,你怎么能忽略一个通用链接?的主要内容,如果未能解决你的问题,请参考以下文章