Appearance
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: 当前版本是否大于等于目标版本
版本号解析规则
解析逻辑
- 获取当前内部版本号(如 “FUI037.08.389”)
- 使用
getNumberFromVersion从内部版本号中提取数字:对.分段取前 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) - 不创建额外数据结构
- 依赖函数: 依赖
getInnerVersion和getPlatform
注意事项
- 函数将内部版本号按
.分段取前 3 段并提取数字后拼接比较(并非只比较 patch 版本) - 无内部版本号时始终返回
false - 版本号格式变化可能影响比较结果
- 建议在使用前先检查版本号是否存在
相关方法
- getInnerVersion - 获取内部版本号
- getPlatform - 获取平台信息
- getFieldFromUa - 从 UserAgent 中提取字段
版本历史
- v1.3.0: 初始版本