41 行
1.1 KiB
TypeScript
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
|
||
|
|
}
|