更新记录

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.jsonurlschemewhitelist 中声明要检测的 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"

alipaysalipay 均已列入白名单,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 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

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议