安装 code-push-cli
1 | npm install -g code-push-cli |
注册 code-push 账号
1 | code-push register |
会打开一个网页,让你用microsoft 或 github 账号注册,
注册完会出现一个token,把该token粘贴到终端
登录 code-push
1 | code-push login |
会打开一个网页,让你登录,
登录完会出现一个token,把该token粘贴到终端
将app注册到code push
1 | code-push app add 2048-ios ios react-native |

添加协同开发者
1 | code-push collaborator add <appName> <collaboratorEmail> |
安装 react-native-code-push
1 | yarn add react-native-code-push |
如果是通过 react-init 创建工程的,可以运行以下命令就可以了:
1 | react-native link react-native-code-push |
如果是现有项目集成 react native ,在Podfile添加
1 | pod 'CodePush', :path => '../node_modules/react-native-code-push' |
运行:
1 | pod install |
还要在info.plist中添加CodePushDeploymentKey字段(react-native link的不用这步),值就是上面生成的key,Staging和Production, 按需填写,如果想配置不同build不同key可以参考这个 链接
简单配置
多build配置
Project -> Info -> Configurations
Project -> Build Settings -> User-Defined -> CODEPUSH_KEY
Info.plist
这两处改成
1 | $(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME) |


替换jsCodeLocation
1 | NSURL *jsCodeLocation; |
到这配置基本完成,有问题到这个 链接 看看
code push 使用
在root Component 套上codePush, 这个配置会在app启动时检查更新并自动下载,下次启动时自动安装更新。如果是强制更新,则立即更新。
1 | import codePush from "react-native-code-push"; |
如果想更频繁检查更新,使用如下配置
1 | let codePushOptions = { checkFrequency: codePush.CheckFrequency.ON_APP_RESUME }; |
当然,也可以手动更新
1 | let codePushOptions = { checkFrequency: codePush.CheckFrequency.MANUAL }; |
code push 发布更新
1 | code-push release-react <appName> <platform> [options] |
example:
1 | # 添加描述 |
通过下面命令查看部署情况
1 | code-push deployment ls 2048-ios -k |

code-push 有很多可配置选项,具体可运行下列命令查看
1 | code-push release-react -h |
code push 支持差量更新,每次客户端只会下载改变的部分。code push 客户端有回滚机制,当你发布导致crash的更新,会自动回滚到上个版本
1 | # 可以回滚服务端代码 |
code push 动态更新deployment key
1 | // Imagine that "userProfile" is a prop that this component received |
添加 deployment
1 | code-push deployment add 2048-ios test-variant-one |

有这两个功能我们可以做一些比较有趣的事,比如进行 A/B Test:
服务端随机给不同用户分发不同Deployment Key(KeyA, KeyB),比如50万用户是KeyA, 50万是KeyB。
现在有两个方案(版本)A、B,把方案A推送给KeyA的用户,方案B推送给KeyB的用户。结果A方案创造了10万收入,B方案创造了40万收入,显然B方案比较好。这样就可以把B方案推广给原来KeyA的用户。