5

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

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

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

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

这是在传递给 application:openURL 之前传递给 dynamicLinkFromCustomSchemeURL 的 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 到达零。任何帮助表示赞赏。

4

5 回答 5

6

我遇到过同样的问题。我得到了restoreHandler的回调,但在handleUniversalLink回调中动态链接和错误都为零。花了一些时间后,我发现了我的问题。

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

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

你在笔记中写了https://xzz6b.app.goo.gl/0ewv并点击它。它会加载你的应用程序,甚至给你restoreHandler的回调,动态链接将为零。

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

希望它可以帮助任何人。

于 2017-03-01T08:14:24.703 回答
4

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

  1. 如果您的application:openURL方法被调用,并且
  2. 您似乎确实dynamicLink从您的方法中获得了一个有效的对象dynamicLinkFromCustomSchemeURL,但是
  3. urldynamicLink 对象的参数为 nil

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

于 2016-08-26T01:04:44.677 回答
1

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

于 2021-07-29T03:18:58.657 回答
0

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

于 2020-04-08T11:57:18.640 回答
0

我遇到了同样的问题。

解决方案:

来自文档

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

所以你必须检查这一步

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

于 2020-03-09T05:44:37.773 回答