Flutter iOS端Universal Links无法正常工作问题求助
iOS端uni_links无法唤起App的问题求助
我用uni_links插件在Android和iOS端实现App链接功能,Android端运行正常,但iOS端无法唤起App打开对应URL。以下是已做的配置和尝试:
已完成的配置
- 将
apple-app-site-association.json文件同时放置在域名根目录和.well-known文件夹下 - 在Runner.entitlements文件中添加域名
applinks:myhost - 在info.plist中启用
FlutterDeepLinkingEnabled
apple-app-site-association.json文件内容(当前版本)
HTTP/1.1 200 OK Server: nginx/1.40.0 Content-Type: application/pkcs7-mime Content-Length: 245 { "applinks": { "apps": [], "details": [ { "appID": "[TEAM_ID].[APP_BUNDLE_ID]", "paths": [ "*" ], "appIDs": ["[TEAM_ID].[APP_BUNDLE_ID]"], "components": [ { "/": "*" } ] } ] } }
已尝试的方案
- 按照Stack Overflow上的方案解决了branch.io验证时出现的'content-type'错误,但问题依旧
- 尝试替换为app_links插件,仍无法解决iOS唤起问题
可能的修复建议
修正apple-app-site-association.json的格式
- 移除文件中的HTTP响应头(
HTTP/1.1 200 OK等内容),文件应仅保留纯JSON结构 - 确保服务器返回该文件的Content-Type为
application/json,而非application/pkcs7-mime(无签名的Universal Links配置不需要pkcs7-mime类型)
- 移除文件中的HTTP响应头(
简化JSON结构(适配iOS 13+)
混合旧版paths和新版components字段可能导致解析异常,建议统一使用components:{ "applinks": { "apps": [], "details": [ { "appIDs": ["[TEAM_ID].[APP_BUNDLE_ID]"], "components": [ { "/": "*" } ] } ] } }验证文件的可访问性
- 用
curl -v https://你的域名/.well-known/apple-app-site-association测试,确认返回200状态码、Content-Type正确,且内容是纯JSON - 确保无重定向,苹果服务器无法访问带重定向的关联文件
- 用
iOS端配置细节检查
- 在Xcode的Target -> Signing & Capabilities中,确认已添加Associated Domains,并包含
applinks:myhost(和entitlements中的域名一致) - 确认info.plist中的
FlutterDeepLinkingEnabled是布尔值YES,而非字符串类型
- 在Xcode的Target -> Signing & Capabilities中,确认已添加Associated Domains,并包含
测试方式调整
- 用真实设备测试,模拟器对Universal Links支持有限
- 通过备忘录、短信等第三方应用点击链接,不要直接在Safari地址栏输入(Safari可能优先打开网页而非唤起App)
内容的提问来源于stack exchange,提问作者PMK
相关产品推荐
相关产品推荐

