ios-判断手机上是否安装了某个App
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
NSArray *allApplications = [workspace performSelector:@selector(allApplications)];//这样就能获取到手机中安装的所有App
NSLog(@"设备上安装的所有app:%@",allApplications);
app = <LSApplicationProxy: 0x1566a5850> com.apple.mobilesms.compose <file:///Applications/MessagesViewService.app>
app = <LSApplicationProxy: 0x1566a60e0> com.apple.Fitness <file:///Applications/Fitness.app>
app = <LSApplicationProxy: 0x1566a6790> com.apple.Home.HomeUIService <file:///Applications/HomeUIService.app>
app = <LSApplicationProxy: 0x1566a6d60> com.apple.StoreDemoViewService <file:///Applications/StoreDemoViewService.app>
app = <LSApplicationProxy: 0x1566a7240> com.apple.videos <file:///Applications/Videos.app>
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(@"已经安装");
}
使用上述方式,首先要先知晓目标App的bundle ID。查bundle ID方法的是下载目标App的ipa安装包,将.ipa改成.zip,然后右键显示包内容,查找到info.plist文件,打开找到Bundle identifier对应的value值就是bundle ID了。
缺点:方法一消耗一定的性能(手机安装APP比较多的话),APP审核有可能被拒
优点:跳过了ios9.0对canOpenURL这个API使用限制
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"IOSDevApp://"]]){
//说明此设备有安装app
}else{
//说明此设备没有安装app
};
这个方法简单高效,也有使用前提,需要提前知晓目标APP的URL Schemes ,这个URL Schemes 查找方式跟上面 bundle ID一样,也在info.plist中,在URL types数组下。
同时也有缺点,ios9以上的系统,需要设置白名单,否则就是目标APP安装了,方法二也会返回NO。
白名单设置方式:在info.plist中添加(0和1 指的是微信,2指的是支付宝 ,3指的是头条,4指的是支付宝分享)
ios-判断手机上是否安装了某个App的更多相关文章
- [Android] 判断手机上是否安装了某个程序
http://blog.csdn.net/xiaodongrush/article/details/9320135 1. 首先得到该程序的包名 这个连上手机ADB,看logcat就能看到.比如:QQ客 ...
- js判断移动端是否安装某款app的多种方法
本文实例讲解了js判断移动端是否安装某款app的多种方法,分享给大家供大家参考,具体内容如下 第一种方法: 一:判断是那种设备 ? || u.indexOf(; //android终端或者uc浏览器 ...
- Android检查手机上是否安装了第三方软件的方法------本文以百度地图为例
package com.example.myapi.thirdbaidumap; import java.net.URISyntaxException; import java.util.ArrayL ...
- Android 检查手机上是否安装了指定的软件(根据包名检测)
Android检查手机上是否安装了指定的软件(根据包名检测) /** * 检查手机上是否安装了指定的软件 * @param context * @param packageName * @return ...
- app分享时判断手机是否已安装微信或QQ客户端
/** * 判断 用户是否安装微信客户端 */ public static boolean isWeixinAvilible(Context context) { final PackageManag ...
- 利用私有的API获得手机上所安装的所有应用信息(包括版本,名称,bundleID,类型)
MobileCoreService这个系统的库,里面有个私有的类LSApplicationWorkspace ,利用运行时可以获得私有类里面的方法,- (id)allInstalledApplicat ...
- 在多台手机上批量安装apk
1.手机要打开adb调试 2.该程序可以实现台android手机的多个apk批量安装 1.getSeriaoNum.py模块,该模块获取已连接手机的序列号 import os import threa ...
- iOS和macOS上的Message-ID和Mail.app深度链接
如何在iOS上通过电子邮件进行无缝的“无密码”身份验证. Apple平台上的邮件和日历集成 在macOS和iOS上查看电子邮件时,邮件会在[检测到的日期和时间]下划线 .您可以与他们互动以创建新的日历 ...
- 您的手机上未安装应用程序 android 点击快捷方式提示未安装程序的解决
最近APP出现一个很奇怪的问题,在Android 4.4.2和android 4.4.3系统上点击应用的快捷方式,打不开应用,而且会提示未安装程序. 确认了应用的MainActivity中设置了and ...
随机推荐
- 关于ISIS协议 CSNP报文的周期更新理解
为何ISIS协议的CSNP报文在MA网络环境中是以周期更新然而在P2P网络环境中只更新一次? 个人通过视频及资料学习理解: 我们知道ISIS的CSNP报文类似OSPF中的DBD报文,作用就是用来确认彼 ...
- Journals in Fluid Mechanics
journal of fluid mechanics physics of fluids annual review of fluid mechanics
- 创建Maven版Java工程
步骤: 创建成功后,如图:
- Java基础学习总结(86)——Java异常处理机制Exception抛出异常时throw和throws用法详解
什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...
- BZOJ 1853
http://www.lydsy.com/JudgeOnline/problem.php?id=1853 岛娘在空间上发的题解就看了看果然被骗了.还以为是数位dp. 原来是容斥啊.好吧第一道正式的题目 ...
- Linux经常使用命令-文件搜索命令-文件搜索命令find
命令名称:find 命令所在路径:/bin/find 语法:find [搜索范围] [匹配条件] 功能描写叙述:文件搜索 演示样例 find /etc - name init 在文件夹/etc 中查找 ...
- 通用的Adapter
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- Android首次启动时间长优化之预编译提取Odex
提示!应用程序的安装有两种情况,第一:首次启动系统时安装.第二:系统启动完毕后安装. 本篇博文基于第一种安装场景.在系统首次启动的场景中,系统会对/system/app./system/pri ...
- Hibernate基于注解的双向one-to-many映射关系的实现
在项目中用到了一对多的实体类关系映射,之前接触的都是基于配置文件的映射实现.可是公司的大部分都是基于注解的.因此自己參考之前的代码捣鼓了基于注解的一对多的映射关系实现. 背景: 一的一端:QingAo ...
- Unity编程笔录--ulua+PureMVC框架简单热更新使用
ulua+PureMVC框架简单热更新使用 前言: 1:作者官网论坛 首先介绍的是这个框架是一位大牛 骏擎[CP] jarjin 写的,据说原本是"非常多人不知道怎么使用Ulua,所 ...