通用链接不适用于真实设备

问题描述 投票:0回答:3

我目前正在努力在我的应用程序中实现通用链接,无论是使用启动的命令行 xcrun simctl openurl 还是通过点击消息中的链接,它们都可以在我的模拟器上完美运行

但我无法在真实设备上运行它们(使用 3 个不同的 iOS 14.X 版本测试了 3 个不同的 iPhone)

应用程序配置 > 签名和功能 > 关联域 已正确设置为

applinks:<domain_name>

我已经尝试过:

  • 卸载/重新安装应用程序
  • 清理我的构建存储库
  • 重新启动我的设备
  • 安装App后等待5分钟
  • 使用其他 HTTP 协议作为路由
    https://<domain>/.well-known/apple-app-site-association
  • 点击许多应用程序中的链接(消息、不和谐、注释...)
  • 使用 ngrok / localtunnel / apache 服务器(在产品中)公开我的网站
  • 在开发者设置中打开/关闭“关联域开发”

我已经在 AASA 验证器网站(如branch.io 或 appsflyer.com)上进行了验证,一切正常,一旦我将应用程序重新安装到我的 iPhone 上,就会请求 aasa 文件,并返回一个带有正确

200 OK
Content-Type : application/json
 http 响应

我没有办法解决这个问题。我真的希望在将应用程序部署到 Appstore 之前使其正常工作,即使它在模拟器上运行良好。

感谢您今后的帮助

ios swift iphone http-redirect ios-universal-links
3个回答
1
投票

不幸的是,通用链接并非对每个人都可靠,这似乎是 AASA 文件未下载到设备中的问题。

已知错误

Apple 存在一个已知的通用错误,iOS 版本 11.x+ 的设备无法获取 AASA 文件,从而导致通用链接失败。

验证问题

通常,Apple 操作系统会在一定时间间隔内重新尝试获取 AASA 文件,但解决方法可能有助于测试条件。 在应用程序内,检查 AASA 文件是否下载成功。为此:

  • 将链接复制到您的笔记应用程序中。

  • 长按链接直至出现下拉菜单。如果下拉列表显示“打开链接”,则通用链接不适用于该设备。如果链接显示“在应用程序名称中打开”,则配置工作正常。

备份计划

您还可以借助用户代理和其他东西在服务器端实现回退深度链接调用


0
投票

在您的 apple-app-site-association 文件中检查您是否使用“appID”:“.bundleid”。如果是这样,请尝试将其替换为“appID”:“.bundleid”,反之亦然。


0
投票

Mojtaba Hosseini 他的答案是正确的,我只是想添加更多信息。

不仅 apple-app-site-association 文件会缓存在 Apple CDN 上(有方法可以检查缓存过期日期),而且您的设备本身也很少下载该文件。

有一些在线站点可以验证您的配置文件 - 查找它们。一种常见错误是未返回正确的 Content-Type 响应标头(必须为

application/json
)。如果您仍然认为一切设置正确并且链接仍然无法打开您的应用程序,有两种更可靠的方法来测试您的配置:

1。使用备用开发者模式

在 Xcode 的“签名和功能”选项卡中,将

?mode=developer
附加到您的 URL(例如
applinks:URL.COM?mode=developer
)。这会绕过 Apple 的 CDN,并使您的设备直接从服务器获取 apple-app-site-association 文件。确保您在设备的开发者设置中启用了相应的选项。 [来源]

2。使用模拟器

您的开发设备可能缓存了旧版本的文件。只需启动模拟器并在终端中输入以下内容即可:

xcrun simctl openurl booted "<YOUR UNIVERSAL LINK>"

(这是必需的,因为您无法将链接放在模拟器上的“注释”或“消息”应用程序中)


如果您的应用程序仍然无法打开,则您的配置很可能有问题。

© www.soinside.com 2019 - 2024. All rights reserved.