安装 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>
来查看发布详情与此次更新的安装情况。