如何为iOS平台的PhoneGap Build配置Deep Links(深度链接)?
看起来你已经在iOS PhoneGap Build应用里做了深度链接的基础配置,但大概率是某个细节没踩对——我帮你梳理几个最容易出问题的点,一步步排查:
1. 先确认
apple-app-site-association文件的正确性 这是苹果验证深度链接的核心文件,几个绝对不能错的点:
- 文件名必须是纯
apple-app-site-association,不能带.json或任何后缀,服务器根目录(或.well-known目录)必须能直接访问到它 - 文件结构要严格符合苹果要求,正确格式示例:
{ "applinks": { "apps": [], "details": [ { "appID": "你的苹果团队ID.应用Bundle ID", "paths": ["*", "/特定路径/*"] } ] } }
这里的appID必须和你苹果开发者后台的团队ID+应用Bundle ID完全匹配,paths要明确指定允许跳转的路径,用*表示所有路径
- 必须通过HTTPS访问这个文件,苹果生产环境不接受HTTP链接,用浏览器访问
https://manmade.se/apple-app-site-association,确保能直接看到正确的JSON内容(或下载到无后缀的文件)
2. 检查PhoneGap Build的
config.xml配置细节 你的现有配置里只加了自定义scheme的manmade,但苹果的Universal Links依赖HTTPS scheme,建议补充配置:
<plugin name="cordova-universal-links-plugin" source="npm" /> <universal-links> <!-- Universal Links 核心配置(HTTPS) --> <host name="manmade.se" scheme="https" event="ul_myExampleEvent" /> <!-- 保留自定义scheme(如果需要) --> <host name="manmade.se" scheme="manmade" event="ul_myExampleEvent" /> </universal-links>
另外要确保:
- PhoneGap Build项目绑定的苹果开发者账号正确,Bundle ID和苹果后台的App ID完全一致
- 苹果开发者后台的对应App ID已经开启
Associated Domains,并添加了applinks:manmade.se
3. 必须在JS代码里监听深度链接事件
插件不会自动处理跳转,你需要在deviceready事件触发后添加事件监听,示例代码:
document.addEventListener('deviceready', function() { // 监听Universal Links触发的事件 window.addEventListener('ul_myExampleEvent', function(event) { console.log('收到深度链接:', event.url); // 这里写你的跳转逻辑,比如根据url打开对应页面 if (event.url.includes('/product/')) { // 打开产品页面 } }, false); }, false);
注意:一定要等deviceready事件触发后再监听,否则插件还没初始化,监听不到事件。
4. 用正确的方式测试深度链接
- 苹果的Universal Links(HTTPS链接)不能直接在Safari地址栏输入测试,必须从外部应用(比如短信、备忘录、邮件)点击链接,或者用模拟器命令测试:
xcrun simctl openurl booted https://manmade.se/你的测试路径 - 自定义scheme(
manmade://manmade.se/测试路径)可以直接在Safari地址栏输入测试,但这不属于苹果的Universal Links范畴
5. 处理缓存问题
苹果会缓存apple-app-site-association文件,如果你修改了文件,可能需要等待10-30分钟才会生效。如果着急测试,可以:
- 卸载重装应用
- 在设备的Safari设置里清除历史记录和网站数据
- 重置模拟器的内容和设置
内容的提问来源于stack exchange,提问作者Claes Gustavsson
相关产品推荐
相关产品推荐

