Skip to content

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:
    // 未知平台处理
}

判断顺序

  1. 首先检查是否是 PC 设备
  2. 然后检查是否是纯血鸿蒙设备
  3. 再检查是否是 iPhone/iPad/iPod 设备
  4. 然后检查是否是 Android 设备
  5. 如果都不匹配,返回 'unknown'

使用场景

  1. 平台特定功能
typescript
if (getPlatform() === 'harmony') {
  // 使用鸿蒙特有API
} else if (getPlatform() === 'gphone') {
  // 使用安卓API
} else {
  // 使用通用API
}
  1. 多平台适配
typescript
const config = {
  iphone: iphoneConfig,
  gphone: androidConfig,
  pc: pcConfig,
  harmony: harmonyConfig,
  unknown: defaultConfig
}[getPlatform()];
  1. 条件渲染
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'

平台判断优先级

  1. PC 设备 → 'pc'
  2. 纯血鸿蒙 → 'harmony'
  3. iPhone/iPad/iPod 设备 → 'iphone'
  4. Android 设备 → 'gphone'
  5. 其他 → 'unknown'

应用场景

  • 平台特定功能的调用
  • 平台特定UI的展示
  • 平台相关API的权限检查
  • 平台差异化处理