什么也不说,先让我吐槽吐槽,真的是神奇。很多地方你真的都想不明白为什么
一、本地开发时前端调用api报63002
问题就是本地项目,没有配置域名所以调用不了api。两种解决方案
1.使用测试号
2.前端项目使用内网穿透后,让后端的服务器使用nginx映射前端内网穿透后的域名(内网穿透本人使用花生壳)
二、如果是需要登录授权vue或者uniapp项目路由模式请使用 history
如果使用hash 再授权后页面返回会不成功 具体原因请细读hash和history区别
三、本地开发时 拍照或从手机相册中选图接口chooseImage uploadImage 会出现后端用media_id上传时报media_id错误
原因是因为web开发工具 如果你使用web开发工具细心的会发现uploadImage返回的media_id都是一样的 此时要用手机做调试才可以
四、安卓和ios区分 ios和安卓预览图片不一样 需要做区分处理
ios使用chooseImage接口后得到的本地id 直接使用到image 是现实不出来图片的 安卓确可以 这时候就要做安卓ios区分 看代码 如果是ios需要使用getLocalImgData去转换成base64才可以显示
if (/android/i.test(navigator.userAgent)) {
// 安卓手机
getApp().globalData.model = 1;
}
if (/ipad|iphone|mac/i.test(navigator.userAgent)) {
// 苹果手机
getApp().globalData.model = 0;
}
/**
* 如果是安卓直接使用微信本地id就可以显示,ios则需要getLocalImgData去转换成base64才可以显示
*/
this.$wx.downloadImage({
serverId: id, // 需要下载的图片的服务器端ID,由uploadImage接口获得
isShowProgressTips: 1,// 默认为1,显示进度提示
success: (res) => {
if(getApp().globalData.model == 0) {
this.$wx.getLocalImgData({
localId: res.localId, // 图片的localID
success: (res) => {
return res.localData; // localData是图片的base64数据,可以用img标签显示
}
});
} else {
return res.localId
}
}
五、这个问题也需要做安卓ios区分 在ios会出现二次签名提示无效签名
这个问题不一定都会遇到 根据业务场景 如果你的项目中多次签名 安卓没有问题 ios在第二次签名会提示你无效签名 所以如果遇到这样的问题 请区分安卓和ios
总结:
开发一次公众号,掉了一地头发。这些坑只是这次开发发现的,应该还有很多坑,可能还没有遇到,但是只要耐心去找解决方案 总会解决的 希望能帮到那些没入坑的同学
有其他坑也可以评论 讨论