最近项目中涉及到了 建行龙支付的问题 于是特意研究了下判断手机是否安装过某个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
![](https://img.haomeiwen.com/i6796505/8d58190e4d65f3a4.png)
//搜索建设银行
![](https://img.haomeiwen.com/i6796505/6981ab924fb8c82e.png)
//下载建设银行
![](https://img.haomeiwen.com/i6796505/1fcc0a1e704cafa9.png)
//下载完成后切换到资料库
![](https://img.haomeiwen.com/i6796505/49a1d6ef3c6eefba.png)
选中右键在finder 中显示
![](https://img.haomeiwen.com/i6796505/dd7f0dae25eb6e05.png)
//把ipa 后缀改为zip
![](https://img.haomeiwen.com/i6796505/a1f4f978f18f8b67.png)
//解压文件并选中
![](https://img.haomeiwen.com/i6796505/48f4783a0e7d32ee.png)
//右键显示包内容 并搜索 info.plist
![](https://img.haomeiwen.com/i6796505/a28048c64f8a122a.png)
//会有三个info.plist 打开第三个 找到bundle_id
![](https://img.haomeiwen.com/i6796505/32e3464b076cbb96.png)
//这样我们就找到了中国建设银行的bundle_id了
网友评论