返回

iOS 17.4 下 Universal Link 失效怎么办?解决步骤和常见问题解答

IOS

修复 Universal Link 在更改默认浏览器后的失效问题

前言

随着 iOS 17.4 的发布,iOS 系统对默认浏览器处理程序进行了重大的更改,导致 Universal Link 无法在用户更改默认浏览器后正常工作。对于依赖 Universal Link 进行深度链接的应用程序,这是一个重大的问题。本文将探讨导致此问题的原因,并提供解决问题的详细步骤。

问题原因

Universal Link 是一种深度链接机制,允许应用程序通过点击链接或处理包含自定义 URL 方案的 URL 直接打开特定页面或内容。iOS 17.4 中对默认浏览器处理程序的更改导致系统不再将 Universal Link URL 重定向到应用程序,而是将其打开在默认浏览器中。

解决步骤

要解决此问题,需要完成以下两个关键步骤:

1. 配置关联域

关联域是应用程序声明为希望接收 Universal Link 的域。将应用程序关联的域添加到你的 Apple 开发者帐户中:

  • 登录 Apple 开发者帐户。
  • 导航到“App ID”部分。
  • 选择与应用程序关联的 App ID。
  • 在“Associated Domains”选项卡中,添加你的关联域。

2. 使用 App Transport Security (ATS)

ATS 是一项安全协议,要求应用程序仅与使用 HTTPS 连接的服务器通信。确保你的应用程序已启用 ATS:

  • 在 Info.plist 文件中添加以下内容:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
</dict>

其他注意事项

除了上述步骤外,还有一些其他注意事项可以帮助解决 Universal Link 问题:

  • 确保应用程序已正确注册 Universal Link。
  • 检查应用程序是否正确处理 Universal Link URL。
  • 考虑在应用程序中使用自定义 URL 方案作为 Universal Link 的备用解决方案。
  • 如果问题仍然存在,请联系 Apple 支持以获取进一步的帮助。

结论

通过配置关联域并启用 App Transport Security (ATS),可以修复 Universal Link 在更改默认浏览器后失效的问题。遵循本文中概述的步骤,确保应用程序在所有浏览器中都能正常使用 Universal Link。

常见问题解答

1. 我如何检查应用程序是否正确注册了 Universal Link?

打开应用程序的 Info.plist 文件,并确保包含如下内容:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>你的自定义 URL 方案</string>
</array>

2. 我如何检查应用程序是否正确处理 Universal Link URL?

在 AppDelegate.swift 文件中查找如下方法:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    // 处理 Universal Link URL
}

3. 为什么我需要使用自定义 URL 方案作为 Universal Link 的备用解决方案?

对于某些应用程序,配置关联域和启用 ATS 可能还不足以解决问题。在这种情况下,使用自定义 URL 方案可以提供一个可靠的备用解决方案。

4. 我在更改默认浏览器之前需要完成哪些步骤吗?

不需要。解决步骤适用于用户已更改默认浏览器的应用程序。

5. 此解决方案是否适用于所有应用程序?

此解决方案适用于依赖 Universal Link 进行深度链接的所有 iOS 应用程序。