iOS判断手机中是否安装过某个app

最近项目中涉及到了 建行龙支付的问题 于是特意研究了下判断手机是否安装过某个app
主要有这个方法
步骤一: 获取iOS设备上所有已经安装的app
导入运行时头文件

include

添加如下方法
+(BOOL)checkInstalledApp:(NSString)app_id
{
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject
workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
NSArray *allApplications = [workspace performSelector:@selector(allApplications)];//这样就能获取到手机中安装的所有App

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

    NSString *app = [NSString stringWithFormat:@"%@",appStr];//转换成字符串
    NSRange range = [app rangeOfString:app_id];
         //是否包含这个bundle ID
         if (range.length > 1) {
             zlConnt ++;
         }
         }
         if (zlConnt >= 1) {
             NSLog(@"已安装");

             return YES;
             
         }
return b;

}

//调用的时候传入对应的bundle_id 就好了

   NSString* app_id=@"com.ccb.ccbDemo";//建设银行的bundle_id也可以以其他的来实验
   //FetchDataHelper 是一个自定义的类
    BOOL b= [FetchDataHelper  checkInstalledApp:app_id];
   if (b) {
       //已安装
       DDLog(@"--安装建行");

   }else
   {
       NSLog(@"--3333没安装建行");
      //建行支付

  }

运行结果是准确的,本人亲自试验过.
ps(补充下) 苹果貌似禁用了 LSApplicationWorkspace defaultWorkspace 等方法 这个方法仅做参考 上线会被拒绝掉 ,本人多么痛的领悟.......
----------------------我是华丽的分割线------------更新----------------------------
补充一个打开其他app的方法
通过urlSchemes 打开其他app (前提是要知道该app 的 urlSchemes )

另外关于如何获取bundle_id的方法也简单说一下.

在iOS系统中,IPA文件指的是iphone Application,IPA文件实质上是一个zip压缩包,我们在iOS系统上使用的软件,最初下载的都是IPA文件.
第一步:真机连接电脑,打开itunes

iOS判断手机中是否安装过某个app_第1张图片
D058A4A3-5C46-461F-B79F-F8BD96DEDCFE.png

//搜索建设银行

iOS判断手机中是否安装过某个app_第2张图片
9C4A8C5B-A9BC-4C0E-A5FE-9944FD6907C8.png

//下载建设银行

iOS判断手机中是否安装过某个app_第3张图片
0F4E88D1-5836-4A39-90C4-26F4FB663549.png

//下载完成后切换到资料库

iOS判断手机中是否安装过某个app_第4张图片
87146D2F-B915-4667-9E2B-039EA66FAD13.png

选中右键在finder 中显示

iOS判断手机中是否安装过某个app_第5张图片
CA33F39B-97C3-46A4-9AC0-5517AFAC015E.png

//把ipa 后缀改为zip


iOS判断手机中是否安装过某个app_第6张图片
B06EB747-CEE8-471A-A1E3-01BBEA96EA09.png

//解压文件并选中

iOS判断手机中是否安装过某个app_第7张图片
031C586A-AA67-4224-A4B7-CD34EE7030B0.png

//右键显示包内容 并搜索 info.plist


iOS判断手机中是否安装过某个app_第8张图片
431293C4-BCC4-4A08-AAFE-2E3FAF4D28AC.png

//会有三个info.plist 打开第三个 找到bundle_id

iOS判断手机中是否安装过某个app_第9张图片
73305285-2717-4AE9-B8F2-25475DB221DC.png

//这样我们就找到了中国建设银行的bundle_id了

你可能感兴趣的:(iOS判断手机中是否安装过某个app)