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

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

include <objc/runtime.h>

添加如下方法
+(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

D058A4A3-5C46-461F-B79F-F8BD96DEDCFE.png

//搜索建设银行

9C4A8C5B-A9BC-4C0E-A5FE-9944FD6907C8.png

//下载建设银行

0F4E88D1-5836-4A39-90C4-26F4FB663549.png

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

87146D2F-B915-4667-9E2B-039EA66FAD13.png

选中右键在finder 中显示

CA33F39B-97C3-46A4-9AC0-5517AFAC015E.png

//把ipa 后缀改为zip


B06EB747-CEE8-471A-A1E3-01BBEA96EA09.png

//解压文件并选中

031C586A-AA67-4224-A4B7-CD34EE7030B0.png

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


431293C4-BCC4-4A08-AAFE-2E3FAF4D28AC.png

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

73305285-2717-4AE9-B8F2-25475DB221DC.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 14,168评论 3 42
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,890评论 0 9
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,744评论 4 61
  • 前几天开发一个视频处理相关的App,发现一个莫名其妙的问题,代码检查了很长时间也没发现问题所在,问题描述如下,需求...
    targe阅读 4,734评论 1 0
  • 文/子诺不离 身处信息时代,“忙”和“没时间”是大家的一个普遍感觉。可是,你有没有停下来想过,这样的忙,是不是都有...
    子诺不离阅读 12,099评论 22 233

友情链接更多精彩内容