UNPKG

expo-plugin-app-checker

Version:

检测指定的App是否存在

37 lines (31 loc) 1.18 kB
import { Platform, Linking, NativeModules } from 'react-native'; // 获取原生模块 const { AppChecker } = NativeModules; /** * 检查设备上是否存在指定的应用程序 * * @param packageNameOrScheme - 在Android上使用完整包名(如 "com.whatsapp"), * 在iOS上使用URL scheme(如 "whatsapp://") * @returns 一个Promise,解析为布尔值,表示应用程序是否存在 */ export async function checkAppExists(packageNameOrScheme: string): Promise<boolean> { try { // iOS使用Linking API if (Platform.OS === 'ios') { // 确保scheme包含了"://" const scheme = packageNameOrScheme.includes('://') ? packageNameOrScheme : `${packageNameOrScheme}://`; return await Linking.canOpenURL(scheme); } // Android使用原生模块 if (!AppChecker) { console.warn('[expo-plugin-app-checker] Native module not found. Falling back to default behavior.'); return false; } return await AppChecker.checkAppExists(packageNameOrScheme); } catch (error) { console.error('[expo-plugin-app-checker] error:', error); return false; } }