如何检查特定应用程序是否已安装在 iPhone 设备上?我们怎样才能实现这个任何想法?
问问题
1144 次
4 回答
1
canOpenURL
本质上是检查注册到该特定 URL 方案的应用程序是否已安装,或者换句话说,该应用程序是否存在,如果存在,我们可以打开 URL。
- (BOOL) appExists: (NSURL*)url{
if ([[UIApplication sharedApplication] canOpenURL:url]) {
return YES;
} else {
return NO;
}
}
NSURL *urlApp = [NSURL URLWithString:@"fb://profile/73728918115"];// facebook app
NSURL *urlApp = [NSURL URLWithString: [NSString stringWithFormat:@"%@", @"twitter:///user?screen_name=INNOVA_ET_BELLA"]];//tweeter app
if ([self appExists:urlApp]) {
[[UIApplication sharedApplication] openURL:urlApp];
}
iPhone URL 方案:
http://wiki.akosma.com/IPhone_URL_Schemes
自定义 URL 方案:
http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
于 2012-07-31T09:17:16.630 回答
0
使用下面的代码,您可以检索所有应用程序的列表。
NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSString *sandBoxPath = [bundleRoot stringByDeletingLastPathComponent];
NSString *appFolderPath = [sandBoxPath stringByDeletingLastPathComponent];
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:appFolderPath error:nil];
NSMutableArray *appNames = [[NSMutableArray alloc]init];
for(NSString *application in dirContents)
{
NSString *appPath = [appFolderPath stringByAppendingPathComponent:application];
NSArray *appcontents = [fm contentsOfDirectoryAtPath:appPath error:nil];
NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self ENDSWITH '.app'"];
NSArray *onlyApps = [appcontents filteredArrayUsingPredicate:fltr];
if(onlyApps.count > 0)
[appNames addObject:[onlyApps objectAtIndex:0]];
}
NSLog(@"%@", [appNames description]);
[appNames release];
于 2012-07-31T09:26:08.270 回答
0
如果应用程序有注册的 URL,您可以通过这种方式检查是否存在
[[UIApplication sharedApplication] canOpenURL:url]
URL 类似于skype://
如果没有,您需要循环访问所有文件夹。
此处如何:使用 glob 获取目录中的文件列表
NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:bundleRoot error:nil];
NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self ENDSWITH '.app'"];
NSArray *onlyAPPs = [dirContents filteredArrayUsingPredicate:fltr];
应用程序位于/var/application/APPNAME.app
(如果我没记错的话)。
于 2012-07-31T09:32:22.837 回答
0
这是一个测试是否安装了 facebook 应用程序的示例。
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {
// Facebook app is installed
}
于 2013-01-24T04:30:49.873 回答