Skip to content

isHigherInnerVersion

描述

判断当前应用的内部版本号是否大于等于指定的版本号。该函数获取当前应用的内部版本号,根据平台类型(iOS/纯血鸿蒙/Android)选择对应的目标版本号进行比较,常用于功能兼容性检查和版本门控。

语法

ts
isHigherInnerVersion(options: {
  androidVersion?: number | string;
  iosVersion?: number | string;
  harmonyOsVersion?: number | string;
}): boolean

参数

  • options (Object): 版本比较选项
    • androidVersion (number | string, 可选): Android 平台的目标版本号
    • iosVersion (number | string, 可选): iOS 平台的目标版本号
    • harmonyOsVersion (number | string, 可选): 纯血鸿蒙平台的目标版本号

返回值

  • boolean: 当前版本是否大于等于目标版本

版本号解析规则

解析逻辑

  1. 获取当前内部版本号(如 “FUI037.08.389”)
  2. 使用 getNumberFromVersion 从内部版本号中提取数字:对 . 分段取前 3 段拼接后再去除非数字字符并转换为数字
  3. 根据当前平台选择对应的目标版本号,并比较”当前版本 >= 目标版本”

示例解析

ts
// “FUI037.08.389” -> “03708389” -> 3708389
// “FUG037.08.389” -> “03708389” -> 3708389
// “FUHM037.08.389” -> “03708389” -> 3708389
// “FUI03708389” -> “03708389” -> 3708389

示例

基本用法

ts
import { isHigherInnerVersion } from '@fu/matrix';

// 当前版本为 "FUI037.08.389",iOS 平台
const isSupported = isHigherInnerVersion({
  iosVersion: '037.08.100',    // 目标版本
  androidVersion: '037.08.000'  // 会被忽略(因为当前是 iOS)
});
console.log(isSupported); // => true (3708389 >= 3708100)

// 当前版本为 "FUG037.08.389",Android 平台
const isSupported = isHigherInnerVersion({
  iosVersion: '037.08.000',    // 会被忽略(因为当前是 Android)
  androidVersion: '037.08.100'  // 目标版本
});
console.log(isSupported); // => true (3708389 >= 3708100)

功能门控

ts
import { isHigherInnerVersion } from '@fu/matrix';

function enableNewFeature() {
  // 检查是否满足最低版本要求
  const isVersionSupported = isHigherInnerVersion({
    iosVersion: '037.08.100',
    androidVersion: '037.08.100'
  });
  
  if (isVersionSupported) {
    console.log('启用新功能');
    return true;
  } else {
    console.log('版本不支持,使用旧功能');
    return false;
  }
}

渐进式功能启用

ts
import { isHigherInnerVersion } from '@fu/matrix';

function getAvailableFeatures() {
  const features = ['基础功能'];
  
  // 检查中级功能支持
  if (isHigherInnerVersion({ iosVersion: '037.08.100', androidVersion: '037.08.100' })) {
    features.push('中级功能');
  }
  
  // 检查高级功能支持
  if (isHigherInnerVersion({ iosVersion: '037.08.200', androidVersion: '037.08.200' })) {
    features.push('高级功能');
  }
  
  // 检查实验性功能支持
  if (isHigherInnerVersion({ iosVersion: '037.08.300', androidVersion: '037.08.300' })) {
    features.push('实验性功能');
  }
  
  return features;
}

版本兼容性处理

ts
import { isHigherInnerVersion, getPlatform } from '@fu/matrix';

function handlePlatformFeatures() {
  const platform = getPlatform();
  
  if (platform === 'iphone') {
    // iOS 特定功能检查
    if (isHigherInnerVersion({ iosVersion: '037.08.100' })) {
      console.log('启用 iOS 新功能');
    }
  } else if (platform === 'harmony') {
    // 纯血鸿蒙特定功能检查
    if (isHigherInnerVersion({ harmonyOsVersion: '037.08.100' })) {
      console.log('启用 HarmonyOS 新功能');
    }
  } else if (platform === 'gphone') {
    // Android 特定功能检查
    if (isHigherInnerVersion({ androidVersion: '037.08.100' })) {
      console.log('启用 Android 新功能');
    }
  }
}

数字版本号处理

ts
import { isHigherInnerVersion } from '@fu/matrix';

// 处理纯数字版本号
// 当前版本: "FUI037.08.389" -> 3708389
const isSupported = isHigherInnerVersion({
  iosVersion: 3708100,    // 数字格式
  androidVersion: 3708000
});
console.log(isSupported); // => true (3708389 >= 3708100)

// 混合格式
const isSupported2 = isHigherInnerVersion({
  iosVersion: '037.08.100',  // 字符串格式
  androidVersion: 3708000     // 数字格式
});

错误处理

ts
import { isHigherInnerVersion, getInnerVersion } from '@fu/matrix';

function safeVersionCheck() {
  // 先检查是否有版本信息
  const currentVersion = getInnerVersion();
  
  if (!currentVersion) {
    console.log('无版本信息,使用默认行为');
    return false;
  }
  
  // 再进行版本比较
  return isHigherInnerVersion({
    iosVersion: '037.08.000',
    androidVersion: '037.08.000'
  });
}

平台判断逻辑

平台选择

  • iOS 平台 (iphone): 使用 iosVersion 参数
  • 纯血鸿蒙平台 (harmony): 使用 harmonyOsVersion 参数
  • Android 平台 (gphone): 使用 androidVersion 参数
  • 其他平台: 使用 androidVersion 参数(默认)

参数处理

  • 如果对应平台的参数未提供,默认为 0
  • 函数会忽略非当前平台的参数

使用场景

  • 功能门控: 根据版本启用或禁用特定功能
  • 兼容性检查: 确保功能在支持的版本中运行
  • 渐进式升级: 根据版本提供不同级别的功能
  • 调试和测试: 在特定版本中启用调试功能

性能说明

  • 时间复杂度: O(1) - 常数时间操作
  • 空间复杂度: O(1) - 不创建额外数据结构
  • 依赖函数: 依赖 getInnerVersiongetPlatform

注意事项

  • 函数将内部版本号按 . 分段取前 3 段并提取数字后拼接比较(并非只比较 patch 版本)
  • 无内部版本号时始终返回 false
  • 版本号格式变化可能影响比较结果
  • 建议在使用前先检查版本号是否存在

相关方法

版本历史

  • v1.3.0: 初始版本