1. 引用CodePush高阶组件,应用在项目根组件中:

import CodePush from "react-native-code-push";class App extends Component {
}const codePushOptions = { checkFrequency: CodePush.CheckFrequency.MANUAL };App = CodePush(codePushOptions)(App);export default codePush(App);

2. 使用CodePush提供的检查更新并执行更新的方法:

 // 检测是否有新的更新CodePush.checkForUpdate(codePushDeploymentKey).then((update) => {Console.log('update', update);if (!update) {return;}if (update.isMandatory) {// 强制热更新Modal.alert('更新提示',update.description ? `${update.description}` : '我们做了一些内容邀您更新体验',[{text: '立即更新',style: { color: '#eb3136', fontSize: getRealDP(45) },onPress: () => {CodePush.sync({deploymentKey: codePushDeploymentKey,mandatoryInstallMode: CodePush.InstallMode.IMMEDIATE, // 强制热更则立即安装updateDialog: false},(syncStatus) => {switch (syncStatus) {case CodePush.SyncStatus.CHECKING_FOR_UPDATE: // 正在查询CodePush服务器以进行更新。break;case CodePush.SyncStatus.DOWNLOADING_PACKAGE: // 正在从CodePush服务器下载可用更新。// 强制弹窗更新,下载启动时显示进度条modalDeviceEventEmitter.emit(DeviceEventName.HOT_UPDATE_MODAL_VISIBLE, {totalPackageSize: conver(update.packageSize), // 热更新包总大小});break;case CodePush.SyncStatus.AWAITING_USER_ACTION: // 提供更新,并向最终用户显示确认对话框。break;case CodePush.SyncStatus.INSTALLING_UPDATE: // 已下载可用更新,即将安装。break;case CodePush.SyncStatus.UP_TO_DATE: // 该应用程序是CodePush服务器的最新版本。break;case CodePush.SyncStatus.UPDATE_IGNORED: // 应用程序有一个可选的更新,最终用户选择忽略。break;case CodePush.SyncStatus.UPDATE_INSTALLED: // 已安装可用更新break;case CodePush.SyncStatus.UNKNOWN_ERROR: // 同步操作遇到未知错误break;default:break;}},({ receivedBytes, totalBytes }) => {// 标记热更新进度事件DeviceEventEmitter.emit(DeviceEventName.HOT_UPDATE_PROGRESS,{progress: parseFloat(receivedBytes / totalBytes).toFixed(2) * 100, // 当前下载进度(0~100)receivedPackageSize: conver(receivedBytes), // 热更新包下载过程大小});},({ isUpdateAppVersion, appVersion }) => {Console.log('appVersion更新', `${isUpdateAppVersion}&&${appVersion}`);});},},]);} else {// 静默热更新CodePush.sync({deploymentKey: codePushDeploymentKey,installMode: CodePush.InstallMode.ON_NEXT_RESTART, // 静默则下次启动时安装updateDialog: false},);}});

接下来详细描述几个重要的属性:

1. “checkFrequency”即检查频率, 在步骤1的codePushOptions中配置了这个参数,啥意思呢,我解释为检查更新的方式,有如下三种:

 // 禁用自动检查更新,用于手动检查更新,只有主动调用sync方法时检查
CodePush.CheckFrequency.MANUAL
// 热启动时检查更新,即APP在使用时退到后台重新打开时检查
CodePush.CheckFrequency.ON_APP_RESUME
// 冷启动时检查更新,即APP杀死进程后重启时检查
CodePush.CheckFrequency.ON_APP_START

2. “installMode”即安装模式

codePush.InstallMode.IMMEDIATE 安装更新并立刻重启应用codePush.InstallMode.ON_NEXT_RESTART 安装更新,但不立马重启,直到下一次重新进入codePush.InstallMode.ON_NEXT_RESUME 安装更新,但是不立马重新启动,直到下一次从后台恢复到前台codePush.InstallMode.ON_NEXT_SUSPEND 下一次处于后台时

3. "isMandatory" 是CheckForUpdate返回的一个重要参数,即是否强制热更新。true 强制,false 不强制。

4. 注意:建议不使用code push 源码内的系统Alert弹窗api,经反馈部分安卓机型不能正常显示更新弹窗,需要自定义弹窗或者使用第三方Modal,例"antd-mobile"库的modal窗或“react-native-modal”等。

