Firebase 动态深度 link 安装后到达 nil

Firebase dynamic deep link arrives nil after install

我正在尝试使用 Firebase 将深度 links 传递到我的应用程序中,以便在安装后继续存在。

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

  1. 首先,我从我的设备上删除了该应用程序。
  2. 然后我按link打开应用商店。
  3. 然后我 运行 我的应用来自 xcode。
  4. 预期:dynamicLink.url 属性 将等于 application:openURL
  5. 中的 "https: //www.example.com/data/helloworld"
  6. 现实:dynamicLink.url属性到零

这是我在 Firebase 控制台中创建的深度link url: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. 您似乎确实从 dynamicLinkFromCustomSchemeURL 方法中获得了一个有效的 dynamicLink 对象,但是
  3. 那个dynamicLink对象的url参数是nil

然后仔细检查您是否在 Safari 中处于 "Private" 模式。这会有点干扰 Firebase 动态链接检索您单击的原始 link 的能力。

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

事实证明,url 区分大小写。例如,如果您的 url 是:

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

然后你在笔记里写了https://xzz6b.app.goo.gl/0ewv并点击了它。它会加载你的应用程序,甚至会给你 restorationHandler 的回调,但 dynamiclink 将为 nil。

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

希望对大家有所帮助。

我遇到过同样的问题。

解决方案:

来自docs

If the Dynamic Link isn't found on your app's first launch (on any version of iOS), this method will be called with the FIRDynamicLink's url set to nil, indicating that the SDK failed to find a matching pending Dynamic Link.

所以你必须检查这一步

In the Info tab of your app's Xcode project, create a new URL type to be used for Dynamic Links. Set the Identifier field to a unique value and the URL scheme field to be your bundle identifier, which is the default URL scheme used by Dynamic Links.

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

在我的例子中,这是因为我使用的是自定义域,我错过了 docs 中的位(请参阅第 3 点),该位明确指出您需要列出您的动态链接 URL 使用 Info.plist 文件中名为 FirebaseDynamicLinksCustomDomains 的键作为前缀。