我写了两个应用程序,我需要它们之间的交互。我的意思是,在第一个应用程序中,有一个视图,您需要添加一个数字。但如果你不想写下来,另一个应用程序会为你生成它。所以我需要第二个应用程序生成的数字,并用它填充视图。
我读了很多关于这个主题的内容,我知道我必须使用自定义URL方案。一篇关于此的好文章,例如:link。所以,如果我理解,我需要定义这样的方案:
在第一个应用中:
在第二个应用中:
然后在第一个应用程序中,例如在按钮的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检索号码?
答案 0 :(得分:1)
在iOS4.2中可用,使用方案将数据从一个应用程序传递到另一个应用程序,您可以使用UIApplicationDelegate
协议方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
从文档中,annotation
是:
源应用程序提供的属性列表对象,用于将信息传递给接收应用程序。
编辑:事实证明你可以在iOS 3.2下使用注释; application:DidFinishLaunchingWithOptions:
允许选项字典中的注释键。
答案 1 :(得分:0)
为获得最大兼容性(iOS 3+),是的,您必须再次使用openURL,将该号码作为URL参数传回。要重用系统提供的URL解析代码,请确保您的URL格式遵循HTTP模板:
模式://有点 - 主机/有点儿-路径参数
考虑使用kinda-host作为命令代码并将数据作为路径和/或参数传递;这样,您可以扩展通信协议,而无需引入额外的URL方案。
是的,这很难看。这就是iOS。