Firebase动态链接 - Continueuseractivity不返回动态链接URL

时间:2016-09-23 09:36:09

标签: objective-c firebase firebase-dynamic-links

我的要求是处理iOS应用程序上的通用链接。但动态link.url似乎正在返回如下错误 -

"@"error" : @"unauthorized user: username=social-app-invite methodName=/FirebaseLookupService.LookupAppsSummary protocol=loas securityLevel=integritY"

当我点击笔记应用程序中的动态链接(https://****.app.goo.gl/****)时,我的ios应用程序将转到以下回调 - > 在这个函数中,我有以下代码 -

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
{
NSURL *incomingURL = userActivity.webpageURL;
if(incomingURL){
    BOOL handled = [[FIRDynamicLinks dynamicLinks]
                    handleUniversalLink:incomingURL
                    completion:^(FIRDynamicLink * _Nullable dynamicLink,
                                 NSError * _Nullable error) {
                        if (dynamicLink.url){`
                           **HANDLE THE DYNAMIC LINK HERE**
                        }else{
                           **CODE IS RETURNING ERROR** NSLog(@"error %@",error);
                        }
                    }];
    return handled;
}else{
    return false;
}

}

我已正确遵循firebase文档。请告诉我这里出了什么问题?

3 个答案:

答案 0 :(得分:0)

试试这个。

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
{
    NSURL *url = userActivity.webpageURL;


    FIRDynamicLinks *links = [FIRDynamicLinks dynamicLinks];
    if([links matchesShortLinkFormat:url])
    {
        [links resolveShortLink:url completion:^(NSURL * _Nullable url, NSError * _Nullable error)
        {
                NSString *message =
                [NSString stringWithFormat:@"Deep link  \n:%@",
                 url];

                [[[UIAlertView alloc] initWithTitle:@"Deep-link Data"
                                            message:message
                                           delegate:nil
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil] show];



        }];

        return YES;
    }
 return false;
}

答案 1 :(得分:0)

我能够获得动态链接网址值。我的代码中有一个额外的检查,如下所示 -

if (launchOptions != nil) {
[FIROptions defaultOptions].deepLinkURLScheme = URL_SCHEME;

}

由于这项检查,URL方案从未初始化,因此错误输出。

我上面发布的代码应返回正确的动态链接网址。

感谢。

答案 2 :(得分:0)

我也遇到过这个问题。 handleUniversalLink()总是返回false。在我的例子中,我的链接参数不仅包含URL,还包含参数。所以最终的动态链接中有两个问号。

https://app-id.app.goo.gl/?link=https://www.domain.com/resource?someParam=someValue&ibi=com.domain.appname

如果我使用百分比转义符转义内部URL(链接参数),它可以正常工作。

https://app-id.app.goo.gl/?link=https%3A%2F%2Fwww.domain.com%2Fresource%3FsomeParam%3DsomeValue&ibi=com.domain.appname