我是靠谱客的博主 寒冷豌豆,最近开发中收集的这篇文章主要介绍iOS - 如何探测手机上是否安装了某个APP,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.核心知识点:通过canOpenURL来打判断app是否存在,URL中包含的是该APP的url scheme

2.详解“url scheme”:

(1)url scheme到底是什么?


url scheme是APP可以自己注册的,即在项目中的info.plist里添加URL types,点击展开,右键选择Add Row,添加URL Schemes
用大白话说它其实就是一个标识,其它APP可以通过它直接互相调用并可以传递一些参数

(2)如何检测url scheme的准确性?


以淘宝为例-》如果该url scheme是正确的,则你在Safari里输入taobao://,就可以直接打开你的淘宝app,如果你没有装淘宝,应该显示的是淘宝下载界面且点击会跳到AppStore的淘宝下载界面,反之则证明url scheme有效是错误的

(3)URL Schemes是不是唯一的?


并不是唯一的,也就是说,多个应用之间设置的URL Schemes是可以相同的。那么问题来了,假如两个应用的URL Schemes相同的话,使用openURL:方法会打开哪个应用呢?
结论:如果两个应用有URL Schemes是相同的,后安装的应用的URL Schemes会把早安装的应用的URL Schems覆盖掉

3.具体步骤:

(1)获取对应APP的url scheme


a:获取对应app的ipa包(降级iTunes至12.6.3,又或者是下载itools pro版)
[参考1](https://www.jianshu.com/p/4ee125401340)
b:把ipa扩展名改成zip,解压
c:在playload文件夹下显示包内容,然后搜索info.plist,有可能搜到多个info.plist,这个时候我是逐一打开,在文件中找到CFBundleURLSchemes,后面的一系列string便是,又或者是搜索url type,获取里面对应的url scheme,这两个方法都可以用

(2)iOS9及以上需要设置白名单:既可以在plist设置,也可以用代码写

(3)具体代码:


NSURL *urlII = [NSURL URLWithString:@"taobao://"];
BOOL hadInstalledWeixin = [[UIApplication sharedApplication] canOpenURL:urlII];
if (hadInstalledWeixin)
{
NSLog(@"说明此设备有安装app");
//打开APP
[[UIApplication sharedApplication] openURL:urlII];
}else{
NSLog(@"说明此设备没有安装app");
}

最后

以上就是寒冷豌豆为你收集整理的iOS - 如何探测手机上是否安装了某个APP的全部内容,希望文章能够帮你解决iOS - 如何探测手机上是否安装了某个APP所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部