更新记录
1.0.0(2026-09-24) 下载此版本
完整内容
平台兼容性
uni-app(3.8.4)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | - | × | √ | √ | 4.4 | 12 | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| √ | √ | √ |
gibbs-app-check
uni-app 全端应用安装检测插件,支持 Android / iOS / 鸿蒙,兼容 Vue2 / Vue3 / nvue。
检测手机是否安装了微信、支付宝、高德地图、京东、抖音等应用,支持单个/批量检测、打开应用、自定义应用检测。
快速上手
import { isInstalled, openApp, checkInstalled, APPS } from '@/uni_modules/gibbs-app-check';
// 检测微信是否安装
const { installed } = await isInstalled(APPS.WEIXIN);
if (installed) {
await openApp(APPS.WEIXIN);
}
// 检测未定义的应用(如云闪付)
const { installed } = await isInstalled({
pname: 'com.unionpay',
action: 'uppay://',
title: '云闪付'
});
// 批量检测
const results = await checkInstalled([APPS.WEIXIN, APPS.ALIPAY]);
// { weixin: { installed: true, ... }, alipay: { installed: false, ... } }
平台支持
| 平台 | 检测 | 打开 | 检测方式 |
|---|---|---|---|
| Android | ✅ | ✅ | plus.runtime.isApplicationExist({ pname }) |
| iOS | ✅ | ✅ | plus.runtime.isApplicationExist({ action }) / 内置 / 系统能力 |
| 鸿蒙 | ✅ | ✅ | plus.runtime.isApplicationExist / 桥梁对象 |
| 小程序 | ❌ | ❌ | 沙箱无法检测 |
| H5 | ❌ | ❌ | 浏览器无法检测 |
安装与配置
安装
将 gibbs-app-check 目录放入项目的 uni_modules/ 下即可。
iOS 白名单配置(重要)
iOS 9+ 必须在 manifest.json 的 urlschemewhitelist 中声明要检测的 URL Scheme,否则检测结果始终为 false。
"urlschemewhitelist": "weixin,alipays,alipay,mqq,taobao,tmall,openapp.jdmobile,snssdk1128,imeituan,eleme,pinduoduo,sinaweibo,baidumap,iosamap,qqmap,comgooglemaps,maps,applepay,dingtalk,lark,xhsdiscover,kwai,bilibili,orpheus,qqmusic,uppay"
alipays和alipay均已列入白名单,alipays://为支付宝当前使用的 Scheme,alipay为旧版兼容。 如需检测自定义应用(如云闪付),需将其 URL Scheme(如uppay)也加入白名单。
鸿蒙桥梁配置(可选)
鸿蒙 NEXT(纯鸿蒙系统)需在 App 启动时注册桥梁对象:
// App.vue 的 onLaunch 中
// #ifdef APP-HARMONY
globalThis.__gibbsAppCheckHarmony = {
isAppInstalled(bundleName) {
// 调用鸿蒙原生 bundleManager 检测(需通过原生插件实现)
return false;
},
openApp(bundleName) {
// 调用鸿蒙原生 startAbility 打开
return false;
}
};
// #endif
鸿蒙 4.x(带 Android 兼容层)无需此步骤,
plus.runtime.isApplicationExist可直接使用。
API
isInstalled(app)
检测单个应用是否已安装。
| 参数 | 类型 | 说明 |
|---|---|---|
| app | string | object | 预定义名称(如 'weixin')、常量(如 APPS.ALIPAY)或自定义配置对象 |
返回:Promise<{ installed, name, title, platform, builtin, systemCapability }>
// 预定义应用
const res = await isInstalled(APPS.WEIXIN);
// { installed: true, name: 'weixin', title: '微信', platform: 'android', builtin: false, systemCapability: false }
// iOS 内置应用(苹果地图,直接返回 true)
const res = await isInstalled(APPS.APPLE_MAP);
// { installed: true, name: 'apple_map', title: '苹果地图', platform: 'ios', builtin: true, ... }
// iOS 系统能力(Apple Pay,需设备支持+已添加卡片)
const res = await isInstalled(APPS.APPLE_PAY);
// { installed: true/false, name: 'apple_pay', title: 'Apple Pay', systemCapability: true, ... }
// 自定义应用
const res = await isInstalled({ pname: 'com.unionpay', action: 'uppay://', title: '云闪付' });
checkInstalled(apps)
批量检测多个应用,返回以应用标识为 key 的对象。
import { checkInstalled, APPS } from '@/uni_modules/gibbs-app-check';
const results = await checkInstalled([APPS.WEIXIN, APPS.ALIPAY, APPS.QQ]);
// {
// weixin: { installed: true, name: 'weixin', title: '微信', platform: 'android', builtin: false, systemCapability: false },
// alipay: { installed: false, name: 'alipay', title: '支付宝', platform: 'android', builtin: false, systemCapability: false },
// qq: { installed: true, name: 'qq', title: 'QQ', platform: 'android', builtin: false, systemCapability: false }
// }
filterInstalled(apps)
筛选出已安装的应用,返回数组。
import { filterInstalled, APPS } from '@/uni_modules/gibbs-app-check';
const installed = await filterInstalled([APPS.WEIXIN, APPS.ALIPAY, APPS.QQ]);
// [
// { installed: true, name: 'weixin', title: '微信', platform: 'android', builtin: false, systemCapability: false },
// { installed: true, name: 'qq', title: 'QQ', platform: 'android', builtin: false, systemCapability: false }
// ]
openApp(app)
打开指定应用(仅 App 端)。标记 canOpen: false 的系统能力(如 Apple Pay)不支持直接打开。
iOS/Android 使用 300ms 超时机制:若 300ms 内未收到失败回调,则视为打开成功。
import { openApp, APPS } from '@/uni_modules/gibbs-app-check';
// 打开微信
const { success, message } = await openApp(APPS.WEIXIN);
// 检测 + 打开 组合使用
const { installed } = await isInstalled(APPS.ALIPAY);
if (installed) {
await openApp(APPS.ALIPAY);
} else {
uni.showToast({ title: '请先安装支付宝', icon: 'none' });
}
// Apple Pay 不支持直接打开
await openApp(APPS.APPLE_PAY);
// { success: false, message: 'Apple Pay 不支持直接打开,请通过系统支付接口调用' }
resetCache()
重置平台检测缓存。在热更新或平台环境可能发生变化时调用。
import { resetCache } from '@/uni_modules/gibbs-app-check';
resetCache();
getAppConfig(name)
获取预定义应用的配置信息。
import { getAppConfig } from '@/uni_modules/gibbs-app-check';
const weixinConfig = getAppConfig('weixin');
// { pname: 'com.tencent.mm', action: 'weixin://', harmonyBundle: 'com.tencent.mm', title: '微信', platforms: [...] }
getAllAppConfigs()
获取所有预定义应用配置。
PLATFORMS
平台常量对象,用于自定义应用配置的 platforms 字段。
import { PLATFORMS } from '@/uni_modules/gibbs-app-check';
const myApp = {
pname: 'com.example.app',
action: 'myapp://',
title: '我的应用',
platforms: [PLATFORMS.ANDROID, PLATFORMS.IOS]
};
isApplePayAvailable()
检测 Apple Pay 是否可用(仅 iOS)。比 isInstalled(APPS.APPLE_PAY) 更详细,额外返回配置状态。
import { isApplePayAvailable } from '@/uni_modules/gibbs-app-check';
const { available, configured, message } = await isApplePayAvailable();
// available: boolean - 设备是否支持 Apple Pay 且已添加卡片
// configured: boolean - manifest.json 是否配置了 appleiap 模块
// message: string - 状态描述
isHuaweiWalletAvailable()
检测华为钱包是否可用(仅 Android / 鸿蒙)。
import { isHuaweiWalletAvailable } from '@/uni_modules/gibbs-app-check';
const { available, message } = await isHuaweiWalletAvailable();
isSupported()
当前平台是否支持检测。
import { isSupported } from '@/uni_modules/gibbs-app-check';
if (!isSupported()) {
uni.showToast({ title: '当前平台不支持应用检测', icon: 'none' });
}
getPlatform()
获取当前平台名称(android / ios / harmony / web / mp-weixin 等)。
自定义应用检测
当需要检测的应用不在预定义列表中时,传入自定义配置对象即可。
配置字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pname | string | Android 必填 | Android 应用包名 |
| action | string | iOS 必填 | iOS URL Scheme(含 ://) |
| harmonyBundle | string | 鸿蒙选填 | 鸿蒙应用包名,不填则使用 pname |
| title | string | 选填 | 应用显示名称 |
| name | string | 选填 | 应用标识,不填则使用 pname 或 action |
| platforms | Array | 选填 | 支持的平台数组,如 ['android', 'ios'] |
| canOpen | boolean | 选填 | 是否支持打开,默认 true |
| iosBuiltin | boolean | 选填 | 是否为 iOS 内置应用,默认 false |
| isSystemCapability | boolean | 选填 | 是否为系统能力,默认 false |
| capabilityType | string | 选填 | 系统能力类型标识 |
使用案例
检测云闪付:
import { isInstalled, openApp } from '@/uni_modules/gibbs-app-check';
// 定义云闪付配置
const UNIONPAY = {
pname: 'com.unionpay', // Android 包名
action: 'uppay://', // iOS URL Scheme
harmonyBundle: 'com.unionpay', // 鸿蒙包名(可选)
title: '云闪付',
platforms: ['android', 'ios', 'harmony']
};
// 检测是否安装
const { installed, title } = await isInstalled(UNIONPAY);
if (installed) {
console.log(title + ' 已安装');
} else {
console.log('未安装云闪付');
}
// 打开云闪付
if (installed) {
const { success, message } = await openApp(UNIONPAY);
}
批量检测自定义应用:
const results = await checkInstalled([
{ pname: 'com.unionpay', action: 'uppay://', title: '云闪付' },
{ pname: 'com.suning.mobile.ebuy', action: 'suning://', title: '苏宁易购' },
{ pname: 'com.achievo.vipshop', action: 'vipshop://', title: '唯品会' }
]);
混合检测预定义 + 自定义:
import { checkInstalled, APPS } from '@/uni_modules/gibbs-app-check';
const UNIONPAY = { pname: 'com.unionpay', action: 'uppay://', title: '云闪付' };
// 预定义应用和自定义应用混合检测
const results = await checkInstalled([
APPS.WEIXIN, // 预定义:微信
APPS.ALIPAY, // 预定义:支付宝
UNIONPAY, // 自定义:云闪付
APPS.APPLE_PAY // 预定义:Apple Pay
]);
// results:
// {
// weixin: { installed: true, name: 'weixin', title: '微信', ... },
// alipay: { installed: true, name: 'alipay', title: '支付宝', ... },
// com.unionpay: { installed: false, name: 'com.unionpay', title: '云闪付', ... },
// apple_pay: { installed: false, name: 'apple_pay', title: 'Apple Pay', ... }
// }
支付方式排序(已安装排前面):
import { isInstalled, getPlatform, APPS } from '@/uni_modules/gibbs-app-check';
// 从接口获取支付方式列表
// [{ id: 2, name: '支付宝', sort: 10 }, { id: 1, name: '微信', sort: 6 }, { id: 3, name: '云闪付', sort: 3 }]
async function sortPayList(payList) {
const appMap = {
'1': APPS.WEIXIN,
'2': APPS.ALIPAY,
'3': { pname: 'com.unionpay', action: 'uppay://', title: '云闪付' },
'4': APPS.APPLE_PAY
};
// 非 iOS 过滤掉苹果支付
if (getPlatform() !== 'ios') {
payList = payList.filter(item => String(item.id) !== '4');
}
// 逐个检测安装状态
const installMap = {};
for (const item of payList) {
const appKey = appMap[String(item.id)];
if (appKey) {
const r = await isInstalled(appKey);
installMap[String(item.id)] = r.installed;
}
}
// 排序:已安装排前面,都安装或都未安装按 sort 降序
payList.sort((a, b) => {
const aI = installMap[String(a.id)];
const bI = installMap[String(b.id)];
if (aI === undefined && bI === undefined) return b.sort - a.sort;
if (aI === undefined) return 1;
if (bI === undefined) return -1;
if (aI !== bI) return aI ? -1 : 1;
return b.sort - a.sort;
});
return payList;
}
仅 Android 应用:
const ANDROID_ONLY = { pname: 'com.example.app', title: '某应用', platforms: ['android'] };
const { installed } = await isInstalled(ANDROID_ONLY);
// iOS 上直接返回 false(不在 platforms 中)
常见应用包名与 Scheme 参考
| 应用 | Android 包名 | iOS URL Scheme |
|---|---|---|
| 云闪付 | com.unionpay | uppay:// |
| 苏宁易购 | com.suning.mobile.ebuy | suning:// |
| 唯品会 | com.achievo.vipshop | vipshop:// |
| 58同城 | com.wuba | 58app:// |
| 滴滴出行 | com.sdu.didi.psnger | OneKey:// |
| 美团外卖 | com.sankuai.meituan.takeoutnew | meituanwaimai:// |
| 拼多多商家版 | com.xunmeng.pinduoduo.business | pddbiz:// |
| 中国银行 | com.chinamworld.bocmbc | bocmbc:// |
| 工商银行 | com.icbc | icbc:// |
| 建设银行 | com.chinamworld.main | ccb:// |
| 农业银行 | com.android.bankabc | bankabc:// |
| 招商银行 | com.cmbchina.cmb | cmbmobilebank:// |
提示:以上包名和 Scheme 仅供参考,实际值可能随应用版本变化,请以官方文档为准。iOS 需将对应 Scheme 加入
urlschemewhitelist白名单。
返回值参考
isInstalled / checkInstalled / filterInstalled
| 字段 | 类型 | 说明 |
|---|---|---|
| installed | boolean | 是否已安装 |
| name | string | 应用标识 |
| title | string | 应用名称 |
| platform | string | 当前平台 |
| builtin | boolean | 是否为系统内置应用(如 Apple Maps,iOS 上始终可用) |
| systemCapability | boolean | 是否为系统能力(如 Apple Pay、华为钱包,需设备支持) |
builtin 与 systemCapability 的区别:
builtin表示该应用在对应平台上一定存在(如苹果地图);systemCapability表示该能力需要设备硬件支持且用户可能未启用(如 Apple Pay 需要 NFC + 已添加卡片)。
openApp
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 是否成功发起打开请求 |
| message | string | 状态描述 |
完整示例
支付前检测
import { isInstalled, checkInstalled, isApplePayAvailable, isHuaweiWalletAvailable, APPS } from '@/uni_modules/gibbs-app-check';
// 微信支付前
async function handleWechatPay() {
const { installed } = await isInstalled(APPS.WEIXIN);
if (!installed) {
uni.showToast({ title: '请先安装微信', icon: 'none' });
return;
}
// 调用微信支付...
}
// 支付宝支付前
async function handleAlipay() {
const { installed } = await isInstalled(APPS.ALIPAY);
if (!installed) {
uni.showToast({ title: '请先安装支付宝', icon: 'none' });
return;
}
// 调用支付宝支付...
}
// 批量检测可用支付方式(含自定义应用云闪付)
async function getAvailablePayments() {
const UNIONPAY = { pname: 'com.unionpay', action: 'uppay://', title: '云闪付' };
const results = await checkInstalled([APPS.WEIXIN, APPS.ALIPAY, UNIONPAY]);
const payments = [];
if (results.weixin.installed) payments.push({ label: '微信支付', value: 'weixin' });
if (results.alipay.installed) payments.push({ label: '支付宝', value: 'alipay' });
if (results['com.unionpay'] && results['com.unionpay'].installed) {
payments.push({ label: '云闪付', value: 'unionpay' });
}
// Apple Pay (iOS)
const applePay = await isApplePayAvailable();
if (applePay.available) payments.push({ label: 'Apple Pay', value: 'apple_pay' });
// 华为钱包 (Android/鸿蒙)
const huaweiWallet = await isHuaweiWalletAvailable();
if (huaweiWallet.available) payments.push({ label: '华为钱包', value: 'huawei_wallet' });
return payments;
}
地图应用检测与打开
import { checkInstalled, openApp, APPS } from '@/uni_modules/gibbs-app-check';
async function getAvailableMaps() {
const results = await checkInstalled([
APPS.APPLE_MAP, APPS.GOOGLE_MAP, APPS.GAODE_MAP,
APPS.BAIDU_MAP, APPS.TENCENT_MAP, APPS.HUAWEI_MAP
]);
return Object.entries(results)
.filter(([_, v]) => v.installed)
.map(([_, v]) => ({ label: v.title, value: v.name }));
}
async function navigateWithMap(appName) {
const { success, message } = await openApp(appName);
if (!success) {
uni.showToast({ title: message, icon: 'none' });
}
}
附录:预定义应用列表
| 常量 | 名称 | Android 包名 | iOS Scheme | 平台 | 可打开 |
|---|---|---|---|---|---|
APPS.WEIXIN |
微信 | com.tencent.mm | weixin:// | Android/iOS/鸿蒙 | ✅ |
APPS.ALIPAY |
支付宝 | com.eg.android.AlipayGphone | alipays:// | Android/iOS/鸿蒙 | ✅ |
APPS.QQ |
com.tencent.mobileqq | mqq:// | Android/iOS/鸿蒙 | ✅ | |
APPS.TAOBAO |
淘宝 | com.taobao.taobao | taobao:// | Android/iOS | ✅ |
APPS.TMALL |
天猫 | com.tmall.wireless | tmall:// | Android/iOS | ✅ |
APPS.JD |
京东 | com.jingdong.app.mall | openapp.jdmobile:// | Android/iOS/鸿蒙 | ✅ |
APPS.DOUYIN |
抖音 | com.ss.android.ugc.aweme | snssdk1128:// | Android/iOS/鸿蒙 | ✅ |
APPS.MEITUAN |
美团 | com.sankuai.meituan | imeituan:// | Android/iOS | ✅ |
APPS.ELEME |
饿了么 | me.ele | eleme:// | Android/iOS | ✅ |
APPS.PINDUODUO |
拼多多 | com.xunmeng.pinduoduo | pinduoduo:// | Android/iOS | ✅ |
APPS.SINA_WEIBO |
新浪微博 | com.sina.weibo | sinaweibo:// | Android/iOS | ✅ |
APPS.BAIDU_MAP |
百度地图 | com.baidu.BaiduMap | baidumap:// | Android/iOS | ✅ |
APPS.GAODE_MAP |
高德地图 | com.autonavi.minimap | iosamap:// | Android/iOS/鸿蒙 | ✅ |
APPS.TENCENT_MAP |
腾讯地图 | com.tencent.map | qqmap:// | Android/iOS | ✅ |
APPS.GOOGLE_MAP |
谷歌地图 | com.google.android.apps.maps | comgooglemaps:// | Android/iOS | ✅ |
APPS.APPLE_MAP |
苹果地图 | - (iOS内置) | maps:// | iOS | ✅ |
APPS.APPLE_PAY |
Apple Pay | - (系统能力) | applepay:// | iOS | ❌ |
APPS.HUAWEI_MAP |
华为地图 | com.huawei.maps | - | Android/鸿蒙 | ✅ |
APPS.HUAWEI_WALLET |
华为钱包 | com.huawei.wallet | - | Android/鸿蒙 | ✅ |
APPS.DINGTALK |
钉钉 | com.alibaba.android.rimet | dingtalk:// | Android/iOS/鸿蒙 | ✅ |
APPS.FEISHU |
飞书 | com.ss.android.lark | lark:// | Android/iOS | ✅ |
APPS.XIAOHONGSHU |
小红书 | com.xingin.xhs | xhsdiscover:// | Android/iOS | ✅ |
APPS.KUAISHOU |
快手 | com.kuaishou.nebula | kwai:// | Android/iOS | ✅ |
APPS.BILIBILI |
B站 | tv.danmaku.bili | bilibili:// | Android/iOS | ✅ |
APPS.NETEASE_MUSIC |
网易云音乐 | com.netease.cloudmusic | orpheus:// | Android/iOS | ✅ |
APPS.QQ_MUSIC |
QQ音乐 | com.tencent.qqmusic | qqmusic:// | Android/iOS | ✅ |

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 4
赞赏 0
下载 12638691
赞赏 1950
赞赏
京公网安备:11010802035340号