通用链接在真实设备上不起作用

Posted

技术标签:

【中文标题】通用链接在真实设备上不起作用【英文标题】:Universal link do not work on real devices 【发布时间】:2021-05-17 12:12:34 【问题描述】:

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

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

App 配置 > Signing and Capabilities > Associated Domains 正确设置为applinks:<domain_name>

我已经尝试过:

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

我已经在 branch.io 或 appsflyer.com 等 AASA 验证器网站上进行了验证,一切正常,一旦我将应用程序重新安装到我的 iPhone 上,就会请求 aasa 文件,它会返回一个带有正确的 200 OK http 响应Content-Type : application/json

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

感谢您以后的帮助

【问题讨论】:

【参考方案1】:

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

已知错误

对于 Apple 有 a known universal bug,其中 iOS 版本 11.x+ 的设备无法获取 AASA 文件,从而导致通用链接失败。

验证问题

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

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

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

后备计划

您还可以在用户代理和其他东西的帮助下在您的 sercerside 上实现后备深度链接调用

【讨论】:

非常感谢您的回答。如果我在设备上安装 AASA 文件后立即收到 HTTP 请求,这是否意味着该文件已下载?我已经考虑过你的备份计划,不幸的是我的链接已经重定向到我的应用程序的网络版本。 不一定,可能是设备试图访问文件!而关于备份计划,你应该在重定向之前添加中间件。【参考方案2】:

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

【讨论】:

以上是关于通用链接在真实设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

EditText 的 onCreateContextMenu() 在真实设备上不起作用

颤振图像上传在真实设备上不起作用,虽然它适用于模拟器

socket.io swift 在真实设备上不起作用

Bootstrap 折叠菜单链接在移动设备上不起作用

NSUserDefaults 在 IOS 8 模拟器上不起作用 [重复]

悬停菜单在触摸设备上不起作用,因为链接被触发