Firebase dynamic linking - Continueuseractivity not returning dynamic link url

我是研究僧i 提交于 2019-12-24 01:19:09

问题


My requirement is to handle universal links on the iOS application. But the dynamic link.url seems to be returning an error as below -

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

When i click on a dynamic link (https://****.app.goo.gl/****) from the notes app, my ios app will be directed to the following callback -> In this function i have the following code -

- (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;
}

}

I have followed the firebase documentation correctly. Please suggest what is going wrong here?


回答1:


I also met this issue. handleUniversalLink() returned always false. In my case my link parameter contained not just a URL but also parameters. So the final dynamic link got two question marks in it.

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

If I escape the inner URL (link parameter) with percent escapes, it works fine.

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




回答2:


Try this one.

- (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;
}



回答3:


I was able to get the dynamic link url value. There was an additional check in my code as below -

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

}

Because of this check, the URL scheme was never getting initialised and hence was erroring out.

The code that i have posted above should return the right dynamic link url.

Thanks.



来源:https://stackoverflow.com/questions/39657454/firebase-dynamic-linking-continueuseractivity-not-returning-dynamic-link-url

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!