Firebase待处理动态链接无效

Ole*_*nov 7 ios firebase firebase-dynamic-links

根据Firebase动态链接文档,即使未安装应用程序,如果用户打开设备上的链接,Appstore上的应用程序页面也会打开,一旦安装了应用程序,应用程序就会在第一次启动时处理该链接.经过一些调查后,我发现Firebase有一个叫做"待定动态链接"的东西,并且可以预期,使用这些链接调用AppDelegate方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
Run Code Online (Sandbox Code Playgroud)

此假设的来源:https://groups.google.com/forum/#! msg/firebase-talk/ 2STD8eIi61I/ 8KJqZN7TBAAJ

但是当我尝试测试这个"待定动态lynks"功能时,这两个AppDelegate方法都没有被调用

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
Run Code Online (Sandbox Code Playgroud)

同时,如果安装了应用程序,动态链接将按预期工作,通过openURL:方法打开(如果通过Chrome从gmail应用程序打开),通过iOS9及以后的通用链接打开(如果从Notes或Mail应用程序打开)(通过Safari实际上).

所以,我的问题是:"待定动态链接"如何工作?可能是我的应用程序无法处理它们的原因?

- - - - - - - - 编辑 - - - - - - - -

问题是,默认情况下,Firebase尝试使用URL方案打开应用程序,该方案等于应用程序包ID,这不是我的情况.我已将Firebase的配置更改为下一个:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist"];
FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath];
options.deepLinkURLScheme = @"MY-CUSTOM-SCHEME";
[FIRApp configureWithOptions:options];
Run Code Online (Sandbox Code Playgroud)

并且它开始工作,例如,openURL:如果之前在设备上打开链接,则在第一个应用程序打开时立即调用方法.

Ian*_*ber 7

安装后深度链接基于检查标志:

  • [FIRApp configure]
  • 动态链接SDK检查它是否是全新安装(例如,没有标记存在)
  • 如果是这样,它会调用Dynamic Links API来检查是否有要解析的动态链接
  • 如果是,则SDK [[UIApplication sharedApplication] openURL:url];使用手动设置的自定义URL方案FIROptions或小写包ID(例如com.foo.bar)进行调用.

如果您没有收到,请检查是否正确定义了自定义URL方案.

  • 谢谢@ ian-barber的解释.我已设置`FIROptions`的`deepLinkURLScheme`属性,它开始工作.如果您是Firebase团队成员,那么将这些说明添加到DynamicLinks文档中绝对值得. (3认同)