【问题标题】:Firebase dynamic linking - Continueuseractivity not returning dynamic link urlFirebase动态链接-Continueuseractivity不返回动态链接网址
【发布时间】:2016-09-23 09:36:09
【问题描述】:

我的要求是处理 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 文档。请提出这里出了什么问题?

【问题讨论】:

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


    【解决方案1】:

    我也遇到了这个问题。 handleUniversalLink() 总是返回错误。就我而言,我的链接参数不仅包含 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

    【讨论】:

    • 我正在尝试获取动态链接,但 handleuniversallink() 总是返回 false 并且也没有进入闭包。
    【解决方案2】:

    试试这个。

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

    【讨论】:

    • 我试过了,我得到的是 myappid://google/link/ 而不是长动态链接,它不返回动态链接 url 的任何原因。谢谢
    • 您可以在块 url 中获得长动态链接,我在“消息”字符串中格式化。
    • 我可以在块部分获得我的长动态链接。
    • 尝试将与我的答案相同的代码放在不做任何更改的情况下。
    • 感谢您的意见,Aklesh。但是我的“url”为空。而是得到一个 NSError 的错误。
    【解决方案3】:

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

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

    }

    由于此检查,URL 方案从未被初始化,因此出错。

    我在上面发布的代码应该返回正确的动态链接 url。

    谢谢。

    【讨论】:

    • 感谢您的留言。但是这个已经在 firebase deeplink 演示中可用,我集成了它。可能是你不是这就是你面临错误的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多