【问题标题】:Objective C retrieve data from another applicationObjective C 从另一个应用程序检索数据
【发布时间】:2011-04-14 12:36:56
【问题描述】:

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

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

在第一个应用程序中:

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

在第二个应用中:

  • 网址标识符: 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 检索号码?

【问题讨论】:

  • @Andreas:[cocoa] 标签适用于 Mac OS X。对于 iOS,请改用 [cocoa-touch]。
  • @Bavarious:看不到问题中提到的 ios(仅)。它适用于两者,所以添加两个标签?另外:删除 Objective-C 标签? API 不是“严格”的语言绑定?!
  • @Andreas 有时答案确实适用于两个平台,我同意。但在这种情况下,UIApplication 绝对是 iOS,Mac OS X 中的进程间/应用程序间通信允许出现一系列不适用于 iOS 的不同答案。

标签: objective-c cocoa-touch ios interaction openurl


【解决方案1】:

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

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

从文档中,annotation 是:

由源应用程序提供的一个属性列表对象,用于与接收应用程序通信。

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

【讨论】:

    【解决方案2】:

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

    schema://kinda-host/kinda-path?params

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

    是的,这很难看。 iOS 就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 2019-02-14
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多