You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
刘灿 39d1767e68 第一次提交 11 months ago
..
js_sdk 第一次提交 11 months ago
static 第一次提交 11 months ago
changelog.md 第一次提交 11 months ago
package.json 第一次提交 11 months ago
readme.md 第一次提交 11 months ago

readme.md

APP版本更新、强制更新、漂亮的更新界面、IOS更新(跳转IOS store)、wgt更新

QQ交流群(607391225) 微信交流群(加我好友备注"进群")
QQ交流群 微信交流群
QQ群号:607391225 微信号:zhou0612wei

点击跳转-插件示例

点击跳转-5年的web前端开源的uni-app快速开发模板-下载看文档

常见问题

1.安卓apk下载完成后没有更新APP?

答:问题是因为没有添加APP安装应用的权限,解决方法在manifest.json文件里面APP模块权限配置Android打包权限配置勾选以下权限

<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>  
<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>

若还有问题请看安装apk无法执行的解决方案

2.APP更新后版本号没变,还是之前的版本号?

答:可能是更新的安装包没有升级版本号,manifest.json文件里面基本设置应用版本号应用版本名称需要升高(保持一直减少问题)

3.APP更新后没有覆盖之前的APP?

答:可能是更新的安装包包名和APP的包名不一样

4.弹窗的图标不显示?

答:检查图片是不是放项目资源文件static,然后重新运行项目

5.版本号是在前端对比还是在后端接口对比?

答:当前案例是本地的版本号通过接口传递给后台,是后台对比的,若需要前端对比,请在接口返回数据的地方修改,不更新就不要调用callback方法

6.本地的版本号比接口的版本号高还弹窗升级窗口?

答:当前案例是本地的版本号通过接口传递给后台,后台对比是否需要升级,不需要升级就不要返回数据(特别是需要wgt更新的,建议这种方式)

第一步关键配置APP更新接口(可以参考上面的示例)

在项目目录下config/componentConfig.js里面如下配置

// 此方法是接口请求方法
import $http from '@/config/requestConfig'
export default {
	// 发起ajax请求获取服务端版本号
	getServerNo: (version, isPrompt = false, callback) => {
		let httpData = {
			version: version.versionCode,
			// 版本名称
		    versionName: version.versionName,
			// setupPage参数说明(判断用户是不是从设置页面点击的更新,如果是设置页面点击的更新,有不要用静默更新了,不然用户点击没反应很奇怪的)
			setupPage: isPrompt   
		};
		if (platform == "android") {
			httpData.type = 1101;
		} else {
			httpData.type = 1102;
		}
		/* 接口入参说明
		 * version: 应用当前版本号(已自动获取)
		 * versionName: 应用当前版本名称(已自动获取)
		 * type:平台(1101是安卓,1102是IOS)
		 */
		/****************以下是示例*******************/
		// 可以用自己项目的请求方法(接口自己找后台要,插件不提供)
		$http.get("api/common/v1/app_version", httpData,{
			isPrompt: isPrompt
		}).then(res => {
			/* res的数据说明
			 * | 参数名称	     | 一定返回 	| 类型	    | 描述
			 * | -------------|--------- | --------- | ------------- |
			 * | versionCode	 | y	    | int	    | 版本号        |
			 * | versionName	 | y	    | String	| 版本名称      |
			 * | versionInfo	 | y	    | String	| 版本信息      |
			 * | updateType	     | y	    | String	| forcibly = 强制更新, solicit = 弹窗确认更新, silent = 静默更新 |
			 * | downloadUrl	 | y	    | String	| 版本下载链接(IOS安装包更新请放跳转store应用商店链接,安卓apk和wgt文件放文件下载链接)  |
			 */
			if (res && res.downloadUrl) {
				// 兼容之前的版本(updateType是新版才有的参数)
				if(res.updateType){
					callback && callback(res);
				} else {
					if(res.forceUpdate){
						res.updateType = "forcibly";
					} else {
						res.updateType = "solicit";
					}
					callback && callback(res);
				}
			} else if (isPrompt) {
				uni.showToast({
					title: "暂无新版本",
					icon: "none"
				});
			}
		});
		/****************以上是示例*******************/
	},
	// 弹窗主颜色(不填默认粉色)
	appUpdateColor: "f00",
	// 弹窗图标(不填显示默认图标,链接配置示例如: '/static/demo/ic_attention.png')
	appUpdateIcon: ''
}

第二步 使用方法

// App.vue页面

// #ifdef APP-PLUS
import APPUpdate from '@/uni_modules/zhouWei-APPUpdate/js_sdk/appUpdate';
// #endif

onLaunch: function(e) {
	// #ifdef APP-PLUS
	APPUpdate();
	// #endif
}

第三步 添加APP安装应用的权限

manifest.json文件里面APP模块权限配置Android打包权限配置勾选以下权限

<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>  
<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>

修改弹窗的主题色或弹窗图标

APPUpdate/index.js里面上面$mainColor常量中定义主题颜色,$iconUrl常量中定义图标地址

检查APP是否有新版本(一般在设置页面使用)

// #ifdef APP-PLUS
import APPUpdate, { getCurrentNo } from '@/uni_modules/zhouWei-APPUpdate/js_sdk/appUpdate';
// #endif
export default {
	data() {
		return {
			version: "" // 版本号
		};
	},
	//第一次加载
	onLoad(e) {
		// #ifdef APP-PLUS
		getCurrentNo(res => {
			// 进页面获取当前APP版本号(用于页面显示)
			this.version = res.version;
		});
		// #endif
	},
	//方法
	methods: {
		// 检查APP是否有新版本
		onAPPUpdate() {
			// true 没有新版本的时候有提示,默认:false
			APPUpdate(true);
		}
	}
}