uniapp 自动升级机能

发布时间 2023-08-03 10:59:52作者: 不刷牙的大虫子

背景

用uniapp做一个app,用离线(即原生框架)进行打包,想实现版本自动升级的功能

 

环境

安卓手机,安卓pad

方法1:用 uni.downloadFile方法下载到本地之后进行更新

           uni.downloadFile({
                        url: "https://XXXXX/xxxx.apk",
                        success: (res) => {
                            if (res.statusCode === 200) {
                                console.log('下载成功:' + res.tempFilePath);
                                plus.runtime.install(res.tempFilePath, {
                                    force:false
                                }, function(){
                                    plus.runtime.restart();
                                    
                                },function(error) {
                                    
                                })
                            } else {
                                console.log(res.statusCode);
                                
                                return ;
                            }
                        },
                        fail: (res) => {
                            console.log(res)
                            return ;
                        }
                    })

 

方法2:用【plus.downloader.createDownload】进行下载,之后更新

var dtask = plus.downloader.createDownload( "https://golfdev-s3static.s3.ap-northeast-1.amazonaws.com/tebleorder.apk", {}, function ( d, status ) { 
                            // 下载完成 
                            if ( status == 200 ) {  
                                plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename),{},{},function(error){ 
                                    uni.showToast({ 
                                        title: '安装失败', 
                                        mask: false, 
                                        duration: 1500 
                                    }); 
                                }) 
                            } else { 
                                 uni.showToast({ 
                                    title: '更新失败', 
                                    mask: false, 
                                    duration: 1500 
                                 }); 
                            }   
                        }); 
                    dtask.start(); 

 

上面的两种方法都可以,但是切记,权限。在uniapp工程下添加下面的权限,否则打包之后会自动重启,但是安装不成功。

 

 

上面的权限添加完之后原生的打包的工程也需要添加,在【build.gradle】的文件中看一下下面的数值是否正确

        applicationId "XXXXX"
        minSdkVersion 19
        targetSdkVersion 28 //建议此属性值设为28

 

【AndroidManifest.xml】这个文件中也要添加权限

    <uses-permission android:name="android.permission.INSTALL_PACKAGES"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

 

再生成apk的包就可以实现手动更新了,至于的版本的判断之类的可以自己添加逻辑。

在第一次安装的时候会出现,来源不明的app是否需要安装之类的设定一次,之后就不需要在设定了。安装的时候还是需要手动的点击安装按钮。

如何能实现自动安装,不需要人的参与,再调查中。