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的主要内容,如果未能解决你的问题,请参考以下文章
perfect deep learning book link
Expo Magic Link 和 Deep Linking