XuqmGroup-RNSDK/packages/update/src/NativeVersion.ts

41 行
1.1 KiB
TypeScript

import { NativeModules } from 'react-native'
/**
* Native module interface. Provided by XuqmVersionModule (auto-linked).
*
* Android: reads BuildConfig.VERSION_CODE / VERSION_NAME
* iOS: reads CFBundleVersion / CFBundleShortVersionString
*
* If the native module is not linked (e.g. JS-only dev environment),
* falls back to a value set via _devSetAppVersionCode().
*/
interface XuqmVersionModuleInterface {
getVersionCode: () => number
getVersionName: () => string
}
const _native = NativeModules.XuqmVersionModule as XuqmVersionModuleInterface | undefined
let _devVersionCode = 0
let _devVersionName = '0.0.0'
/** Only for dev environments where the native module is not linked. */
export function _devSetAppVersion(versionCode: number, versionName = '0.0.0'): void {
_devVersionCode = versionCode
_devVersionName = versionName
}
export function getAppVersionCode(): number {
try {
if (_native?.getVersionCode) return _native.getVersionCode()
} catch {}
return _devVersionCode
}
export function getAppVersionName(): string {
try {
if (_native?.getVersionName) return _native.getVersionName()
} catch {}
return _devVersionName
}