ios - 通用链接转到 Safari 而不是调用它的应用程序

标签 ios swift deep-linking ios-universal-links

我有一个有效的通用链接,可以在其他应用程序使用时使用。例如。如果我在记事本中写下链接,它将打开应用程序。但是,当我在通用链接链接到的应用程序内调用以下内容时,它将在 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 中打开该链接。

这样做的目的是在应用程序无法处理传入链接时允许回退。处理传入链接的逻辑通常类似于:

  1. 解析传入链接
  2. 确定应用是否可以处理
  3. 如果可以,则处理该链接(例如选择特定 View 或采取某些操作)
  4. 如果不能,请将链接传递给 open,以便将用户重定向回可以处理该链接的网站。

这可以避免深层链接打开您的应用程序然后没有任何反应或显示错误的情况(因为应用程序无法处理该网址)

您的应用不应尝试打开它可以处理的深层链接;它可以简单地绕过整个深层链接过程并采取直接导致的操作。

关于ios - 通用链接转到 Safari 而不是调用它的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75464958/

相关文章:

ios - 自定义 UITableViewCell 中的 UITextField 意外发现为 nil

swift - 下划线 "_"在 Swift 中是什么意思?

ios - iOS 11 上的向上移动键盘问题 iPhone 6 是较早的型号

ios - `application:openURL:options` 期间网络连接丢失

ios - Branch.io 未传递通用链接查询参数以使用 $uri_redirect_mode = 2 重定向 url

android - Android 中的深度链接和多个应用程序实例

iphone - MKAnnotationView 显示没有文本的标注

ios - 如何在导航栏的默认后退按钮上设置图像

ios - 视频无法在 iOS 设备上播放

html - 将文本粘贴到 UIWebView/网站