## 一、更新規則
1. CodePush部署版本 > App版本
? ? 更新可用,但當前版本比運行版本高。不作更新
2. CodePush部署版本 < App版本
? ? 不執行更新處理
1. ?CodePush部署版本 == App版本
自動下載更新,并根據加載策略加載最新bundle
4. 你APP內plist文件寫的版本號可能是1.0.0,所以你的reactjs打包上傳的版本也要是1.0.0(而不是1.0.1這樣遞增),你需要和APP保持一致,然后服務器會根據你最新上傳的且和APP一樣的版本作為最新版。
5. 范圍表達式

## 二、 回滾?
當部署的版本不同時,不能跨版本回滾。
? ? 例如:CodePush歷史版本中為2.10.1,此時發布2.10.2版本。當從2.10.2發起回滾操作回到2.10.1時,是不可行的。
## 三、 其他
* 蘋果App允許使用熱更新[Apple's developer agreement](https://developer.apple.com/programs/ios/information/iOS_Program_Information_4_3_15.pdf), 為了不影響用戶體驗,規定必須使用靜默更新。 Google Play不能使用靜默更新,必須彈框告知用戶App有更新。中國的android市場必須采用靜默更新(如果彈框提示,App會被“請上傳最新版本的二進制應用包”原因駁回)。
* react-native 不同平臺bundle包不一樣,在使用code-push-server的時候必須創建不同的應用來區分(eg. CodePushDemo-ios 和 CodePushDemo-android)
* react-native-code-push只更新資源文件,不會更新java和Objective C,所以npm升級依賴包版本的時候,如果依賴包使用的本地化實現, 這時候必須更改應用版本號(ios修改Info.plist中的CFBundleShortVersionString, android修改build.gradle中的versionName), 然后重新編譯app發布到應用商店。
* 推薦使用code-push release-react 命令發布應用,該命令合并了打包和發布命令(eg. code-push release-react CodePushDemo-ios ios -d Production)
* 每次向App Store提交新的版本時,也應該基于該提交版本同時向code-push-server發布一個初始版本。(因為后面每次向code-push-server發布版本時,code-puse-server都會和初始版本比較,生成補丁版本)