所有流程如下
1.安裝 CodePush CLI
2.注冊(cè) CodePush賬號(hào)
3.在CodePush服務(wù)器注冊(cè)App
4.RN代碼中集成CodePush
5.原生應(yīng)用中配置CodePush
6.發(fā)布更新的版本
①code-push -v 檢查是否安裝過code-push命令行工具巡验,安裝過可跳過下面步驟:
npm install -g code-push-cli
②code-push login 查看是否已注冊(cè)并登錄,如果已登錄可跳過下面步驟:
code-push register會(huì)自動(dòng)打開一個(gè)授權(quán)網(wǎng)頁毙替,選擇其中一種方式授權(quán)獲取訪問code-push服務(wù)器的token秘鑰叉谜,
這里我選擇的是github賬號(hào),授權(quán)后復(fù)制這個(gè)token痊臭,然后在終端中將這個(gè)token填寫進(jìn)去即可
③在CodePush服務(wù)器注冊(cè)App
添加iOS平臺(tái)應(yīng)用
$ code-push app add iOSRNHybrid ios react-native
添加Android平臺(tái)應(yīng)用
$ code-push app add iOSRNHybridForAndroid Android react-native
④RN代碼中集成CodePush
#安裝組件
$ npm install react-native-code-push --save
#添加原生依賴哮肚,這里添加依賴我們使用自動(dòng)添加依賴的方式
$ react-native link react-native-code-push
#如無法添加原生依賴 可采用rnpm關(guān)聯(lián),
npm I -g rnpm //安裝rnpm
rnpm link react-native-code-push //關(guān)聯(lián)原生
RN項(xiàng)目中代碼可參考以下鏈接(任意一個(gè)都可以)
CrazyCodeBoy的簡(jiǎn)書
光強(qiáng)_上海的簡(jiǎn)書
注:最后提醒一點(diǎn) 如果檢查更新不是在App啟動(dòng)的時(shí)候更新(在根組件中實(shí)現(xiàn)的檢查更新),
而是通過設(shè)置手動(dòng)點(diǎn)擊檢查更新,那么必須在根組件的`componentDidMount()方法中添加
codePush.notifyAppReady()`,否則應(yīng)用會(huì)出現(xiàn)第一次重啟是更新版,第二次重啟又回滾到舊版的現(xiàn)象广匙。
主要代碼如下
codePush.checkForUpdate(deploymentKey)
.then((update)=>{
if(!update) {
Alert.alert("提示","已是最新版本--", [{text:"Ok",onPress:()=>{console.log("點(diǎn)了OK");}}]);
}else{
codePush.sync({
deploymentKey: deploymentKey,
updateDialog: {
optionalIgnoreButtonLabel:'稍后',
optionalInstallButtonLabel:'立即更新',
optionalUpdateMessage:'有新版本了允趟,是否更新?',
title:'更新提示'},
installMode: codePush.InstallMode.IMMEDIATE
},(status)=>{
switch(status) {
casecodePush.SyncStatus.DOWNLOADING_PACKAGE:
console.log("DOWNLOADING_PACKAGE");
break;
casecodePush.SyncStatus.INSTALLING_UPDATE:
console.log(" INSTALLING_UPDATE");
break;
}},(progress)=>{
console.log(progress.receivedBytes +" of "+ progress.totalBytes +" received.");
});
}
})
⑤Xcode中配置
1.Project-info-Configurations 添加新的環(huán)境(例:Staging)
2.Per-configuration Build Products Path - Staging 修改value為$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)
3.選擇Build Settings tab鸦致,點(diǎn)擊 + 號(hào)潮剪,選擇Add User-Defined Setting,將key設(shè)置為CODEPUSH_KEY分唾,Release 和 Staging的值為前面創(chuàng)建的Deployment Key 抗碰,我們直接復(fù)制進(jìn)去即可
4.打開Info.plist文件,在CodePushDeploymentKey中輸入$(CODEPUSH_KEY)绽乔,并修改Bundle versions string, short為三位
至此弧蝇,iOS平臺(tái)CodePush環(huán)境集成完畢,發(fā)布一個(gè)更新包試試吧
注意:CodePush默認(rèn)是更新Staging環(huán)境的,如果發(fā)布生產(chǎn)環(huán)境的更新包折砸,需要指定--d參數(shù):--d Production看疗,如果發(fā)布的是強(qiáng)制更新包,需要加上 --m true強(qiáng)制更新
$ code-push release-react Biaze ios --t 1.0.0 --dev false --d Production --des "這是第一個(gè)更新包" --m true
`這句命令意思是向code-push服務(wù)器中1.0.0版本的iOSRNHybrid應(yīng)用發(fā)布一個(gè)強(qiáng)制(--m true)的生產(chǎn)環(huán)境(--d Production)下的更新包睦授。`
??????如果覺得對(duì)您有幫助两芳,麻煩請(qǐng)點(diǎn)個(gè)??哦