为什么我的Universal Link无法打开iOS应用?已完成Firebase配置仍失效
Firebase Universal Link 无法唤起iOS应用的排查求助
我正在尝试通过Firebase配置Universal Link,预期点击链接时直接打开已安装的iOS应用,但完成所有配置步骤后,点击链接仍然会跳转到Safari,无法唤起应用。以下是我执行的全部操作流程,恳请帮忙定位问题:
已完成的操作步骤
- 创建新的Xcode项目
- 添加In-app Purchase Capability,让Xcode将Bundle ID同步到App Store Connect,之后移除该Capability
- 登录开发者后台,确认Bundle ID可用
- 在App Store Connect中创建新应用
- 创建新的Firebase项目,可选择启用Gemini和Google Analytics
- 向Firebase项目添加iOS应用,填入Bundle ID、昵称以及从App Store Connect获取的App Store ID
- 下载
GoogleService-Info.plist文件,添加到Xcode项目根目录,必要时重命名为GoogleService-Info - 通过Swift Package添加Firebase iOS SDK,至少选择一个子模块(比如Firestore)
- 创建
AppDelegate文件,代码如下:import SwiftUI import FirebaseCore class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { FirebaseApp.configure() return true } } - 在主App结构体中注册App Delegate以初始化Firebase:
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate - 执行Cmd + B构建项目,确认无编译错误
- 获取Team ID,在Firebase项目设置中为iOS应用添加该Team ID
- 终端操作:
- 安装/更新nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash - 安装Node.js(自动附带npm)
- 确保
/usr/local/bin在环境变量$PATH中:export PATH="/usr/local/bin:$PATH" - 安装Firebase CLI(必要时加sudo):
npm install -g firebase-tools # 如需sudo sudo npm install -g firebase-tools - 登录Firebase CLI:
firebase login - 验证CLI正常工作,列出Firebase项目:
firebase projects:list - 若出现项目列表错误,重新认证:
firebase login --reauth
- 安装/更新nvm:
- 本地创建名为
Hosting的文件夹,终端导航到该文件夹:cd [Hosting文件夹路径] - 初始化Firebase Hosting:
选择firebase init hostingUse an existing project,粘贴Firebase项目ID,设置为公开,配置为单页应用(输入y),跳过GitHub自动部署(选择N) - 首次部署:
firebase deploy - 配置AASA文件:
- 进入public文件夹:
cd public - 创建
.well-known文件夹:mkdir .well-known - 进入该文件夹:
cd .well-known - 创建无扩展名的
apple-app-site-association文件:touch apple-app-site-association - 用Xcode打开该文件,填入以下内容,替换
$TEAM_ID.com.firebase.UniversalLinks为实际的Team ID+Bundle ID:{ "applinks": { "apps": [], "details": [ { "appId": "$TEAM_ID.com.firebase.UniversalLinks", "paths": [ "NOT /_/*", "/*" ] } ] } } - 编辑
firebase.json,添加AASA文件的Header配置,最终文件内容如下:{ "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "rewrites": [ { "source": "**", "destination": "/index.html" } ], "headers": [ { "source": "/.well-known/apple-app-site-association", "headers": [ { "key": "Content-Type", "value": "application/json" } ] } ] } } - 重新部署更改:
firebase deploy
- 进入public文件夹:
- 验证AASA文件:
- 直接访问项目域名下的
.well-known/apple-app-site-association文件 - 通过苹果的验证渠道确认苹果已获取该文件
- 直接访问项目域名下的
- Xcode配置:
- 进入项目的Signing & Capabilities标签,添加
Associated DomainsCapability - 添加关联域名,格式为
applinks:[你的Firebase托管域名],开发阶段可追加?mode=developer,示例:applinks:universallinkdemo-fa91c.web.app?mode=developer
- 进入项目的Signing & Capabilities标签,添加
- 设备端设置:
- 打开iPhone的设置-开发者选项,启用
Associated Domains Development - 删除已安装的应用,重启手机
- 在设置-开发者-诊断中添加Firebase托管域名
- 打开iPhone的设置-开发者选项,启用
- 已在SwiftUI视图中添加
openURL修饰符处理应用内Universal Link
所有步骤执行完毕后,点击Universal Link仍然会打开Safari,无法唤起应用,求帮忙排查问题。
内容的提问来源于stack exchange,提问作者Rebeloper
相关产品推荐
相关产品推荐

