我如何显示当前的CodePush版本标签在我的React Native Android应用程序



寻找类似: <Text>VERSION={CodePush.VersionLabel}</Text>

CodePush的地方。VersionLabel类似于在code-push deployment ls <MyApp>

中显示的"v6"。

我想在登录屏幕的底部显示这个

componentDidMount(){
    codePush.getUpdateMetadata().then((metadata) =>{
      this.setState({label: metadata.label, version: metadata.appVersion, description: metadata.description});
    });
}
render() {
    return(
        <Text>{this.state.version}.{this.state.label}</Text>
    );
}

注意:.label属性是CodePush使用的内部构建号(例如v24)

如果没有可用的更新,getUpdateMetadata()返回null…

处理:

import codePush from "react-native-code-push";
async function getAppVersion() {
    const [{ appVersion }, update] = await Promise.all([
    codePush.getConfiguration(),
    codePush.getUpdateMetadata()
    ]);
    if (!update) {
        return `v${appVersion}`;
    }
    const label = update.label.substring(1);
    return `v${appVersion} rev.${label}`;
};
export { getAppVersion };

示例输出: v1.4.4" v1.4.4 rev.5"根据状态。

下面是一个如何使用它作为自定义钩子的示例。

1。准备钩子

import { useEffect, useState } from 'react'
import codePush from 'react-native-code-push'
import DeviceInfo from 'react-native-device-info'
async function getOTAVersion() {
  try {
    const update = await codePush.getUpdateMetadata()
    return update ? update.label : null
  } catch (error) {
    return null
  }
}
export function useOTAVersion() {
  const [appVersion, setAppVersion] = useState(DeviceInfo.getReadableVersion())
  useEffect(() => {
    getOTAVersion().then((OTAVersion) => {
      if (OTAVersion) {
        setAppVersion(`${appVersion}/${OTAVersion}`)
      }
    })
  }, [])
  return { appVersion }
}

2。在功能组件中使用钩子

import { useOTAVersion } from 'your/hooks'
const CmpExample = () => {
  const { appVersion } = useOTAVersion()
  return <Text>{appVersion}</Text>
}
componentDidMount() {
 CodePush.getCurrentPackage().then((update)=> {
    console.log('####### CodePush', update);
 });
}

相关内容

  • 没有找到相关文章

最新更新