我有一个有效的通用链接,可以在其他应用程序使用时使用。例如。如果我在记事本中写下链接,它将打开应用程序。但是,当我在通用链接链接到的应用程序内调用以下内容时,它将在 safari 中打开。 canOpenURL 返回 true。
已设置此.well-known/apple-app-site-association
以及正确的intent-filter
。我认为它有效,因为在应用程序外部单击链接时会打开应用程序。
let url = Foundation.URL(string: "https://workingdeeplink.com/")!
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
最佳答案
这是预期的行为。当应用将其自己的通用链接传递给 open
时,iOS 将在 Safari 中打开该链接。
这样做的目的是在应用程序无法处理传入链接时允许回退。处理传入链接的逻辑通常类似于:
- 解析传入链接
- 确定应用是否可以处理
- 如果可以,则处理该链接(例如选择特定 View 或采取某些操作)
- 如果不能,请将链接传递给
open
,以便将用户重定向回可以处理该链接的网站。
这可以避免深层链接打开您的应用程序然后没有任何反应或显示错误的情况(因为应用程序无法处理该网址)
您的应用不应尝试打开
它可以处理的深层链接;它可以简单地绕过整个深层链接过程并采取直接导致的操作。
关于ios - 通用链接转到 Safari 而不是调用它的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75464958/