针对iOS 9.0及更高版本的Firebase动态链接无法使用对象FIRDynamicLink对象获取URL。它给出零值

问题描述:

我已经做了更改的火力点集成使用链接https://firebase.google.com/docs/dynamic-links/ios下面是处理完成处理URL和导航到各自的屏幕。对于低于9.0的iOS版本,appdelegate的openURL方法被调用,我可以获取URL。但对于iOS 9.0及以上版本,我正在调用应用程序委托的ContinueUserActivity方法,并且我获取了无值的dynamicLink.url。针对iOS 9.0及更高版本的Firebase动态链接无法使用对象FIRDynamicLink对象获取URL。它给出零值

我无法理解我无法获取该网址的原因。

- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler { 
     NSLog(@"Short URl : %@",userActivity.webpageURL); 
     __weak AppDelegate *weakSelf = self; 
     BOOL handled = [[FIRDynamicLinks dynamicLinks] 
       handleUniversalLink:userActivity.webpageURL 
        completion:^(FIRDynamicLink * _Nullable dynamicLink, 
           NSError * _Nullable error) { 
         AppDelegate *strongSelf = weakSelf; 
         [strongSelf handleReceivedLink:dynamicLink]; 
        }]; 
return handled; 
} 
-(void)handleReceivedLink:(FIRDynamicLink*)dynamicLink{ 
    NSString* urlString = [NSString stringWithFormat:@"%@",dynamicLink.url]; 
    NSLog(@"Extended URL : %@",urlString); 
} 
+0

我遇到同样的问题。我能缩小到我的自定义参数中有20个字符。出于某种奇怪的原因,如果我用%2520替换它,它工作正常。我认为这是一个错误。 – HeavenlyManBR

+0

HeavenlyManBR是它的一个bug。你要更换哪个参数?你能否详细说明解决方案。 –

+0

例如,在我的链接中,我提供了一个自定义参数'''https://domain.com/card?title= [sometitle]''';如果我将更多的一个单词传递给标题,例如“Blue Card”,并对其进行编码,它将成为'''https://domain.com/card?title = Blue%20Card'''。问题是“handleUniversalLink”将无法处理网址,并且不会给出错误;如果我手动更换了%20 wth%2520,它就会起作用。总结一下,检查你是否传递任何参数与空白。再次,这不是一个解决方案,而是分享我发现的,因为它可以帮助你调试你的问题。 – HeavenlyManBR

我有同样的问题。我得到回调restorationHandler,但在handleUniversalLink回调dynamiclink错误都是零。花了一些时间后,我发现这个问题。我的深层链接对象包含两个词之间的空格。

例如: 我的网址是这样的:https://domainname.com/card?title=Blue%20Card。 起初它从服务器端不是URLEncoded。因此,我在将它传递给Firebase Dynamic Link对象之前将它制作为URLEncoded。 在我的iOS的代码,我不得不做出改变如下:

NSString *linkURL = [NSString stringWithFormat:@"%@",dynamicLink.url]; 
linkURL = [linkURL stringByRemovingPercentEncoding]; 

现在,我dynamicLink不是零和我linkURL串给了我深深的链接对象。