我正在编写应用程序的免费软件版本,并希望检查用户是否已安装了不自由版本,并打印一条消息,其内容以安装检查结果为条件...任何人都知道这是否有用有可能吗?
我最接近解决方案的是使用带有kCFPreferencesAnyUser / kCFPreferencesCurrentHost配对的CFPreferencesSetValue API ...我没有尝试过,但根据文档听起来可能。
然而,在我目前的具体情况下,这个API将无法解决我的问题,因为我想检查我4个月前写的没有写任何数据到CFPrefs注册表的app的存在...因为当时我不知道它也没有预见到这种情况...... CFPrefs可以帮助我的唯一方法就是在我知道它存在的未来应用中:)
所以我想知道是否有其他方法可以做到这一点?任何帮助将不胜感激:)
答案 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/.json?page=1以http://schemes.zwapp.com/.json?page=470递增。
这个有非常着名的应用程序方案和使用示例
更好的方式来研究它
答案 4 :(得分:-1)
抱歉,不,应用程序无法找到有关iPhone中安装的任何其他应用程序的信息(没有越狱)。 Apple故意对应用程序进行沙盒处理,使它们完全隔离。
您可以做的最好的事情(将来)是注册一个URL处理程序,它将启动您的其他应用程序,然后使用参数重新启动您当前的应用程序。
-Dan