Firebase 动态深层链接在安装后到达 nil

Posted

技术标签:

【中文标题】Firebase 动态深层链接在安装后到达 nil【英文标题】:Firebase dynamic deep link arrives nil after install 【发布时间】:2016-08-23 17:51:00 【问题描述】:

我正在尝试使用 Firebase 将深层链接传递到我的应用中,这些链接在安装后仍然存在。

为了测试这一点,我按照 Firebase 文档和 Firecast 视频here 在大约 12 分钟 40 秒时提供的步骤进行操作。步骤如下:

    首先我从我的设备中删除该应用程序。 然后我点击链接打开应用商店。 然后我从 xcode 运行我的应用程序。 预期:dynamicLink.url 属性将等于 application:openURL 中的“https://www.example.com/data/helloworld” 现实:dynamicLink.url 属性为零。

这是我在 Firebase 控制台中创建的深层链接网址:https://nqze6app.goo.gl/RIl8

这是在传递到 dynamicLinkFromCustomSchemeURL 之前传递到 application:openURL 的 URL:com.johnbogil.voices://google/link/dismiss?fdl_cookie

这是我的 openURL 调用中的代码:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options  
  FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
  if (dynamicLink)  
    NSLog(@"I am handling a link through the openURL method"); 
    [self handleDynamicLink:dynamicLink]; 
    return YES; 
   else  
    return NO; 
   

不确定为什么 dynamicLink.url 到达零。任何帮助表示赞赏。

【问题讨论】:

你能不能也分享一下... 1.你的application:openURL电话的内容? 2、完全展开的动态链接? (在 Firebase 控制面板中,单击溢出菜单中的“链接详细信息”,您应该会在下面看到它。) @ToddKerpelman 1) ` - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options FIRDynamicLink *dynamicLink = [ [FIRDynamicLinks dynamicLinks]dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) NSLog(@"我正在通过 openURL 方法处理链接"); [自我句柄动态链接:动态链接];返回是; 否则 返回否; ` 2) nqze6.app.goo.gl/?link=https://www.example.com/data/… ios 9.3 的定位和测试 好的。那么您能否确认您在控制台输出中看到“我正在通过 openURL 方法处理链接”链接?另外...您是否有机会在“私人”模式下使用 Safari? @ToddKerpelman 我在私人模式下使用 Safari。离开私人模式解决了这个问题:) 哇哦!我继续并将其发布为官方答案。 【参考方案1】:

我有同样的问题。我收到了 restorationHandler 的回调,但在 handleUniversalLink 回调中 dynamiclink 和错误都为零。花了一些时间后,我发现了我的问题。

原来,url 区分大小写。例如,如果您的网址是:

https://xzz6b.app.goo.gl/0EWv

你在笔记中写了 https://xzz6b.app.goo.gl/0ewv 并点击了它。它会加载你的应用,甚至给你回调 restorationHandlerdynamiclink 将为 nil。

你甚至可以在浏览器中尝试。

希望对大家有所帮助。

【讨论】:

是的。最后一个额外的字符也会产生相同的效果,比如xzz6b.app.goo.gl/0EWv'【参考方案2】:

对于遇到同样错误的其他人...

    如果您的 application:openURL 方法被调用,并且 您似乎确实从您的 dynamicLinkFromCustomSchemeURL 方法中获得了有效的 dynamicLink 对象,但是 dynamicLink 对象的url 参数为零

然后仔细检查您是否在 Safari 中处于“私人”模式。这会有点影响 Firebase 动态链接检索您点击的原始链接的能力。

【讨论】:

我尝试了所有但仍然得到 FIRDynamicLink 和错误都为零 你也可以帮忙吗:***.com/q/42093902/6144372【参考方案3】:

在我的情况下,这是因为我使用的是自定义域,而我错过了 docs(参见第 3 点)中明确指出您需要使用键列出动态链接 URL 前缀的位在您的 Info.plist 文件中调用 FirebaseDynamicLinksCustomDomains

【讨论】:

【参考方案4】:

我也遇到过同样的问题。

解决办法:

来自docs

如果在您的应用首次启动时(在任何 iOS 版本),此方法将使用 FIRDynamicLink 调用 url设置为nil,表示SDK找不到匹配的 待处理的动态链接。

所以你必须检查这一步

在您应用的 Xcode 项目的 Info 选项卡中,创建一个新的 URL 类型以 用于动态链接。将标识符字段设置为唯一值 并将 URL 方案字段作为您的包标识符,即 动态链接使用的默认 URL 方案。

【讨论】:

【参考方案5】:

尝试更新 Firebase/DynamicLinks。 我遇到了同样的问题,然后我运行 pod update Firebase/DynamicLinks。 现在 pod Firebase/DynamicLinks 是 6.21.0 版本,DynamicLink 对象具有正确的 url 值。

【讨论】:

以上是关于Firebase 动态深层链接在安装后到达 nil的主要内容,如果未能解决你的问题,请参考以下文章

使用 React Native 在 Firebase 中使用动态链接设置带有查询参数的动态深层链接

带有颤动的 Firebase 动态链接:深层链接 URL 未打开应用程序

Firebase 动态链接没有与自定义标签上的短 URL 进行深度链接

在 iOS 上下载应用后,Firebase 深层链接不跟踪链接(延迟深层链接)

在 iOS 上配置 Firebase 应用后,Branch.io 深层链接停止工作

来自 firebase 动态链接的 URL 检测返回 nil iOS