UNPKG

expo-plugin-app-checker

Version:

检测指定的App是否存在

48 lines (47 loc) 2.23 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkAppExists = void 0; const react_native_1 = require("react-native"); // 获取原生模块 const { AppChecker } = react_native_1.NativeModules; /** * 检查设备上是否存在指定的应用程序 * * @param packageNameOrScheme - 在Android上使用完整包名(如 "com.whatsapp"), * 在iOS上使用URL scheme(如 "whatsapp://") * @returns 一个Promise,解析为布尔值,表示应用程序是否存在 */ function checkAppExists(packageNameOrScheme) { return __awaiter(this, void 0, void 0, function* () { try { // iOS使用Linking API if (react_native_1.Platform.OS === 'ios') { // 确保scheme包含了"://" const scheme = packageNameOrScheme.includes('://') ? packageNameOrScheme : `${packageNameOrScheme}://`; return yield react_native_1.Linking.canOpenURL(scheme); } // Android使用原生模块 if (!AppChecker) { console.warn('[expo-plugin-app-checker] Native module not found. Falling back to default behavior.'); return false; } return yield AppChecker.checkAppExists(packageNameOrScheme); } catch (error) { console.error('[expo-plugin-app-checker] error:', error); return false; } }); } exports.checkAppExists = checkAppExists;