Appearance
getPlatform
获取当前运行平台类型。
返回值类型
typescript
type Platform = 'pc' | 'harmony' | 'iphone' | 'gphone' | 'unknown';返回值说明
'pc': PC 设备'harmony': 纯血鸿蒙设备'iphone': iPhone/iPad/iPod 设备'gphone': Android 设备(包括套皮鸿蒙)'unknown': 未知平台
使用方法
typescript
import { getPlatform } from '@fu/matrix';
const platform = getPlatform();
switch (platform) {
case 'pc':
// PC 平台处理
break;
case 'harmony':
// 纯血鸿蒙平台处理
break;
case 'iphone':
// iPhone/iPad/iPod 平台处理
break;
case 'gphone':
// Android 平台处理(包括套皮鸿蒙)
break;
default:
// 未知平台处理
}判断顺序
- 首先检查是否是 PC 设备
- 然后检查是否是纯血鸿蒙设备
- 再检查是否是 iPhone/iPad/iPod 设备
- 然后检查是否是 Android 设备
- 如果都不匹配,返回 'unknown'
使用场景
- 平台特定功能
typescript
if (getPlatform() === 'harmony') {
// 使用鸿蒙特有API
} else if (getPlatform() === 'gphone') {
// 使用安卓API
} else {
// 使用通用API
}- 多平台适配
typescript
const config = {
iphone: iphoneConfig,
gphone: androidConfig,
pc: pcConfig,
harmony: harmonyConfig,
unknown: defaultConfig
}[getPlatform()];- 条件渲染
typescript
function PlatformSpecificUI() {
const platform = getPlatform();
return (
<div className={`ui-${platform}`}>
{platform === 'pc' && <DesktopVersion />}
{platform === 'harmony' && <HarmonyVersion />}
{(platform === 'iphone' || platform === 'gphone') && <MobileVersion />}
</div>
);
}注意事项
- 该函数通过检测 UserAgent 判断平台类型
- 在服务器端(无 navigator 对象)时返回 'pc'
- 检测时不区分大小写
- 可能受到用户代理伪装的影响
- 套皮鸿蒙会被识别为 'gphone'
- 纯血鸿蒙会被识别为 'harmony'
平台判断优先级
- PC 设备 → 'pc'
- 纯血鸿蒙 → 'harmony'
- iPhone/iPad/iPod 设备 → 'iphone'
- Android 设备 → 'gphone'
- 其他 → 'unknown'
应用场景
- 平台特定功能的调用
- 平台特定UI的展示
- 平台相关API的权限检查
- 平台差异化处理