未启动应用程序时 Firebase 动态链接不起作用
Posted
技术标签:
【中文标题】未启动应用程序时 Firebase 动态链接不起作用【英文标题】:Firebase Dynamic Links not working when the application is not launched 【发布时间】:2020-04-02 05:46:14 【问题描述】:当应用程序在后台运行时,它运行良好。但是,当应用程序已安装但当时未启动时,它只是打开应用程序而不是重定向到相应的屏幕。请帮助我摆脱这种情况ios部署目标是iOS9.3。我在iPhone7 iOS 13.4上运行该应用程序。这是我的代码:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
if (dynamicLink != nil)
[self handleIncomingDynamicLink:dynamicLink];
return YES;
return FALSE;
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler
NSURL *incomingURL = userActivity.webpageURL;
if (incomingURL)
NSLog(@"Incoming URL is %@:", incomingURL);
BOOL linkHandled = [[FIRDynamicLinks dynamicLinks]handleUniversalLink:incomingURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error)
if (error != nil)
NSLog(@"Found an error: \(error?.localizedDescription ?? nil)");
return ;
else
if (dynamicLink)
[self handleIncomingDynamicLink:dynamicLink];
else
];
if (linkHandled)
return true;
else
// if handling universal link from any other resources. May be do other things from the incoming url
return false;
return false;
【问题讨论】:
这里为什么是目标c? 对不起,我的错。更正。你现在能帮帮我吗? 【参考方案1】:深层链接实现 - 您应该在 handleDynamicLink 方法中处理导航。
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)
if let url = dynamicLink.url
handleDynamicLink(dynamicLink)
return true
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool
guard let incomingUrl = userActivity.webpageURL else return false
let links = DynamicLinks.dynamicLinks()
let handled = links.handleUniversalLink(incomingUrl) (dynamicLink, error) in
if let url = dynamicLink?.url
handleDynamicLink(dynamicLink)
return handled
【讨论】:
我已经做到了。应用程序未启动时会发生什么?这两种方法中的任何一种都不会触发。这是我的担心。请指教。 您是否在安装应用程序但未启动后再次点击链接检查? 你能不能只调试 firebase 深度链接,只需在你的深度链接末尾添加“?d=1”。示例“example.page.link/suffix?d=1”以上是关于未启动应用程序时 Firebase 动态链接不起作用的主要内容,如果未能解决你的问题,请参考以下文章
冷启动 iOS 14 时未处理 iOS Firebase 动态链接
应用不在后台时无法识别 Firebase 动态链接 (iOS)