当前位置: 首页 > 工具软件 > CodePush > 使用案例 >

CodePush

江向阳
2023-12-01

安装

  • 输入下面命令安装code-push
npm install -g code-push-cli

1、使用微软服务器

打开命令提示符

  • 进行注册登陆
code-push register
  • 在浏览器跳转的注册界面让选择授权登录,获取access key,在终端
    输入获取key,进行登陆
code-push login

2、使用自己部署的服务器

打开命令提示符

进行注册登陆
code-push login http://xxx.xxx.xxx.xxx:3000
  • 在浏览器跳转的注册界面让选择授权登录,获取token,在终端获取token,进行登陆

3、注册app

在项目目录下执行下面命令

//注册Android
code-push app add 应用名 android react-native

//注册iOS
code-push app add 应用名 ios react-native

执行命令后会返回一套deployment key,环境分为Production和Staging,把该key在客户端中集成

4、安装react-native-code-push插件

npm install --save react-native-code-push

回到项目目录下,进行关联

react-native link react-native-code-push

此命令将会自动在anroid文件中添加好设置。

终端会提示让输入deployment key,只需将deployment Staging key输入即可

5、查看APP的key命令

code-push deployment ls appName -k

6、查看ap下所有应用

code-push app list

配置

Android

在app/build.gradle配置
apply from: "../../node_modules/react-native/react.gradle"
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
buildTypes {
        release {
            buildConfigField "String", "codepushkey", '"填写Production key"'
        }
        debug {
            buildConfigField "String", "codepushkey", '"填写Staging key"'
        }
    }
dependencies {
    compile project(':react-native-code-push')
}

修改版本号,把versionName属性改成 三位,比如要修改成1.0.0

versionName "1.0.1"
在android/settings.gradle配置
include ':react-native-code-push'
project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')
在MyApplication配置
@Override
protected String getJSBundleFile() {
    return CodePush.getJSBundleFile();
}
    
@Override
public boolean getUseDeveloperSupport() {
    return BuildConfig.DEBUG;
}

@Override
protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
         new CodePush(BuildConfig.codepushkey, MainApplication.this, BuildConfig.DEBUG,"http://192.168.0.5:8080")
    );
}

ISO

  • 在Xcode的项目导航视图中的PROJECT下选择项目, 选择Info页签——Configurations——单击 + 按钮——选择Duplicate "Release Configaration , 输入Staging。Use行选release
  • PROJECT和TARGET下选择build Settings页签中单击 + 按钮然后选择添加User-Defined Setting,然后输入
    CODEPUSH_KEY,然后填入deployment key。Reease和Staging填写Production的key,Debug填Staging的key
  • 打开 Info.plist文件,在CodePushDeploymentKey中输入$(CODEPUSH_KEY),名字要和上面Setting的一致。
  • 添加CodePushServerURL(string),把服务器地址写上(如http://192.168.0.5:8080)
  • 修改Bundle versions string,short 为三位数
  • 配置运行版本,Product中run和analyze选择release
  • Capablitie中的Push Notification打开

打包,集成热更新

打包

执行下面命令打包,打包后会自动把文件上传到codepush服务器上

code-push release-react 注册的应用名 android --t 1.0.1 --dev false --d Staging --des"一些小修改" --m true
说明
  • android:平台 Android/ios
  • t :要对那个版本进行热更新这里是对1.0.1进行更新
  • dev:是否是开发者模式
  • d:staging/production
  • des:更新描述
  • m:是否强制升级

集成

检查更新的位置根据项目来定

codePush.checkForUpdate().then((update) => {
    if (update) {
        codePush.sync(
                {
                    ignoreFailedUpdates : false,
                    mandatoryInstallMode: codePush.InstallMode.IMMEDIATE,
                },
                (status) => {
                     switch (status) {
                        case codePush.SyncStatus.CHECKING_FOR_UPDATE:
                            this.setState({ syncMessage: "检查更新!" });
                            break;
                        case codePush.SyncStatus.DOWNLOADING_PACKAGE:
                            this.setState({ syncMessage: "正常下载安装包!" });
                            break;
                        case codePush.SyncStatus.AWAITING_USER_ACTION:
                            this.setState({ syncMessage: "等待用户操作!" });
                            break;
                        case codePush.SyncStatus.INSTALLING_UPDATE:
                            this.setState({ syncMessage: "正在安装...,请等待!" });
                            break;
                        case codePush.SyncStatus.UP_TO_DATE:
                            this.setState({ syncMessage: "已经是最新版本了!", progress: false });
                            break;
                        case codePush.SyncStatus.UPDATE_IGNORED:
                            this.setState({ syncMessage: "更新取消!", progress: false });
                            break;
                        case codePush.SyncStatus.UPDATE_INSTALLED:{
                            this.setState({ syncMessage: "新的版本已经安装完成,请重新登录!", progress: false });
                            codePush.restartApp();
                            break;
                        }
                        case codePush.SyncStatus.UNKNOWN_ERROR:
                            this.setState({ syncMessage: "更新发生错误,请重新启动程序!", progress: false });
                            break;
                    }
                },
                (progress) => {
                    this.setState({ progress });
                }
            );

    }
    else {
        console.log('已经是最新版本');
        this.init();
    }
})
 类似资料:

相关阅读

相关文章

相关问答