expo-plugin-app-checker
Version:
检测指定的App是否存在
37 lines (31 loc) • 1.18 kB
text/typescript
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;
}
}