根据Firebase动态链接文档,即使未安装应用程序,如果用户打开设备上的链接,Appstore上的应用程序页面也会打开,一旦安装了应用程序,应用程序就会在第一次启动时处理该链接。 经过一些调查后,我发现Firebase有一些名为"待定动态链接",并且预计会使用这些链接调用AppDelegate方法:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
这个假设的来源: https://groups.google.com/forum/#!msg/firebase-talk/2STD8eIi61I/8KJqZN7TBAAJ
但是当我尝试测试这个&#34;等待动态的lynks&#34;功能,这两个AppDelegate方法都没有被调用
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
同时,如果安装了应用,动态链接会按预期工作,如果从gmail应用通过Chrome打开,通过openURL:方法打开,通过iOS9及以后的通用链接打开,如果从Notes或Mail应用程序打开(通过Safari实际)。
所以,我的问题是:&#34;等待动态链接&#34;期待工作?可能是我的应用程序无法处理它们的原因是什么?
---------------- EDIT ----------------
问题是,默认情况下,Firebase会尝试使用与我们的情况相同的应用程序包ID等URL方案打开应用程序。我已将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:
方法。
答案 0 :(得分:7)
安装后深度链接基于检查标志:
[FIRApp configure]
名为[[UIApplication sharedApplication] openURL:url];
上手动设置的自定义URL方案或小写包ID(例如com.foo.bar)调用FIROptions
。 如果您没有收到,请检查自定义网址方案是否已正确定义。
答案 1 :(得分:0)
要澄清一点,如果我对链接的Google网上论坛帖子的理解是正确的,Firebase动态链接库只会检查未决动态链接&#39;一旦。永远。因此,如果应用已经检查了待处理的链接,则您需要将其删除并重新安装以再次检查。
现在回答你的问题,如果在点击链接时没有安装应用,那么这两种方法都不会被通常调用。 openURL
方法响应自定义URI方案,continueUserActivity
方法响应Universal Links。在第一次下载后,当用户手动打开应用程序时,这些都不会被使用。 Firebase documentation确实说初始安装时始终会调用openURL
方法,但我从未见过其他任何地方发生的事情,因此他们可能会做一些与众不同的事情。
冒着偏离主题的风险,我建议看看Branch.io(完全披露:我在团队中)。您将获得动态链接的所有好处,以及额外功能和更清晰文档的清单:)