ios判断手机中是否安装了某个App

1.获取手机中安装的所有App
1.1.runtime中的方法,所以要导入
#include
1.2.在 AppDelegate.m文件中的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中:
Class LSApplicationWorkspace_class = objc_getClass ( "LSApplicationWorkspace" );
 NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
 NSArray *allApplications = [workspace performSelector:@selector(allApplications)];//这样就能获取到手机中安装的所有App
打印出来是这样的:
2016-06-01 11:11:41.540 jqb[7537:2410265] app = com.apple.mobilesms.notification
2016-06-01 11:11:41.541 jqb[7537:2410265] app = com.apple.mobilesms.compose
2016-06-01 11:11:41.541 jqb[7537:2410265] app = com.apple.Fitness
2016-06-01 11:11:41.541 jqb[7537:2410265] app = com.apple.Home.HomeUIService
2016-06-01 11:11:41.541 jqb[7537:2410265] app = com.apple.StoreDemoViewService
2016-06-01 11:11:41.541 jqb[7537:2410265] app = com.apple.videos
2016-06-01 11:11:41.541 jqb[7537:2410265] app = com.apple.social.SLGoogleAuth
2016-06-01 11:11:41.542 jqb[7537:2410265] app = com.apple.mobileslideshow
2016-06-01 11:11:41.542 jqb[7537:2410265] app = com.apple.Health
2016-06-01 11:11:41.542 jqb[7537:2410265] app = com.apple.news
2016-06-01 11:11:41.542 jqb[7537:2410265] app = com.apple.AccountAuthenticationDialog
2016-06-01 11:11:41.542 jqb[7537:2410265] app = com.apple.purplebuddy
2016-06-01 11:11:41.542 jqb[7537:2410265] app = com.apple.social.SLYahooAuth
2016-06-01 11:11:41.542 jqb[7537:2410265] app = com.apple.AdSheetPhone
2016-06-01 11:11:41.542 jqb[7537:2410265] app = com.apple.Diagnostics

2.判断手机中是否安装了某个App
这就需要对我们获取到的allApplications做一下处理,这个数组中装的并不是常规的字符串,我们可以从打印结果看出,是一个LSApplicationProxy类型的,我们要把这个转换成字符串,而且我们可以从打印结果看出,这个字符串中不只包含了App的bundle ID,还包含了安装的路径,因为这个路径不唯一不确定,我们判断是否安装了某个App只需判断这个字符串中的 bundle ID,所有我们还要对字符串做处理。

NSInteger  zlConnt = 0 ;
for ( NSString *appStr in allApplications) {

        NSString *app = [ NSString stringWithFormat:@"%@",appStr];//转换成字符串 


        NSRange range = [app rangeOfString:@"org.ios.appprojuct.jqb”];//是否包含这个 bundle ID
       
       
if (range. length > 1 ) {
           
            zlConnt ++;
        }
       
    }
   
    if (zlConnt >= 1) {
       
       
NSLog ( @" 已安装金钱豹 org.ios.appprojuct.jqb" );
       
    }
     

你可能感兴趣的:(技术分享)