Firebase Deep Link Web URL 查询为空 - iOS

Posted

技术标签:

【中文标题】Firebase Deep Link Web URL 查询为空 - iOS【英文标题】:Firebase Deep Link Web URL query is empty - iOS 【发布时间】:2018-10-16 12:57:54 【问题描述】:

我在接收带有新自定义 URL 的 Firebase 动态链接时遇到问题。我创建了一个“abc0.page.link”,我设置了一切以从应用程序的代码中创建它。

但在接收时,我在 LOG 中收到此消息:

[Firebase/Analytics][I-ACS023000] Deep Link Web URL 查询为空

什么都没有发生,处理是假的。

- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
 restorationHandler:
 #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0)
(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler 
#else
    (nonnull void (^)(NSArray *_Nullable))restorationHandler 
#endif  // __IPHONE_12_0
 //(void (^)(NSArray *))restorationHandler 

    NSLog(@"continueUserActivity called, withUser: %@, useractivity: %@, webpageurl: %@", self.user.uid, userActivity, userActivity.webpageURL);
  calledFromURL = YES;
  BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL
                                                          completion:^(FIRDynamicLink * _Nullable dynamicLink,
                                                                       NSError * _Nullable error) 
        NSLog(@"continueUserActivity called");
        if (error) 
            NSLog(@"dynamic link error: %@", error.localizedDescription);
animated:YES completion:nil];
            
            else 

];
return handled;

这里有什么问题?提前谢谢!

【问题讨论】:

这可能是因为您的捆绑包 ID 与 Firebase 认为您的捆绑包 ID 不匹配?如果您使用不同的 ID 进行开发/登台与生产,您可能会看到这一点。 【参考方案1】:

我在动态链接方面遇到了完全相同的问题。 我在我的 Podfile 中使用了这些行:

pod 'Firebase/DynamicLinks'
pod 'Firebase/Analytics'

就像订购的官方 Firebase 教程一样。

但是,我的应用当时仍在使用 pod 'Google/Analytics' pod,它已被弃用,应该切换到 Firebase Analytics。

这个 Google 分析 pod 与 Firebase 的 Pod 有一个共同的依赖关系(如果我没记错的话,“Firebase/Core”),但由于它是一个旧的、已弃用的版本,它的依赖关系必须低于某个版本。 因此,即使我没有在我的 Podfile 中指定 DynamicLinks pod 版本,旧的依赖项也只允许它达到某个版本,比最新版本旧得多。当我尝试按照文档中的建议使用自诊断工具 [0] 时,我发现了这一点,但我的代码找不到该工具。

所以我使用的解决方法是:

从我的 Podfile 中删除 Google/Analytics pod。当我这样做并执行 pod update 时,所有与 Firebase 相关的 pod 都与 CocoaPods 网站 [1] 中的版本相同,即它们是最新的。

我暂时还想使用旧版 Google Analytics,因为我需要动态链接的运行速度比切换到 Firebase Analytics 的速度要快,所以我手动导入 Google Analytics 的静态库 (libGoogleAnalytics.a) 及其标头。那时它工作得很好。由于它不再存在于 Podfile 中,因此我不会自动获取更改,但是,我认为已弃用的 Pod 不会有问题。

如果您的问题确实与此有关,我认为这不是建议的解决方案。您应该尽快使用 Firebase Analytics,因为 Google Analytics for mobile 将于今年 10 月关闭。

我的猜测是,Firebase 函数过去有不同的解析和翻译动态链接的方法,这些方法与今天的控制台生成的链接不兼容,所以它返回一个空的 URL 查询。

[0]-https://firebase.google.com/docs/dynamic-links/debug

[1]-https://cocoapods.org/

【讨论】:

【参考方案2】:

您必须在 info.plist 中设置 FirebaseDynamicLinksCustomDomains

https://firebase.google.com/docs/dynamic-links/custom-domains

【讨论】:

【参考方案3】:

将这些行添加到您的 Info.plist 并确保 URL 必须没有前缀。例如,您的 url 是 https://example.com/profile 那么您应该使用 https://example.com

<key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com</string>
    </array>

https://blog.devgenius.io/firebase-flutter-dynamic-links-step-by-step-guide-630402ee729b

【讨论】:

以上是关于Firebase Deep Link Web URL 查询为空 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

html 在设备上测试RN Deep Link

perfect deep learning book link

Expo Magic Link 和 Deep Linking

使用Android Deep Link的UPI支付网关

使用 DrawerNavigator [React native] 导航到 URL/Deep Link

Android Navigation Url Deep Link Back to Previous App