【发布时间】:2016-11-30 13:57:16
【问题描述】:
我有一个应用,比如说 2 个应用 - app1,app2 假设我从 app1 app2 打开。 如何使用自定义 url 方案从 app2 发回数据,例如在 facebook 应用程序中? 如果我用 url 重新打开 app1,我会看到回到 app2,这对我的情况来说不是一个好主意。 我想以模态方式打开 app2,并用返回的数据将其关闭。这可能吗?
【问题讨论】:
标签: ios
我有一个应用,比如说 2 个应用 - app1,app2 假设我从 app1 app2 打开。 如何使用自定义 url 方案从 app2 发回数据,例如在 facebook 应用程序中? 如果我用 url 重新打开 app1,我会看到回到 app2,这对我的情况来说不是一个好主意。 我想以模态方式打开 app2,并用返回的数据将其关闭。这可能吗?
【问题讨论】:
标签: ios
您可以从 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 方法并解析响应
【讨论】: