如何检查iOS设备中是否安装了应用程序?

时间:2014-07-30 09:48:41

标签: ios xcode

我正在做一个iOS应用程序。在那,我有一个UITableView模块。在那个UITableView中,我显示了一些应用程序名称列表。这些名字来自我的服务器。这些是我的公司申请。所以,我不知道有多少应用程序来自服务器。一旦用户点击UITableViewCell,我需要检查该设备上是否已经安装了这些应用程序。如果未安装,用户需要使用该应用的应用商店链接转到appstore。我查了一些教程。他们说,使用网址方案,我们可以做到这一点。但是,我没有为这些网址设置网址,因为这些应用来自服务器。另外,我尝试了以下方法

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/nameOfMyApp"]]; 
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"nameOfMyAppOrurl:"]];

但没有任何帮助我。任何人都可以了解这个问题,如果是这样,请提出宝贵的建议。

4 个答案:

答案 0 :(得分:4)

您需要为列表中的每个应用设置一个App URL scheme,没有其他方法可以检查该应用是否已安装。

我猜你服务器的列表形式将是JSON,如:

{
   "name" : "My Cool APP",
   "scheme" :"mycoolapp:",
   "itunes": "http:///...../"
}

然后做一些像:

    if ([[UIApplication sharedApplication] canOpenURL:scheme]) {
        [[UIApplication sharedApplication]openURL:scheme];
    }
    else {
        [[UIApplication sharedApplication]openURL:itunesURL];
    }

答案 1 :(得分:2)

自定义网址方案是解决此问题的首选方法。您必须知道所有需要检查可用性的应用程序的所有URL方案(这意味着所有应用程序都应配置一个)。对于您的特定情况,您将需要后端支持,即服务器应为每个应用程序提供方案(服务器也应该被告知方案)。

另一个选择是在钥匙串中使用共享数据,有一个answer here about sharing data between apps via keychain。您应该为此考虑一个解决方案,但只要您可以在已知的应用程序组之间共享数据,您就可以在该技术之上实现某些功能。请注意,第二种解决方案要求您拥有所有应用程序(或能够影响其配置)。

答案 2 :(得分:1)

您可以在服务器上注册应用程序的自定义URL方案: https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW50

如果您的应用有方案,则可以使用canOpenURL方法。

答案 3 :(得分:0)

您还可以为公司应用程序分配URL方案,并使用以下代码检查它们是否已安装:

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myAppURLScheme://"]])
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"myAppURLScheme://"]];
}
else
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"App not installed on Device"  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Open link", nil];
    [alert show];
}

同时检查此URL Scheme Tutorial