通用链接在真实设备上不起作用
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() 在真实设备上不起作用