React-Native CodePush Android 熱更新

 

溫馨提示

本地搭建CodeServer,可以查看我另外一篇文章:https://blog.csdn.net/he_wen_jian/article/details/91415296

1:首先在測試CodePush熱更新前一定不要用模擬器測試。

2:react-native run-android 手機首次加載頁面後關閉Nodejs。

3:1.0.0無法更新到1.0.1,只能同一個版本上更新(個人測試結果不知道具體是不是這樣)

# 命令彙總
$code-push app list 可以查看創建好的APP
$code-push deployment ls <APP_NAME> -k 查看Deployment Key
$code-push app add <app_Name_android> android react-native 在賬號裏面添加一個新的app
$code-push app add <app_Name_ios> ios react-native 在賬號裏面添加一個新的app
$code-push app remove <app_Name> 或者 rm 在賬號裏移除一個app
$code-push app rename 重命名一個存在app
$code-push app list 或則 ls 列出賬號下面的所有app
$code-push app transfer 把app的所有權轉移到另外一個賬號

實操:

1:安裝 CodePush CLI: 

npm install -g code-push-cli

2:創建賬號

這將會啓動瀏覽器,要求驗證你的Github或微軟帳號。一旦驗證成功,它將創建一個CodePush帳號跟你的Github或MSA相連,並生成一個訪問密鑰(Access Key),你可以拷貝/粘貼到CLI以便登錄。

注意:註冊成功後,你就已經自動登錄了。所以除非你明確登出了,否則你不需要在此機器上再次登錄。

code-push register

3:添加應用

創建應用一般使用-Android -IOS,區分連個不同平臺,方便於更顯管理

code-push app add MyApp-Android
code-push app add MyApp-IOS

可用通過:Code-Push app ls 查看所用應用

4:RN項目安裝:react-native-code-push

npm install --save react-native-code-push

5:RN項目添加綁定:

react-native link react-native-code-pus

根據提示輸入測試環境的Staging對應的Key

6:通過調試模式安裝的應用爲“Staging”,通過gradlew assembleRelease打包的應用爲“Production”.

7:RN項目代碼:

在App.js中加入該代碼,如果使用Production環境,請更換android/app/src/main/res/values/strings.xml中的:

moduleConfig
import CodePush from "react-native-code-push";


syncImmediate() {
        CodePush.sync(
            { installMode: CodePush.InstallMode.IMMEDIATE, updateDialog: true,
                updateDialog : {
        //是否顯示更新描述
        appendReleaseDescription : true ,
        //更新描述的前綴。 默認爲"Description"
        // descriptionPrefix : <Text style={{color:'white'}}>更新內容</Text>,
        // descriptionPrefix : "\n \nDescrption:\n1、This is descriptionPre1123\n2、descriptionPre2\n\n" ,
        descriptionPrefix : "\n \n更新內容:\n" ,
        //強制更新按鈕文字,默認爲continue
        mandatoryContinueButtonLabel : "立即更新" ,
        //強制更新時的信息. 默認爲"An update is available that must be installed."
        mandatoryUpdateMessage : "必須更新後才能使用",
        // mandatoryUpdateMessage : "An update is available that must be installed.",   //"必須更新後才能使用" ,
        //非強制更新時,按鈕文字,默認爲"ignore"
        optionalIgnoreButtonLabel : '稍後' ,
        //非強制更新時,確認按鈕文字. 默認爲"Install"
        optionalInstallButtonLabel : '極速更新' ,
        //非強制更新時,檢查到更新的消息文本
        optionalUpdateMessage : '有新版本了,是否更新?' ,
        //Alert窗口的標題
        title : '更新提示'
    } ,
            },
            this.codePushStatusDidChange.bind(this),
            this.codePushDownloadDidProgress.bind(this)
        );
    }
// 監聽更新狀態
    codePushStatusDidChange(syncStatus) {
        switch(syncStatus) {
            case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
                this.setState({ syncMessage: "Checking for update." });
                break;
            case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
                this.setState({ syncMessage: "Downloading package." });
                break;
            case CodePush.SyncStatus.AWAITING_USER_ACTION:
                this.setState({ syncMessage: "Awaiting user action." });
                break;
            case CodePush.SyncStatus.INSTALLING_UPDATE:
                this.setState({ syncMessage: "Installing update." });
                break;
            case CodePush.SyncStatus.UP_TO_DATE:
                this.setState({ syncMessage: "App up to date.", progress: false });
                break;
            case CodePush.SyncStatus.UPDATE_IGNORED:
                this.setState({ syncMessage: "Update cancelled by user.", progress: false });
                break;
            case CodePush.SyncStatus.UPDATE_INSTALLED:
                this.setState({ syncMessage: "Update installed and will be applied on restart.", progress: false });
                break;
            case CodePush.SyncStatus.UNKNOWN_ERROR:
                this.setState({ syncMessage: "An unknown error occurred.", progress: false });
                break;
        }
    }
codePushDownloadDidProgress(progress) {
       
    }

8:修改版本號爲三位數如:1.0.0,(創建項目時默認爲1.0)

9:推送更新:

Production:

code-push release-react xiaoqi-android android -t 1.0.2 -d Production --description "1.加載進度 。"

Staging:

code-push release-react xiaoqi-android android -t 1.0.2 -d Staging --description "1.加載進度 。"

10:查詢推送列表:

code-push deployment history xiaoqi-android Production

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章