iOS应用如何在内部通过dynamic link唤起自身应用
iOS应用内通过Dynamic Link唤起自身的方案说明
可行性结论
完全支持,iOS系统允许应用内部通过Dynamic Link直接唤起自身,无需经过外部应用中转。
实现步骤
- 基础配置校验
先完成Universal Links的基础配置:- 在Apple开发者后台开启对应App的Associated Domains能力
- 在Xcode项目的
Signing & Capabilities中添加Associated Domains条目,填写你的动态链接域名,格式为applinks:xxx.page.link(替换为你自己的动态链接域名) - 确认动态链接服务端已经上传正确的
apple-app-site-association文件,配置了你的App的Team ID、Bundle ID的匹配规则;如果使用Firebase Dynamic Links,只需在Firebase控制台完成App的Bundle ID、Team ID、App Store ID的绑定即可,无需自行上传该文件。
- 应用内触发唤起
直接调用系统开放接口传入动态链接地址即可触发唤起:
配置// Swift 代码示例 guard let linkUrl = URL(string: "你的动态链接完整地址") else { return } UIApplication.shared.open(linkUrl, options: [.universalLinksOnly: true]) { isSuccess in // 可根据返回结果做异常处理 }universalLinksOnly参数为true可强制走Universal Links唤起逻辑,避免未匹配时跳转到Safari浏览器。 - 唤起结果接收与参数解析
在App的入口文件中实现Universal Links接收回调,解析动态链接参数,执行对应的业务逻辑:// iOS 13+ SceneDelegate 示例 func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let webUrl = userActivity.webpageURL else { return } // 若使用Firebase Dynamic Links,调用SDK解析 DynamicLinks.dynamicLinks().handleUniversalLink(webUrl) { result, error in guard let deepLinkUrl = result?.url else { return } // 此处处理自身业务逻辑,如跳转指定页面、读取参数等 } }
注意事项
- 若你的动态链接配置了未安装App时跳转到App Store的兜底逻辑,在未安装App的测试设备上触发会直接跳转App Store,不会唤起应用
- 动态链接的域名必须和Associated Domains中配置的域名完全一致,否则会匹配失败
内容的提问来源于stack exchange,提问作者Furang Moon
相关产品推荐
相关产品推荐

