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

Gau*_*dia 6 ios firebase firebase-dynamic-links

我使用链接https://firebase.google.com/docs/dynamic-links/ios对firebase集成进行了更改,以下是处理URL并将用户导航到相应屏幕的处理.对于低于9.0的iOS版本,调用appdelegate的openURL方法,我可以获取URL.但是对于iOS版本9.0及更高版本,我在app delegate的ContinueUserActivity方法中调用,并且我获得了dynamicLink.url的nil值.

我无法理解为什么我无法获取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);
}
Run Code Online (Sandbox Code Playgroud)

Pra*_*hah 0

我遇到过同样的问题。我收到回调,restorationHandler但在handleUniversalLink回调动态链接错误中两者均为零。花了一些时间后我发现了这个问题。我的深层链接对象在两个单词之间包含空格。

例如: 我的网址是这样的:https://domainname.com/card?title=Blue%20Card。起初它不是URLEncoded来自服务器端。URLEncoded所以,我在传递给对象之前就完成了Firebase Dynamic Link。在我的 iOS 代码中,我必须进行以下更改:

NSString *linkURL = [NSString stringWithFormat:@"%@",dynamicLink.url];
linkURL = [linkURL stringByRemovingPercentEncoding];
Run Code Online (Sandbox Code Playgroud)

现在,我的dynamicLink不为零,我的linkURL字符串给了我深层链接对象。