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

Firebase Dynamic Links安装后不可用,自定义Scheme链接异常求助

解决Firebase动态链接自定义Scheme无法正常解析的问题

我之前也碰到过一模一样的问题,折腾了好一阵才搞定,给你几个亲测有效的排查和解决方向:

  • 检查自定义Scheme的配置优先级
    确保你的自定义Scheme在Info.plist的CFBundleURLTypes中是第一个条目。如果有其他Scheme(比如第三方登录、分享的Scheme)排在前面,Firebase可能会优先处理那些,导致动态链接的Scheme解析异常。
    示例配置参考:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>你的自定义Scheme</string>
            </array>
        </dict>
        <!-- 其他Scheme配置放在这个条目之后 -->
    </array>
    
  • 验证Firebase控制台的动态链接配置
    登录Firebase控制台,进入动态链接的设置页面,确认你添加的自定义Scheme完全正确,并且在「应用关联」中已经勾选了对应的iOS应用。如果是手动生成动态链接,还要确保customScheme参数设置为你的自定义Scheme,而非默认值。

  • 完善多场景下的链接处理逻辑
    当用户从备忘录点击链接跳转到App Store,再回到你的App时,App可能是被杀死后重启的,这时候仅靠application:openURL:options:可能无法捕获原始链接,需要补充以下处理:

    1. 在application:didFinishLaunchingWithOptions:中处理启动参数里的URL:
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          NSURL *launchURL = launchOptions[UIApplicationLaunchOptionsURLKey];
          if (launchURL) {
              [[FIRDynamicLinks dynamicLinks] handleUniversalLink:launchURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) {
                  if (dynamicLink?.url) {
                      // 在这里处理解析后的目标链接
                  }
              }];
          }
          return YES;
      }
      
    2. 如果你的App适配了iOS 13+的SceneDelegate,还要在scene:openURLContexts:中添加处理逻辑:
      - (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
          for (UIOpenURLContext *context in URLContexts) {
              [[FIRDynamicLinks dynamicLinks] handleUniversalLink:context.URL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) {
                  if (dynamicLink?.url) {
                      // 处理目标链接
                  }
              }];
          }
      }
      
  • 清除Firebase缓存并诊断问题
    有时候Firebase本地缓存的状态会导致异常,你可以先卸载App、清除模拟器数据,再重新安装测试。另外,还可以在启动时调用诊断方法获取详细日志:

    [[FIRDynamicLinks dynamicLinks] performDiagnosticsWithCompletion:nil];
    

    这个方法会在Xcode控制台输出详细的动态链接诊断信息,帮你定位具体的配置或解析问题。

  • 排查第三方URL拦截逻辑
    如果你使用了第三方路由框架或者自定义了URL拦截代码,要确保这些逻辑不会提前处理Firebase的Scheme链接。正确的顺序应该是先让Firebase解析动态链接,再将解析后的目标URL交给你的业务逻辑处理。

内容的提问来源于stack exchange,提问作者Carlos de Elias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:37:57