用CodePush在React Native App中做熱更新

来源:https://www.cnblogs.com/mafengzi/archive/2019/10/07/11632498.html
-Advertisement-
Play Games

最近在學React Native,學到了CodePush熱更新。 老師講了兩種實現的方法,現將其記錄一下。 相比較原生開發,使用React Native開發App不僅能節約開發成本,還能做原生開發不能實現的熱更新功能。 使用原生技術開發App時,每次代碼做了改動後,都需要提交到應用商店進行審核,審核 ...


最近在學React Native,學到了CodePush熱更新。

老師講了兩種實現的方法,現將其記錄一下。

相比較原生開發,使用React Native開發App不僅能節約開發成本,還能做原生開發不能實現的熱更新功能。

使用原生技術開發App時,每次代碼做了改動後,都需要提交到應用商店進行審核,審核通過後,需要等用戶重新下載安裝後才會生效。而如果使用React Native開發App,開發者可隨時發佈新版本,不用經過應用商店的審核,用戶即可使用到新版本,並且還可做到不用經過用戶的同意就強制安裝新版本。

CodePush是微軟的技術,因為伺服器在國外,所以不太穩定。如果開發的App是針對國內市場的,應該使用CodePush中國

要使用CodePush,需安裝cpcn-react-native依賴包。可使用官方提供的工具cpcn-client來安裝依賴包。cpcn-client的下載地址是:http://code-push.cn/docs/1010.htm 。

代碼實現比較簡單。第一種方法是直接改變App.js組件:

import cpcn from 'cpcn-react-native';

class App  extends Component {
    
}

App = cpcn(App);

export default App;

這種方法在有新版本更新時,會使用預設的提示框,提示框中的文字也是預設的。靈活性不夠。

第二種方法比較靈活,可以自定義對話框和進度條。這種方法使用 cpcn.check() 方法。

import cpcn from "cpcn-react-native";

class App extends Component {
    componentDidMount(){
        cpcn.check({
            checkCallback: (remotePackage, agreeContinueFun) => {
                if(remotePackage){

                }
            },
            downloadProgressCallback: (downloadProgress) => {

            },
            installedCallback: (restartFun) => {

            }
        });
    }
}

export default App;

將 cpcn.check() 方法寫在 App.js 的 componentDidMount 方法內,當 App 組件載入後調用此依法。

cpcn.chedk() 方法的參數:

checkCallback: 在檢查是否有可更新的版本後調用這個方法,如果 remotePackage 不是 null,表示有可更新的版本。如果要繼續更新,就調用 agreeContinueFun(true),如果不想繼續更新,就調用 agreeContinueFun(false)。

downloadProgressCallback: 在下載新版本的過程中調用這個方法。可用它的參數 downloadProgress 做進度條。downloadProgress.receivedBytes 是已經下載的位元組數,downloadProgress.totalBytes 是總位元組數。

installedCallback: 當新版本安裝完成後調用這個方法。需調用 restartFun(true) 重啟App,重啟後新版本就生效了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關係型資料庫-關係操作集合 1、 基本的關係操作 關係模型中常用的關係操作包括查詢(Query)操作和插入(Insert)、刪除 (Delete)、修改(Update)操作兩大部分。 查詢操作分為:選擇、投影、連接、除、並、差、交、笛卡爾積等; 五種基本操作:選擇、投影、並、差、笛卡爾積; 關係操作 ...
  • 本篇博文通過對ES中不同類型的欄位的建模方案進行說明, 並結合實際案例, 演示了index、stored、dynamic等參數的使用, 並歸納了ES處理關聯關係、避免太多的欄位、避免正則查詢、避免空值引起聚合結果失真等最佳實踐. 如有疑問, 留言區見
  • Mysql 單表查詢where初識 準備數據 數據基本測試 where 條件過濾 比較運算符 , 邏輯運算符, 範圍判斷, 空判斷, 模糊查詢 邏輯運算符: and, or, not Null 判斷 is null; is not null 範圍查詢 in; between...and in 用於離 ...
  • 關鍵詞:PostgreSQL 11、MySQL5.7 比較版本:PostgreSQL 11 VS MySQL5.7(innodb引擎) Oracle官方社區版 版權情況:PostgreSQL 11(免費開源)、MySQL5.7 Oracle官方社區版(免費開源) ...
  • MySQL作業分析 五張表的增刪改查: 完成所有表的關係創建 創建教師表(tid為這張表教師ID,tname為這張表教師的姓名) 創建班級表(cid為這張表班級ID,caption為這張表班級門號) 創建課程表(cid為這張表課程ID,cname為課程名稱,teacher_id為任課教師的ID) 創 ...
  • 今天小編要分享的還是Android Jetpack庫的基本使用方法,本篇介紹的內容是Jetpack Navigation組件,讓我們一起學習,為完成年初制定的計劃而努力吧! 組件介紹 導航,是指提供用戶在應用程式中的不同內容之間進行瀏覽、退出的交互功能。如我們在Android手機上常常用到的物理/虛 ...
  • axios現在最新的版本的是v0.19.0,本節我們來分析一下它的實現源碼,首先通過 gitHub地址獲取到它的源代碼,地址:https://github.com/axios/axios/tree/v0.19.0 下載後就可以看到axios的目錄結構,主目錄下有一個index.js文件,該文件比較簡 ...
  • 花費了幾周的時間斷斷續續的練習和模仿與使用JavaScript代碼實現了十大排序演算法。 裡面有每種演算法的動圖和靜態圖片演示,看到圖片可以自己先按照圖片的思路實現一下。 github中正文鏈接,點擊查看 兩年前端學習筆記:https://github.com/zhangyachang/Notes 歡迎 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...