小程序webview引入H5安卓坑

JSSDK使用步骤

步骤一:绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

备注:登录后可在“开发者中心”查看对应的接口权限。

步骤二:引入 JS 文件

在需要调用 JS 接口的页面引入如下 JS 文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js

如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。

备注:支持使用 AMD/CMD 标准模块加载方法加载

步骤三:通过 config 接口注入权限验证配置

所有需要使用 JS-SDK 的页面必须先注入配置信息,否则将无法调用(同一个 url 仅需调用一次,对于变化 url 的SPA的web app可在每次 url 变化时进行调用,目前 Android 微信客户端不支持 pushState 的H5新特性,所以使用 pushState 来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

wx.config({
  debug: true, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。
  appId: '', // 必填,公众号的唯一标识
  timestamp: , // 必填,生成签名的时间戳
  nonceStr: '', // 必填,生成签名的随机串
  signature: '',// 必填,签名
  jsApiList: [] // 必填,需要使用的 JS 接口列表
});

注意:如果使用的是小程序云开发静态网站托管的域名的网页,可以免鉴权直接跳任意合法合规小程序,调用 wx.config 时 appId 需填入非个人主体的已认证小程序,不需计算签名,timestamp、nonceStr、signature 填入非空任意值即可。

步骤四:通过 ready 接口处理成功验证

wx.ready(function(){
  // config信息验证后会执行 ready 方法,所有接口调用都必须在 config 接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在 ready 函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在 ready 函数中。
});

小程序部分api不兼容,需要引入sdk注入才能使用

uni.chooseFile(OBJECT)

仅安卓小程序无法调用此api,大部分不兼容多项选择

平台差异说明

getShare({url:window.location.href}).then(response=>{
					if(response.code==200){
						let s = response.data
						jweixin.config({
							debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
							appId: s.app_id, // 必填,公众号的唯一标识
							timestamp: s.time_stamp, // 必填,生成签名的时间戳
							nonceStr: s.nonce_str, // 必填,生成签名的随机串
							signature: s.signature,// 必填,签名
							jsApiList: ["chooseImage","getLocalImgData"] // 必填,需要使用的JS接口列表
						});
						jweixin.ready(function () {
							jweixin.checkJsApi({
							  jsApiList: ['chooseImage','getLocalImgData'], // 需要检测的 JS 接口列表,所有 JS 接口列表见附录2,
							  success: function(res) {
								  console.log(res)
							  }
							});
						})
						this.jweixin = jweixin
					}
				})

uni.chooseFile({
					count: 9,
					type:'video',
					sourceType:['album'],
					extension: ['.mp4', '.ogg', '.flv','.avi','.wmv','.rmvb'],
					success: function(res) {
						res.tempFiles.forEach(async (item,index)=>{
							_this.fileList.push(item);
							var {file,key} = await _this.beforeUpload(index, res.tempFiles)
							var nameArr = item.name.split('.');
							let fileType =  checkFileType(nameArr[nameArr.length - 1])
							if(fileType.video){
								file =  item
							}
							let length = _this.fileList.length - 1;
							let formData = {
								key:key,
								token:_this.formData['token']
							}
							await _this.uploadFile(file, formData, length)
						})
					}
				})
AppH5微信小程序支付宝小程序
x√(HBuilder X2.9.9+)xx(可使用wx.chooseMessageFile)

uni.chooseImage(OBJECT)
仅安卓使用sdk注入才可以选择图片,选择视频无效

ios 支持以上api使用

在这里插入图片描述
通过localids转base64编码再转file格式上传服务器

convertLocalBase64(wx,id){
		let _this = this
		return new Promise((resolve,reject)=>{
			wx.getLocalImgData({
			  localId: id, // 图片的localID
			  success: function (res) {
				  function getFileNameUUID() {
					function rx() {
					  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
					}
					return `${+new Date()}_${rx()}${rx()}`
				  }
					var bytes = atob(res.localData);
					
					var ab = bytes.length;
					var ia = new Uint8Array(ab);
					for (var i = 0; i < ab; i++) {
					  ia[i] = bytes.charCodeAt(i);
					}
					let file = new File([ia], getFileNameUUID()+"-file.png", { type: "image/png" });
					resolve(file);
			  }
			});
		})
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值