如何在两个应用之间进行通信

时间:2010-12-16 12:57:37

标签: iphone objective-c cocoa xcode messaging

我有两个应用程序(一个实际上是一个Preference Pane),我需要它们进行通信;更确切地说,如果应用程序正在运行,我需要首选项窗格向应用程序询问信息。所以我需要:
-(BOOL) isApplicationRunning:(NSString*)pathToApplication;
-(NSDictionary*) returnSomeDInfoForMe:(NSString*)pathToApplication;

关于如何做到这一点的任何想法?

TIA,Oren

6 个答案:

答案 0 :(得分:2)

尝试使用NSDistributedNotificationCenter - 使用它可以在两个应用之间发送字典

答案 1 :(得分:0)

您无法从另一个访问一个应用数据。您可以在后台运行服务器时与服务器通信,然后将其用作中间人,但这将是一个非常糟糕的工作!

答案 2 :(得分:0)

如果只是找出某个应用是否正在运行:

:< 10.6 NSWorkspace - > launchedApplications

:> 10.6 NSRunningApplication - > runningApplication

当然是在Mac上。

使用IOS,我可能会手动执行并使用NSNotificationCenter。即当pref-pane想要检查应用程序是否正在运行时,在某处写一个状态文件,注意应用程序正在运行。如果应用程序没有响应通知,则状态文件不会被写入,因此您可以假设它未运行。

答案 3 :(得分:0)

具有相同捆绑标识符的iPhone应用程序可以访问sMe钥匙串。因此,您可以将app1中的数据写入钥匙串,然后从app2访问它。您需要通过使用正确的uiapplication委托方法对钥匙串进行智能更新以保留其他应用程序打开时的标志,但应该可以。

请注意,钥匙串是键值存储,不适用于较大的复杂数据。为此,您应该使用服务器 - 客户端结构。

对钥匙串文档的引用:

http://developer.apple.com/library/mac/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html

答案 4 :(得分:0)

您应该使用自定义URL方案方法。 Here's a tutorial.

简短版本:您的应用程序可以使用自定义网址互相呼叫。 URL可以像任何其他URL一样携带查询字符串参数,因此您可以传递自己的状态字符串或简短命令等。

答案 5 :(得分:0)