Firebase Dynamic Links安装后不可用,自定义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:可能无法捕获原始链接,需要补充以下处理:- 在
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; } - 如果你的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

