You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Dynamic Link安装后无法触发邀请弹窗问题求助

修复方案与调试方法

一、核心修复步骤

1. 确保Firebase Dynamic Links初始化完成

在SceneDelegate的willConnectTo方法中,先完成Firebase全局初始化(若未在其他位置配置):

import Firebase

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    FirebaseApp.configure()
    // 原有window配置代码保留
    guard let windowScene = (scene as? UIWindowScene) else { return }
    let initialWindow = UIWindow(windowScene: windowScene)
    initialWindow.makeKeyAndVisible()
    AppSharedPoint.shared.setupWindow(window ?? initialWindow) {
        // 链接处理逻辑见下文
    }
}

2. 替换链接处理逻辑为Firebase原生解析

安装后首次打开的动态链接需要通过Firebase SDK解密解析,不能直接提取webpageURL。修改willConnectTo中的回调部分:

AppSharedPoint.shared.setupWindow(window ?? initialWindow) {
    // 处理userActivity
    if let userActivity = connectionOptions.userActivities.first {
        self.handleFirebaseDynamicLink(userActivity: userActivity)
    }
    // 处理URLContexts
    if let url = connectionOptions.urlContexts.first?.url {
        DynamicLinks.dynamicLinks().handleUniversalLink(url) { dynamicLink, error in
            guard error == nil, let dynamicLink = dynamicLink, let deepLink = dynamicLink.url else {
                return
            }
            AppSharedPoint.shared.handle(link: deepLink)
        }
    }
}

新增私有方法统一处理NSUserActivity:

private func handleFirebaseDynamicLink(userActivity: NSUserActivity) {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let webpageURL = userActivity.webpageURL else {
        return
    }
    
    DynamicLinks.dynamicLinks().handleUniversalLink(webpageURL) { dynamicLink, error in
        guard error == nil, let dynamicLink = dynamicLink, let deepLink = dynamicLink.url else {
            return
        }
        AppSharedPoint.shared.handle(link: deepLink)
    }
}

同步更新scene(_:continue:)方法:

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    handleFirebaseDynamicLink(userActivity: userActivity)
}

3. 检查Firebase控制台配置

  • 确认动态链接的App Store ID、Bundle ID与应用完全匹配
  • 验证Team ID配置正确
  • 检查深层链接(Deep Link)格式无拼写错误

二、安装后首次打开场景的调试方法

  • Xcode调试日志:
    1. 打开Xcode Scheme设置,在Run -> Arguments -> Arguments Passed On Launch中添加-FIRDebugEnabled
    2. 运行App,查看控制台DynamicLinks相关日志,确认链接是否被正确解析
  • 测试链接验证:
    通过Firebase控制台生成测试动态链接,在Safari中打开跳转至App Store,安装后点击「打开」,观察控制台日志输出
  • 打印关键信息:
    在handleFirebaseDynamicLink中添加打印,确认安装后是否接收到正确的userActivity:
    print("Received activity type: \(userActivity.activityType), webpageURL: \(webpageURL ?? "")")
    
  • 关联域名检查:
    确认Xcode的Signing & Capabilities中已添加Associated Domains,格式为applinks:<你的动态链接域名>

内容的提问来源于stack exchange,提问作者Rahish Kansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:27:33