2011-08-15 54 views
0

我有几个iOS应用程序,我需要他们知道对方。更确切地说,我需要知道是否已经安装了我的一个应用程序。如何让我的iOS应用程序彼此交谈?

我想过注册一个自定义URL方案(类似于my-app-present://),以便我可以检查自定义方案是否受支持,如果是,我会知道设备上已有一个应用程序。但是这并不奏效,因为这些计划是通过Info.plist注册的,并且该应用程序在它有机会检查其存在之前注册该计划。换句话说,检查总是成功的。

然后我想到了在临时目录中创建一个文件,但NSTemporaryDirectory()在应用程序沙箱中返回一个文件夹,所以这也不起作用。我也考虑过钥匙串,但它看起来像每个应用程序严格分离iOS上的钥匙串。

我不想通过正在运行的应用程序的列表,我不想使用网络。你知道一些其他的技巧吗?

+4

其实很多应用程序可以使用相同的钥匙串,但只有当他们有SAM **捆绑种子ID **,你在**的iOS Provisioning Portal中给了他们**时创造新的**应用程序ID **。这只是P.S.,因为您已经从@jtbandes为您的问题提供了解决方案。 –

回答

2

只要您对每个应用程序有不同的方案,例如my-app-1://my-app-2://,自定义URL方案方法听起来都很好。然后(我认为这是您已经知道的),您可以使用canOpenURL:来检查URL是否可以被处理(即您的应用程序已安装)。

+0

这实际上是大多数应用程序所需要的,他们需要这种互操作性。 –

+0

谢谢(+1)。我想到了这一点,但我已经因为滥用一个URL方案而感到尴尬,更不用说其中的几个了。但更糟糕的是,当我发布一个新的应用程序时,我将不得不更新所有应用程序中的逻辑,对吧? – zoul

+0

是的,如果您的所有应用都需要了解*所有*您的其他应用。如果是这样的话,也许你可以将所有的URL方案存储在服务器上并动态加载它们? – jtbandes

0

如果通过“互相交谈”,你意味着你只是想检测是否安装了其他应用程序,那么iHasApp是一个开源的iOS框架可以派上用场。我还没有用过它。但从描述来看,它似乎是一个不错的选择。

http://www.ihasapp.com/documentation/Classes/iHasApp.html

+1

iHasApp已不再符合App Store –

+1

相关提示。谢谢! –

相关问题