小程序所有新进用户的昵称全部变成了“微信昵称”,当时我就
吓得我赶紧爬起来翻文档(需要代码直接往后翻)
原因就像微信所说的,很多开发者在打开小程序时就通过组件方式唤起getUserInfod窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。
这里我会给出Uni-app的适配代码,针对CRMEB系统进行修复,各位同学举一反三(4.13号之前发布的正式包暂不影响)
1.修改pages/users/wechat_login/index.vue中关于微信登录的按钮
<button span=""
class="bg-green btn1">微信登录
<button span=""
class="bg-green btn1">微信登录
2.默认仔局data中添加canUseGetUserProfile: false,然后在加载页面调用的方法里面增加uni.getUserProfile的判断,是老郑否显示新的按钮。
canUseGetUserProfile: false
if (uni.getUserProfile) {
this.canUseGetUserProfile = true
}
3.方法中新增getUserProfile方法用户获取用户信息
//小程序授权api替换 getUserInfo
getUserProfile() {
uni.showLoading({
title: '正在登录中'
})
let self = this
Routine.getUserProfile()
.then(res =>{
let userInfo = res.userInfo
userInfo.code = this.code
userInfo.spread_spid = app.globalData.spid//获取推广人ID
userInfo.spread_code = app.globalData.code//获取推广人分享二维码ID
Routine.authUserInfo(userInfo)
.then(res =>{
if (res.data.key !== undefined &&res.data.key) {
uni.hideLoading()
self.authKey = res.data.key
self.isPhoneBox = true
} else {
uni.hideLoading()
let time = res.data.expires_time - self.$Cache.time()
self.$store.commit('LOGIN', {
token: res.data.token,
time: time
})
this.getUserInfo()
}
})
.catch(res =>{
uni.hideLoading()
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
})
})
.catch(res =>{
uni.hideLoading()
})
},
4.然后在libs/routine.js中增加getUserProfile方法
/**
* 新版小程序获取用户信息 2021 4.13微信小程序侍戚颂开始正式启用
*/
getUserProfile(code) {
return new Promise((resolve, reject) =>{
uni.getUserProfile({
lang: 'zh_CN',
success(user) {
if (code) user.code = code
resolve({
userInfo: user,
islogin: false
})
},
fail(res) {
reject(res)
}
})
})
}
这里要注意
if (!isset($userInfoCong['openid'])) {
throw new ValidateException('openid获取失败')
}
if (!isset($userInfoCong['openid'])) {
throw new ValidateException('openid获取失败')
}
userInfo['unionId'] = isset( userInfo [′ unionId ′]= isset (userInfoCong['unionid']) ? $userInfoCong['unionid'] : ''
userInfo['openId'] = userInfo [′ openId ′]=openid = $userInfoCong['openid']
修复完成之后重新编译小程序就可以解决授权之后微信用户的问题啦。
微信限制了小程序的代码包不能超过2MB,这主要是出于对小程序启动速度的考虑。但是,2MB 的大小也限制了小程序功能的扩展,如果大小超出了2MB该如何解决呢?
什么是分包加载:
小程序一般都是由某几个功能组成,通常这几个功能之间是独立的,但会依赖一些公共的逻辑,且这些功能一般会对应某几个独立的页面。那么小程序代码的打包,可以按照功能的划分,拆分成几个分包,当需要用到某个功能时,才加载这个功能对应的分包。
对于用户来说,小程序加载流程变成了:
1.首次启动时,先下载小程序主包,显示主包内的页面;
2.当进入某个分包的页面,再下载这个对应分包,下载完毕后,显示分包的页面。
采用分包加载,对开发者而言,能使小程序有更大的代码体积,承载更多的功能与服务;而对用户而言,可以更快地打开小程序,同时在不影响启动速度前提下使用更多功能。
分包的划分:
在配置前,按照圆数功能对各个分包的内容进行划分,将同一个功能下的页面和逻辑放在童改一个目录下,把一些跨功能的公共逻辑放在主包下。
在分包划分时需注意:
1.包与包之间功能尽可能独立,避免分包与分包之间引用上的耦合。因为分包的加载是由用户 *** 作触发的,并不能确保某分包加载时,另外一个分包就一定存在,这个时候可能会导致 JS 逻辑异常的情况,例如亩型报「"xxx.js" is not defined」这样的错误;
2.一些公共的自定义组件,要放在主包内。
分包的配置:
在uni app中通过cli初始化的小程序目录结构如下:
src
main.js
App.vue
pages.json
manifest.json
orderPackages
pages
goodsDetail
myorder
pages
index
user
utils
目前小程序分包大小的限制:
整个小程序所橘耐首有分包大小不超过 4M
单个分包/主包大小不能超过 2M
以上只罗列了uni app框架分包加载的步骤, 原生小程序分包方法根据官方文档即可快速实现,小程序框架虽多, 大都大同小异,如果后续有使用其他框架进行开发,会进行补充。
如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star: http://github.crmeb.net/u/defu不胜感激 !
CRMEB开源商城是一款生活类型的小程序。 主要功能开源小程序商城,拼团、砍价、秒杀等营销活动。扩展资料小程序(Mini Program)是一种不需要下载安装即可使用的`应用,由腾讯于2017年1月9日首次推出,其理念是应用“触手配慎可及乎中"、“用完即走”。其优势是用岁卖山户不用再关心应用安装太多的问题,也避免了频繁的切换应用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)