日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小程序强制自动更新

發布時間:2023/11/29 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小程序强制自动更新 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(3)強制更新官方版

背景

此前有開發者反饋小程序發布新版本后,新版本覆蓋率比較慢,因為小程序的更新機制是異步的,部分用戶不會馬上應用上新版本。

小程序啟動會有兩種情況,一種是「冷啟動」,一種是「熱啟動」。 假如用戶已經打開過某小程序,然后在一定時間內再次打開該小程序,此時無需重新啟動,只需將后臺態的小程序切換到前臺,這個過程就是熱啟動;冷啟動指的是用戶首次打開或小程序被微信主動銷毀后再次打開的情況,此時小程序需要重新加載啟動。

小程序的異步更新發生在冷啟動過程,當發現新版本后,會異步下載新版本的代碼包,但不會馬上應用上最新版本,需要等小程序下一次冷啟動,才會應用上新版本。

解決思路

為了解決這個問題,我們內部也經歷了數個方案的討論,這里簡單介紹下:

1. 同步檢查更新(放棄):可能是最直接的解決思路,但主要問題是會影響小程序的啟動速度,當下小程序的更新迭代是非常頻繁的,部分用戶可能每次啟動都命中更新,如果需要同步檢查更新+同步下載新的版本,那將會影響這部分用戶的啟動體驗。

2. 模塊熱替換(放棄):從技術上來說,這是最好的方案,小程序運行起來后,在打開新頁面時,馬上應用新版本里的頁面,但這就會存在新舊邏輯、頁面共存問題,對于開發者來說,反而更不好處理,特別是涉及到全局變量時,情況會更復雜,對于我們已有的框架來說,也是一個大挑戰,不過這個也是我們之后努力的方向。

3. 定時 check 新版本(目前方案):6.6.3 及以上版本的客戶端,會定時 check 最近使用過的小程序是否有發布新版本;如果有,下次打開的時候會同步更新新版本再打開。這可以保證在新版本發布 24 小時后,所有小程序都能使用最新版本。(這部分是微信客戶端自身優化,開發者無需關心)

4. 異步更新 + 強制更新(目前方案):同步檢查更新與模塊熱替換兩者之間的折衷方案,即還是維持異步更新機制,在異步下載完小程序代碼包后,提供重啟小程序的能力,這樣在遇到緊急問題時可以馬上解決。

異步更新 + 強制更新方案介紹

從基礎庫 1.9.90 開始,我們提供了?wx.getUpdateManager?接口,使用該接口,可以獲知是否有新版本小程序、新版本是否下載好以及應用新版本的能力。

當小程序冷啟動時,會自動向微信后臺請求新版本信息,如果有新版本,會馬上觸發新版本的下載。開發者可以通過 wx.getUpdateManager,獲知當前更新的狀態。

wx.getUpdateManager 接口會返回一個 UpdateManager 實例,UpdateManager 包含了三個回調:

1. onCheckForUpdate:當小程序向后臺請求完新版本信息,會通知這個版本告知檢查結果
2. onUpdateReady:當新版本下載完成,會回調這個事件
3. onUpdateFailed: 當新版本下載失敗,會回調這個事件

還有重啟應用新版本的接口:

1. applyUpdate:當新版本下載完成(onUpdateReady),調用該方法會強制當前小程序應用上新版本并重啟

具體示例:

// wx.getUpdateManager 在 1.9.90 才可用,請注意兼容 const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate(function?(res) { ?// 請求完新版本信息的回調 ?console.log(res.hasUpdate) }) updateManager.onUpdateReady(function?() { ?wx.showModal({ ? ?title:?'更新提示', ? ?content:?'新版本已經準備好,是否馬上重啟小程序?', ? ?success:?function?(res) { ? ? ?if?(res.confirm) { ? ? ? ?// 新的版本已經下載好,調用 applyUpdate 應用新版本并重啟 ? ? ? ?updateManager.applyUpdate() ? ? ?} ? ?} ?}) }) updateManager.onUpdateFailed(function?() { ?// 新的版本下載失敗 })

更詳細信息可以參考?UpdateManager 的詳細文檔

最佳實踐

從用戶體驗上來說,我們還是建議只在非常必要時才強制用戶重啟更新,例如出現線上緊急 BUG。通常情況下,可以選通過?wx.showModal?彈出選擇框讓用戶選擇是否重啟更新(實現請參考示例代碼)。

如何調試

最新版本的微信開發者工具提供了強制更新的調試能力,通過編譯模式 - 編輯編譯模式 - 勾上「下次編譯時模擬更新」即可在開發者工具上調試強制更新功能。

?

鏈接:https://developers.weixin.qq.com/community/develop/doc/000c2430d30b70251e86f0a0256c09

轉載于:https://www.cnblogs.com/zhoudawei/p/10494108.html

總結

以上是生活随笔為你收集整理的小程序强制自动更新的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。