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