1

我写了两个应用程序,我需要它们之间的交互。我的意思是,在第一个应用程序中,有一个视图,您需要在其中添加一个数字。但是,如果您不想写下来,其他应用程序会为您生成它。所以我需要第二个应用程序生成的数字,并用它填充视图。

我读了很多关于这个主题的文章,我知道我必须使用自定义 URL 方案。例如一篇关于此的好文章:链接。因此,如果我理解,我需要定义这样的方案:

在第一个应用程序中:

  • URL 标识符:com.mycompany.myfirstapp
  • URL Schemes 第一项:myFirstApp

在第二个应用程序中:

  • URL 标识符:com.mycompany.mysecondapp
  • URL Schemes 第一项:mySecondApp

然后在第一个应用程序中,例如在按钮的 IBAction 中:

[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mySecondApp://pleaseGenerateNumber"]];

在第二个应用程序中,我必须实现

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法和

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

方法。然后解析 URL,并进行数字生成。但问题就在这里。我怎样才能“告诉”第一个应用程序第一个应用程序生成的数字?我必须再次使用 openURL,并通过 URL 检索号码?

4

2 回答 2

1

在 iOS4.2 中可用,要使用方案将数据从一个应用程序传递到另一个应用程序,您可以使用UIApplicationDelegate协议方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
       sourceApplication:(NSString *)sourceApplication 
       annotation:(id)annotation

从文档中,annotation是:

由源应用程序提供的属性列表对象,用于将信息传递给接收应用程序。

编辑:原来你可以在 iOS 3.2 下使用注解;application:DidFinishLaunchingWithOptions:允许选项字典中的注释键。

于 2011-04-14T14:21:34.583 回答
0

为了获得最大的兼容性(iOS 3+),是的,您必须再次使用 openURL,将数字作为 URL 参数传回。要重用系统提供的 URL 解析代码,请确保您的 URL 格式遵循 HTTP 模板:

架构://kinda-host/kinda-path?params

考虑使用 kinda-host 作为命令代码并将数据作为路径和/或参数传递;这样您就可以扩展您的通信协议,而无需引入额外的 URL 方案。

是的,这很丑陋。这就是iOS。

于 2011-04-14T14:31:50.247 回答