自定义Url方案的问题

时间:2016-11-30 13:57:17

标签: ios

我有一个应用程序可以说2个应用程序 - app1,app2 让我们说我从app1 app2打开。 如何使用自定义网址方案从app2发回数据,例如在Facebook应用中? 如果我用url重新打开app1,我会看到回到app2,对我的情况不太好。 我想以模态方式打开app2,并将其与返回的数据一起解除。是否可能?

1 个答案:

答案 0 :(得分:1)

您可以从info.plist文件为您的应用定义自定义网址架构。你可以检查SO上的现有线程。

在您的情况下,例如在app1中定义自定义网址myAppOneScheme,在您的app2中,定义自定义网址myAppTwoScheme

当您从应用1打开app2时,请按照以下方式传递app1的网址:

[[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时,请打开来电者网址

  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:"%@//testback?response=%@", caller url , datayouwanttoSendback]]];

现在,在你的app1中,再次处理open url方法并解析响应