有没有办法找出是否已安装iPhone / iPad应用程序?

时间:2010-06-03 19:09:27

标签: iphone ipad

我正在编写应用程序的免费软件版本,并希望检查用户是否已安装了不自由版本,并打印一条消息,其内容以安装检查结果为条件...任何人都知道这是否有用有可能吗?

我最接近解决方案的是使用带有kCFPreferencesAnyUser / kCFPreferencesCurrentHost配对的CFPreferencesSetValue API ...我没有尝试过,但根据文档听起来可能。

然而,在我目前的具体情况下,这个API将无法解决我的问题,因为我想检查我4个月前写的没有写任何数据到CFPrefs注册表的app的存在...因为当时我不知道它也没有预见到这种情况...... CFPrefs可以帮助我的唯一方法就是在我知道它存在的未来应用中:)

所以我想知道是否有其他方法可以做到这一点?任何帮助将不胜感激:)

5 个答案:

答案 0 :(得分:6)

您可以为现有应用程序注册自定义URL方案,然后在新应用程序中调用canOpenURL以检测是否已安装该应用程序。

答案 1 :(得分:3)

根据this answer,如果您拥有相同的顶级应用ID,则可以访问其他应用的数据区域。我相信外卡应用ID也可以共享数据,请参阅provisioning portal docs

答案 2 :(得分:0)

您可以通过钥匙串在应用程序之间共享数据。在完整的应用程序中写入数据并从免费应用程序中检查,反之亦然。

答案 3 :(得分:0)

我发现这个问题几个月后我一直在研究这个话题。

没有可靠的方法可以检测设备中安装的所有未被监禁的应用。 为了做到这一点,我用了这句话。

if( [[UIApplication SharedApplication] canOpenURL:(the apps scheme)] )
{
NSLog(@"App found");
}

您可以在以下网站中找到方案列表。

这个也有一个json api。

http://schemes.zwapp.com/

http://schemes.zwapp.com/.json?page=1http://schemes.zwapp.com/.json?page=470递增。

这个有非常着名的应用程序方案和使用示例

http://handleopenurl.com/

更好的方式来研究它

https://github.com/danielamitay/iHasApp

答案 4 :(得分:-1)

抱歉,不,应用程序无法找到有关iPhone中安装的任何其他应用程序的信息(没有越狱)。 Apple故意对应用程序进行沙盒处理,使它们完全隔离。

您可以做的最好的事情(将来)是注册一个URL处理程序,它将启动您的其他应用程序,然后使用参数重新启动您当前的应用程序。

-Dan