React Native 0.60以上集成code push热更新

安装 CodePush CLI

管理 CodePush 账号需要通过 NodeJS-based CLI。只需要在终端输入 npm install -g code-push-cli,就可以安装了。
安装完毕后,输入 code-push -v查看版本,如看到版本代表成功。

创建一个CodePush 账号

在终端输入code-push register,会打开注册页面让你选择授权账号。

授权通过之后,CodePush会告诉你“access key”,复制此key到终端即可完成注册。完成注册后会自动登录账号,你的session文件将会写在 /Users/你的用户名/.code-push.config。

相关命令
code-push login 登陆
code-push loout 注销
code-push access-key ls 列出登陆的token
code-push access-key rm 删除某个 access-key

在CodePush服务器注册app

为了让CodePush服务器知道你的app,我们需要向它注册app: 在终端输入code-push app add <appName>即可完成注册。

在这里插入图片描述
注册完成之后会返回一套deployment key,该key在后面步骤中会用到。如果你的应用分为Android和iOS版,那么在向CodePush注册应用的时候需要注册两个App获取两套deployment key,如:

code-push app add MyApp-Android
code-push app add MyApp-iOS

相关命令
code-push app add 在账号里面添加一个新的app
code-push app remove 或者 rm 在账号里移除一个app
code-push app rename 重命名一个存在app
code-push app list 或者 ls 列出账号下面的所有app
code-push app transfer 把app的所有权转移到另外一个账号

集成CodePush SDK(Android)

1.安装RN版code-push插件
npm install --save react-native-code-push
2.到android/app/build.gradle 头部引入codepush.gradle
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
3.到MainApplication.java中添加
import com.microsoft.codepush.react.CodePush;

public class MainApplication extends Application implements ReactApplication {

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        ...

        // 添加的内容---------------------------
        @Override
        protected String getJSBundleFile() {
            return CodePush.getJSBundleFile();
        }
    // 添加的内容---------------------------
    };
}
4.在strings.xml 添加deployment key
<string moduleConfig="true" name="CodePushDeploymentKey">你的DeploymentKey</string>

检查更新

在App启动时检查更新,最简单的方式是在根component中进行请求

   CodePush.sync({
      updateDialog: {
        appendReleaseDescription: false,
        descriptionPrefix: '\n\n更新内容:\n',
        title: '更新',
        mandatoryUpdateMessage: '有最新版本需要更新',
        mandatoryContinueButtonLabel: '确定'
      }
    })

如果你期望更及时的获得更新,可以在每次APP从后台进入前台的时候去主动的检查更新,在应用的根component的componentDidMount中添加如下代码:

AppState.addEventListener("change", (newState) => {
    newState === "active" && codePush.sync();
});

sync方法,提供了如下属性以允许你定制sync方法的默认行为:

  • deploymentKey (String): 部署key,指定你要查询更新的部署秘钥,默认情况下该值来自于Info.plist(Ios)和MianActivity.java(Android)文件,你可以通过设置该属性来动态查询不同部署key下的更新。
  • installMode (codePush.InstallMode): 安装模式,用在向CodePush推送更新时没有设置强制更新(mandatory为true)的情况下,默认codePush.InstallMode.ON_NEXT_RESTART即下一次启动的时候安装。
    mandatoryInstallMode (codePush.InstallMode):强制更新,默认codePush.InstallMode.IMMEDIATE。
  • minimumBackgroundDuration (Number):该属性用于指定app处于后台多少秒才进行重启已完成更新。默认为0。该属性只在installMode为InstallMode.ON_NEXT_RESUME情况下有效。
  • updateDialog (UpdateDialogOptions) :可选的,更新的对话框,默认是null,包含以下属性
    appendReleaseDescription (Boolean) - 是否显示更新description,默认false
    descriptionPrefix (String) - 更新说明的前缀。 默认是” Description: “
    mandatoryContinueButtonLabel (String) - 强制更新的按钮文字. 默认 to “Continue”.
    mandatoryUpdateMessage (String) - 强制更新时,更新通知. Defaults to “An update is available that must be installed.”.
    optionalIgnoreButtonLabel (String) - 非强制更新时,取消按钮文字. Defaults to “Ignore”.
    optionalInstallButtonLabel (String) - 非强制更新时,确认文字. Defaults to “Install”.
    optionalUpdateMessage (String) - 非强制更新时,更新通知. Defaults to “An update is available. Would you like to install it?”.
    title (String) - 要显示的更新通知的标题. Defaults to “Update available”.

发布更新

通过code-push release-react发布更新

code-push release-react MyApp-iOS ios  --t 1.0.0 --dev false --d Production --des "1.优化操作流程" --m true

其中参数–t为二进制(.ipa与apk)安装包的的版本;–dev为是否启用开发者模式(默认为false);–d是要发布更新的环境分Production与Staging(默认为Staging);–des为更新说明;–m 是强制更新。

关于code-push release-react更多可选的参数,可以在终端输入code-push release-react进行查看。

另外,我们可以通过code-push deployment ls <appName>来查看发布详情与此次更新的安装情况。

发布了82 篇原创文章 · 获赞 155 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/hxl517116279/article/details/104053110