应用程序使用自定义URL方案启动完成后如何将数据返回到调用应用程序?

时间:2013-10-10 23:59:01

标签: ios

我正在我的大学学习一门Android编程课程我只有老师允许我做IOS,但我必须实施相同的项目。这个项目有两个应用程序。第一个应用程序是之前作业中的颜色选择器。第二个应用程序是调用颜色选择器并允许用户选择颜色,完成后返回第二个应用程序进行显示。

我在ColorPicker中定义了一个自定义URL方案,效果很好。在我的第二个应用程序中,我有一个changeColor按钮,它具有以下IBAction方法。

- (IBAction)colorChangePressed:(UIButton *)sender {

    UIApplication *test = [ UIApplication sharedApplication ];    
    BOOL found =
    [ test openURL:[ NSURL URLWithString:@"colorPicker://" ] ];

    if (found) NSLog( @"Resource was found" );

    else NSLog(@"unable to locate resource" );
}

这确实启动了颜色选择器应用程序,它的行为与预期一致。我的问题是,在选择了颜色之后,我如何返回具有所选颜色的调用应用程序?我将在我的colorPicker中添加一个完成的按钮,当用户选择颜色时我会点击它,我将捕获我需要的值,但我无法弄清楚如何将这些数据恢复到调用应用程序。我需要实现一些协议/委托模式吗?

完整的代码在git hub上。 https://github.com/jnels124/CS390H

提前感谢有关如何解决问题的任何见解。

2 个答案:

答案 0 :(得分:2)

您需要拥有两个具有独特方案的应用。对app1的方案进行编码,并将其用作app1->app2网址的一部分。完成app2后,您将拥有app2->app1网址,使用该网址打开app1并向其发送所需信息(已编码)。

它类似于你将app2 Intent的字符串额外添加到app1 Intent的名称,但是您使用URL而不是Intent,并根据需要对其进行解析。

答案 1 :(得分:0)

我在第一个答案中所述的另一个项目中定义了一个自定义方案,但我不确定如何在被调用的URL中生成查询字符串并将其返回给要解析的调用应用程序。我在下面的帖子中解决了这个问题。

Syntax for passing NSArray to other application with custom URL Scheme