• <dd id="q424i"></dd>
    <xmp id="q424i">
    <xmp id="q424i">

    解析 使用Google Play來更新應用

    admin 2020-12-02 PM 289℃ 0條
    • 引:

    本文主要針對上架于google play的應用

    大部分應用程序都會有內部更新的功能,用于新功能迭代或修復Bug。多數的應用會把安裝包存放在自己部署的服務器上,然后處理apk下載、進度監聽、斷點續傳、覆蓋安裝等步驟,頗為麻煩。對此,google提供了應用內更新的相關API。


    應用內更新是一項 Play Core 庫功能,它引入了一個新的請求流程,用于提示活躍用戶更新您的應用。

    • 關于使用解析:

    ● 應用內更新最低支持 API 21

    導入play core庫

    dependencies {
    implementation 'com.google.android.play:core:1.8.3'
    }
    

    在請求更新之前,您需要先檢查您的應用是否有可用更新。如需檢查是否有更新,請使用 AppUpdateManager,如下所示:

    val appUpdateManager = AppUpdateManagerFactory.create(context)
    val appUpdateInfoTask = appUpdateManager.appUpdateInfo
    appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
        if (appUpdateInfo.updateAvailability()==UpdateAvailability.UPDATE_AVAILABE
            //有可用的更新
            //...
        ) 
    }
    

    檢測到有可用的更新后,可以執行兩種更新方式:

    靈活更新(FLEXIBLE)

    靈活更新會展示一個對話框,更新是可選的,如果用戶選擇了更新,可繼續使用應用,會由后臺下載最新版本。

    3.3.jpg

    啟動靈活更新代碼如下:

    fun updateFlexible(){
      if (appUpdateInfoTask.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
            appUpdateManager.registerListener {
            if (it.installStatus() == InstallStatus.DOWNLOADED) {
                    appUpdateManager.completeUpdate()
                }
            }
            appUpdateManager.registerListener(listener)
            appUpdateManager.startUpdateFlowForResult(appUpdateInfoTask, AppUpdateType.FLEXIBLE, activity, 1)
       }
    }
    

    使用靈活更新需要監聽下載狀態的變化,下載完成后調用completeUpdate()進行安裝。

    強制更新(IMMEDIATE)

    強制更新會啟動一個全屏的Activity,更新過程用戶無法繼續使用應用,必須等到更新完成。
    3.4.jpg
    啟動強制更新代碼如下:

    fun updateImmediate(){
        if (appUpdateInfoTask.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
            appUpdateManager.startUpdateFlowForResult(appUpdateInfoTask, AppUpdateType.IMMEDIATE, activity, 2)
        }
    }
    

    強制更新會自動覆蓋安裝,不需要監聽下載狀態。

    這里需要注意的是,即使是強制更新,用戶也是可以取消的,如果我們要做到在真正的強制更新(不更新無法使用),還需要這樣做:

        public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            if(requestCode == 2 && resultCode == Activity.RESULT_CANCELED){
                AppUtil.closeApp()   
            }
        }
    

    解析總結:

    使用play core API可以快速的接入應用內更新的功能。更多請參閱官方文檔:

    https://developer.android.google.cn/guide/playcore/in-app-updates?hl=da


    特殊說明:本文作者來自圖片水印,鳴謝!

    非特殊說明,本博所有文章均為博主原創。

    評論啦~


    欧洲美女与动zooz_午夜时刻在线观看_诱人的女老板中文字幕_国产大香伊蕉人在播放_亚洲а∨天堂2019无码_婷婷五月在线精品免费视频