Firebase待处理动态链接无效

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

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options 

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

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

 -(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options 

同时,如果安装了应用程序,动态链接将按预期工作,通过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]; 

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

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

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

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

为了澄清,如果我对链接的Google网上论坛post的理解是正确的,Firebase动态链接库只会检查一次“待处理动态链接”。 永远。 因此,如果应用已经检查了待处理的链接,则需要将其删除并重新安装以再次检查。

现在回答您的问题,如果在单击链接时未安装应用程序, 通常不会调用这两种方法。 openURL方法响应自定义URI方案, continueUserActivity方法响应Universal Links。 在第一次下载后,当用户手动打开应用程序时,这些都没有被使用。 Firebase文档确实说openURL方法总是在初始安装时调用,但我从未见过其他任何地方发生的事情,因此他们可能会做一些不寻常的事情。

有可能偏离主题,我建议看看Branch.io (完全披露:我在团队中)。 您将获得动态链接的所有好处,以及额外function和更清晰文档的清单:)