自定义 URL 方案的问题
Posted
技术标签:
【中文标题】自定义 URL 方案的问题【英文标题】:Issues with custom Url Schemes 【发布时间】:2016-11-30 13:57:16 【问题描述】:我有一个应用,比如说 2 个应用 - app1,app2 假设我从 app1 app2 打开。 如何使用自定义 url 方案从 app2 发回数据,例如在 facebook 应用程序中? 如果我用 url 重新打开 app1,我会看到回到 app2,这对我的情况来说不是一个好主意。 我想以模态方式打开 app2,并用返回的数据将其关闭。这可能吗?
【问题讨论】:
【参考方案1】:您可以从 info.plist 文件中为您的应用定义自定义 URL 架构。您可以为此检查SO 上的现有线程。
在您的情况下,例如在 app1- 定义自定义 url myAppOneScheme
和在您的 app2 中,定义自定义 url myAppTwoScheme
。
当你从 app 1 打开 app2 时,传递 app1 的 url 如下:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"myAppOneScheme://test?callerURL= myAppOneScheme"]];
来自app2,处理openURL方法:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
NSLog(@"url recieved: %@", url);
NSLog(@"query string: %@", [url query]);
NSLog(@"host: %@", [url host]);
NSLog(@"url path: %@", [url path]);
NSDictionary *dict = [self parseQueryString:[url query]];
NSLog(@"query dict: %@", dict);
// NSString callerurl = parse callerURL from query
// store callerurl in user default or global variable.
return YES;
当您在 app2 中完成操作并想返回 app1 时,打开调用方 url
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:"%@//testback?response=%@", caller url , datayouwanttoSendback]]];
现在,在您的 app1 中,再次处理打开 url 方法并解析响应
【讨论】:
好的,在这种情况下,我会看到回到 app1,在 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:"%@//testback?response=%@", caller url , datayouwanttoSendback] 来自 ios 系统 api,就像回到 safari. 对吗? 我希望它像 facebook 从下到上以模态方式打开并像关闭控制器一样关闭以上是关于自定义 URL 方案的问题的主要内容,如果未能解决你的问题,请参考以下文章