关于react native code push的JS端配置攻略相关推荐

  1. Apple PUSH Notication Service (APNS) 配置攻略

    iOs 3.0以后就支持APNS( apple push notication Service).下面介绍怎么配置APNS服务.APNS 分为客户端与服务器端2个部分:客户端部分:1 创建一个App ...

  2. 微软云计算操作系统Windows Azure 平台——云+端全面攻略

    微软云计算操作系统Windows Azure 平台--云+端全面攻略 Windows Azure Platform 开发入门 在云计算时代,有三个平台非常重要,即开发平台.部署平台和运营平台.Wind ...

  3. 友盟统计封装android,react native 友盟统计 Android 端集成

    ios 端 可参考:https://www.jianshu.com/p/879d28ee74e6 趁热打铁吧,把刚才已经完成的友盟统计集成记录下 Android端集成: 分下面几部: 步骤 sdk的集 ...

  4. React Native开发之——Webstorm开发RN配置

    前言 前文React Native开发之--Webstorm快捷开发介绍了使用Webstorm快捷开发React Native, 本文介绍Webstorm开发RN配置. Webstorm开发RN配置 ...

  5. Vue.js——vue-resource全攻略

    概述 上一篇我们介绍了如何将$.ajax和Vue.js结合在一起使用,并实现了一个简单的跨域CURD示例.Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的D ...

  6. QlikSense移动端使用攻略

    公司内部署QlikSense服务器,除了在电脑上用浏览器访问,也可以在移动端进行访问. 移动端访问在如下网址有英文详细介绍:https://community.qlik.com/docs/DOC-19 ...

  7. $ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略

    博主之前写过一篇文章<html5与EmguCV前后端实现--人脸识别篇>,叙述的是opencv和C#的故事.最近在公司服务器上更新了一套nodejs环境,早就听闻npm上有opencv模块 ...

  8. C语言中文网js,JS语句完全攻略

    JavaScript 语言定义了 20 套(或个)语句命令,分别执行不同的操作. 以用途划分,JavaScript 语句可以分为:声明.分支控制.循环控制.流程控制异常处理和其他. 以结构划分,Jav ...

  9. React Native Android 源码框架浅析(主流程及 Java 与 JS 双边通信)

    [工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 有了前面<React Native Android 从学车到 ...

最新文章

  1. 我的Chrome常用快捷键
  2. 【数理知识】《矩阵论》方保镕老师-第6章-广义逆矩阵及其应用
  3. boost::hana::remove_at_c用法的测试程序
  4. android手机定位
  5. 硅谷程序员的回归能拯救印度“芯”吗?
  6. mpandroidchart 设置x轴数据_跟小白学Python数据分析——绘制条形图
  7. ORA-12638处理
  8. 软件工程 2016.7.3 日报
  9. centos 7 安装pip
  10. Lena图像原图及由来
  11. 常用的富文本编辑器插件
  12. 《精益创业》读书笔记
  13. css横向导航栏布局,CSS04--对齐、 布局、导航栏
  14. javascript飞机大战-----007爆炸效果
  15. 中兴2618交换机的STP环网基本操作
  16. 软件测试精品书单推荐指南!
  17. 如何查找oracle中的服务器端口号,客户端端口号,监听端口及号Enterprise Manager Console HTTP 端口
  18. 深度Deepin系统关机或重启的时候提示unattended upgrades shutdown的解决办法
  19. 读《消失的真实》有感
  20. 怎样恢复回收站中已被删除的文件

热门文章

  1. 回归预测 | MATLAB实现PSO-GRNN多输入单输出回归预测
  2. q7固件 数码视讯_数码视讯Q7的刷机 - osc_8quu62cg的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 加密狗原理-高强度加密-程序加密技巧
  4. Google官方详解 Activity【项目实例不容错过!】
  5. 基于JavaEE的婚恋交友网站管理系统_JSP网站设计_SqlServer数据库设计
  6. 复选框+按钮的disabled属性
  7. 旧貌换新颜,捷径系统助力老旧小区向智能化迈进
  8. 大端模式和小端模式的区别
  9. hls二次加密 m3u8_解决加密的HLS(m3u8)视频转换问题
  10. klee 检测漏洞-四个实例