- 如何关注公众号以后自动推送小程序?
如何关注公众号以后自动推送小程序? 这个问题是不是觉得没什么难度?打开配置界面一看你就傻眼了。 [图片] 怎么自动回复里没有跳转小程序选项?自定义菜单里面是有的呀!:( [图片] 遇到困难先不要慌,办法总是有的! 不过要做一点点准备工作,首先绑定要跳转的小程序,然后准备好小程序的APPID和跳转路径。 然后,一行代码搞定: <a data-miniprogram-appid="小程序APPID" data-miniprogram-path="跳转路径">点我跳转到小程序</a> 上面准备的小程序APPID和跳转路径编辑一下即可。 <a data-miniprogram-appid="wx3fa5ddf638c664d8" data-miniprogram-path="page/tabBar/index/index">点我跳转到小程序</a> [图片] [图片] 想体验效果,搜索:来一间 公众号体验。关键词自动回复也可以用这个方法配置哦! [图片] 补充一点: 如何获取小程序页面路径的方法:https://developers.weixin.qq.com/community/develop/article/doc/0008627017cf104da879c3dd25b813
2020-07-14 - 微信公众号怎么开发微商城?有免费的微商城系统吗?
微商城是基于微信公众号运营的商城系统,依托微信月活超12亿的用户流量,能够帮助企业商家解决引流成本高,开拓客户难的问题,为商家挖掘更多的潜在粉丝,沉淀客户。 问题来了,对于没有任何技术和互联网运营经验的商家来讲,那如何开发微商城呢?开发微商城的成本又是多少? 接下来,我们就详细讲讲。 微信公众号开发微商城的步骤流程:1、到微信公众平台申请一个服务号,申请后进行微信认证,需要向腾讯支付300元认证费,这个是以后每年年审都要缴纳。 认证通过后可以申请开通微信支付。 如果已有开通微信支付的认证服务号请跳过此步。 有人问:可以使用订阅号吗?订阅号也可以,但是目前仅支持媒体和政府类订阅号可以申请微信支付,企业、商家的订阅号不支持申请微信支付。 对于企业商家,建议申请服务号。如果要做日常运营,想每天可以推送文章之类的,那就再申请个订阅号,和微商城进行关联绑定。 2、接下来,就是开发微商城了。 我们开头也提到,对于没有任何技术的小白,也可以自己搭建微商城,不需要代码开发。 到“得有店”官网注册账号,创建微商城店铺。包括店铺页面装修、创建商品分类、上传商品、店铺设置、配送设置等。 另外,如果想做促销活动,拼团、秒杀、优惠券、分销、满减、满送等,都可以免费使用这些工具的。 也就是说,完全零成本就可以搭建一套完整的包含营销的微商城系统。 3、整个店铺搭建完成,将微信公众号授权给得有店。 通过得有店商户后台,就可以管理整个店铺的运行了。 4、上线运营,将微信公众号与微商城进行自定义菜单关联,便于做微信营销。可以群发图文消息通知粉丝商城运营。 [图片] 微信公众号开发微商城的收费标准是多少?不同第三方平台提供的微商城系统收费标准是不一样的,一般在几千到上万元不等,不过,通过得有店开发微商城系统是完全免费的,可以亲自去体验,试错成本为0: 1、无需开发,后台操作简单,0基础上手; 2、丰富的行业主题模板,一键套用即可,满足各行业多场景需求; 3、真正0成本开店,包括拼团、秒杀、优惠券、分销等各种营销工具,免费使用; 4、通过拼团、秒杀活动,分分钟打造爆款产品,提高品牌的知名度; 5、商家完全自主化经营,建立自己的私域流量池,把客户牢牢掌握在自己手中。 现在小程序也成为各行各业的经营标配,通过“得有店”也可以同步生成小程序商城。享有更完整的服务权益。通过会员卡、积分、储值、标签等实现精准营销,沉淀客户,增加复购。 [图片] 微信公众号微商城系统可以实现什么功能?1、门店管理:把线下经营可以全部搬到线上,可以轻松管理店铺和店员,对经营数据了如指掌,提高经营效率。 2、商品管理:商家可以随时查看商品状态,然后对产品进行分类,库存信息实时同步更新,产品在售、库存等状况一目了然,对产品进行轻松管理。 3、订单管理:系统会详细的跟踪每一笔订单的进度,将每一笔订单的数据信息整理成多维度报表,消费记录清晰可见,帮助商家轻松了解最近消费和订单的成交状况。 4、客户管理:商家可以根据客户的消费情况将他们进行标签化管理,深入了解客户特点,挖掘客户的潜在需求,做精准营销,提高客户的满意度和复购率。 5、互动营销:通过公众号群发,商家可定时向消费者推送产品的促销活动信息,提升消费者的活动参与度,了解客户消费特点,强化活动效果。 6、会员管理:吸引客户成为会员,专享会员权益,可通过会员储值、积分商城、签到、消费送积分等形式,来有效沉淀忠诚客户,增强客户粘性。 微信公众号商城系统基于社交属性的优势,帮助商家更好的了解用户的消费喜好,将线上的粉丝引流到线下,解决实体门店的拓客难题。同时,粉丝可以将产品一键分享到微信、朋友圈,多渠道引流,实现快速吸粉,提升商家的市场竞争力。
2020-10-30 - 关于在小程序消费,在公众号进行模板推送的问题?
由于在小程序登录,获得了openid,但是在公众号中却不可以用这个openid来推送模板信息。在查看相关文档中,查看到两者的openid不相通。那么请问下如何根据小程序登录获得的openid或者什么东西,可以用于公众号推送消息。公众号是没有登录的,所以也不打算获得公众号openid。有什么办法可以完成这个呢
2021-01-22 - getUserInfo接口如何替换成getUserProfile超详细说明
微信小程序API近期又做了调整,之前用的好好的getUserInfo做了重大调整,无法直接获取用户信息了,比如昵称头像等等,当然2021年4月13日上线前的小程序不受影响,如果想要再次升级新版本,即必须涉及到更换获取用户授权的修改,将getUserInfo改成getUserProfile接口。 [图片] 这就代表着之前用的获取授权信息的方法要做调整了,先看看哪些模块受到影响。 之前使用如下代码,可以获取用户的相关信息: 之前:(使用上面的方式,会出现授权弹窗,同意后可以直接获取到nickName昵称及avatarUrl用户头像) [图片] 现在:(不会弹窗,直接获取用户信息nickName变成了匿名,avatarUrl用户头像变成了灰色头像) [图片] 授权过后鉴定是否授权同样也无法使用了,下面是app.js中的代码同过wx.getSetting获取scope.userInfo判断是否授权,现在获取不该参数,所有这个在app.js中的写法就无法判断用户有没有登录了。 [图片] 针对上面的文字,下面开始来介绍下我的实现方式,如何用好新接口getUserProfile。 先来看看wx.getUserProfile怎么用:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html 上面是官方地址,里面有详细的说明。 getUserProfile不像之前的getUserInfo一样必须放在按钮button上,而且要使用open-type="getUserInfo",新接口直接可以应用在任何标签上,使用点击时间或者其他触发事件直接执行getUserProfile接口,如下所示: 注:desc属性必须填写,不填写可能获取不到数据; 如下图所示,将会出现弹窗授权 [图片] 每次点击都会获取一次授权,这样有个好处就是之前getUserInfo时候拒绝了之后再想同意需要操作很大一圈代码,这个的话,每次点击都会重新弹窗一次这样倒是解决了一大难题。 [图片] 正确的用户信息,包含了昵称及头像等等... 存在的问题: 如果每次点击都授权的话用户体验非常的不友好,比如做了一个博客系统,每次用户想要给某一条信息点赞,点赞前都要授权一次,用户肯定很烦,所以,获取授权第一次的时候就要存储下来,然后再做表单提交或者点赞评论时候,判断数据库中用户信息是否存在就好了。 解决方案: user页面,提醒客户点击登录授权,默认头像及文字提醒,授权过后显示头像及昵称;[图片] user.wxml页面 {{userInfo.nickName}} {{userInfo.country+userInfo.province+userInfo.city}} 点击登录 user.js页面 //没有授权过的话,不要在当前页面存储用户信息,直接跳转到login页面同意处理用户信息 goLogin(){ wx.navigateTo({ url: '/pages/login/login' }) } login登录页面的操作,点击确认授权弹出授权浮窗。[图片] login.wxml页面 确认授权 暂不授权 login.js页面 //获取授权信息 clickUserProfile(){ wx.getUserProfile({ desc: '业务需要', lang:'zh_CN', success:res=>{ this.saveUserInfo(res.userInfo) } }) }, //保存用户信息 saveUserInfo(userInfo){ app.globalData.userInfo=userInfo //使用页面栈的方式,获取了授权信息接着更改用户页面的userInfo属性 var page=getCurrentPages()[getCurrentPages().length-2]; page.setData({ userInfo }) //使用云函数saveuser将用户信息存储到云数据库中 wx.cloud.callFunction({ name:"saveuser", data:{ userInfo } }).then(res=>{ wx.showToast({ title: '授权成功' }) setTimeout(()=>{ this.noLogin(); },1500) }) } saveuser云函数页面 // 云函数入口函数 exports.main = async (event, context) => { const openid = cloud.getWXContext().OPENID const {userInfo}=event; userInfo.openid=openid; //获取数据库中有没有当前用户的信息 var res= await db.collection("userAll").where({ openid:openid }).count() if(res.total>0){ return await db.collection('userAll').where({ openid }).update({ data: userInfo }) }else{ return await db.collection('userAll').add({ data: userInfo }) } } 一旦获取了用户信息,自动会从login页面跳转到user页面,同理user页面中的userInfo就变成了最新的用户数据,user页面也就变成了这样; [图片] 首次进入user页面时候需要从数据库判断是否已经存在该用户信息 app.js页面 //定义hasUserInfo函数,发送云函数,同过返回true和false判断是否已经授权 async hasUserInfo(){ if (this.globalData.userInfo && this.globalData.userInfo.nickName && this.globalData.userInfo.avatarUrl) return true var res= await wx.cloud.callFunction({ name:"getuser" }) if(res.result.code==200){ this.globalData.userInfo=res.result.data[0] return true }else{ return false } } getuser云函数页面 // 云函数入口函数 exports.main = async (event, context) => { const openid = cloud.getWXContext().OPENID var res=await db.collection("userAll").where({ openid }).get(); if(res.data.length){ return {data:res.data,code:200} }else{ return {code:400} } } 在需要的位置就可以使用app.js中的hasUserInfo方法了,比如user页面 user.js页面 //页面载入时 onLoad:async function (options) { await app.hasUserInfo() this.setData({ userInfo:app.globalData.userInfo }) } 比如对一个点赞按钮操作时候先判断有没有用户信息时候: //点赞操作 async clickZan(){ if(await app.hasUserInfo()){ console.log("可以点赞"); }else{ wx.navigateTo({ url: '/pages/login/login' }) } } 还有一种不保存用户信息,只负责在页面中展现的可以直接使用open-data组件,不用授权就可以轻松获取用户信息; 组件地址如下: https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html 演示代码如下: 最终效果 [图片] 如果文章没有看懂,还有视频的介绍 https://www.bilibili.com/video/BV1s64y1i7Rw
2021-04-22 - 小程序登录、用户信息相关接口调整更新说明
考虑到近期开发者对小程序登录、用户信息相关接口调整的相关反馈,为优化开发者调整接口的体验,《小程序登录、用户信息相关接口调整说明》公告中关于小程序回收 wx.getUserInfo 接口可获取用户授权的个人信息能力的截止时间调整至2021年4月28日24时。 在此期间,未调整的小程序可能会在微信开发者工具收到“平台 getUserInfo 接口能力调整,请尽快适配”提醒,建议开发者尽快适配 wx.getUserInfo 接口回收场景。 后续开发者可以使用 wx.getUserProfile 接口获取用户授权的个人信息。 关于本次调整的Q&A Q:已经在线上运行的小程序是否会受到影响? A:不会。只有在2021年4月28日24时后,新提交审核发布的小程序调用 wx.getUserInfo 接口才会对齐该新的匿名表现。 Q:此次变更除 wx.getUserInfo 接口回收获取用户授权的个人信息能力还有什么变化? A:通过 wx.login 接口获取的登录凭证可直接换取 unionid,无需再使用 wx.getUserInfo 接口来兼容获取 unionid。 Q:如何保证不同版本的基础库环境下都能正常获取用户信息? A:2.10.4 以下基础库不支持使用 wx.getUserProfile 接口 获取用户信息,采用wx.getUserInfo 接口原有获取流程不受影响,兼容方式可参考 getUserProfile 接口文档中的示例代码 进行适配。 Q:PC版本小程序是否支持? A:PC版本小程序暂未支持,可以直接使用 getUserProfile 接口文档中的示例代码 来判断及适配。 Q:wx.getSetting 接口返回是否有变化? A:wx.getSetting 接口获取的 scope.userInfo 按照调用 wx.getUserInfo 接口返回,返回匿名数据 scope.userInfo 也为 true。此策略将于2021年4月28日24时后生效。 Q:wx.getUserProfile 接口返回的 iv、encryptedData 不可用? A:wx.getUserProfile 接口返回的 iv、encryptedData 解密获取不到 unionid,请使用 wx.login 获取 unionid;wx.getUserProfile 接口在基础库2.16.0以下,无法获取 iv 和 encryptedData ,近期会灰度覆盖到 2.10.4。 Q:在适配过程中遇到其他问题? A:可直接在 微信开放社区 搜索或发帖提问交流。
2021-04-15 - 微信小程序分页加载数据~上拉加载更多~小程序云数据库的分页加载
我们在开发小程序时,一个列表里难免会有很多条数据,比如我们一个列表有1000条数据,我们一下加载出来,而不做分页,将会严重影响性能。所以这一节,我们来讲讲小程序分页加载数据的实现。 老规矩,先看效果图 [图片] 可以看到我们每页显示10条数据,当滑动到底部时,会加载第二页的数据,再往下滑动,就加载第三页的数据。由于我们一共21条数据,所以第三页加载完以后,会有一个“已加载全部数据”的提示。 本节知识点 1,小程序分页加载 2,小程序列表显示 3,云数据库的使用 4,云数据库分页请求数据的实现 一,先定义数据 我们做分页数据加载,肯定要先准备好数据,数据已经给大家准备好,如下图,文章末尾会贴出数据源和本节课源码的下载地址。 [图片] 然后把数据导入到我们的云开发的数据库里,关于数据如何导入,这里不再讲解,不知道的同学,请看下面这篇文章。或者去老师历史文章里找一下。 《小程序云开发入门—云数据库数据源的导入与导出》 下面给大家看下我们的数据源,长什么样。其实很简单,就是简单的定义21条数据。 [图片] 然后在看导入到数据库的样子。 [图片] 二,分页请求数据 我们第一步准备好了数据以后,接下来就来讲讲如何在js里做分页加载数据。 首先我们这里用到了小程序云开发数据库的知识点 1,get方法:获取云数据库数据 2,skip方法:跳过前面几条数据,请求后面的数据 3,limit方法:请求多少条数据。 比如下面这段代码,就是跳过前5条,请求从第6条开始往后的10条数据,就是请求6~15的数据,我们做分页加载也就是基于这个原理。 [代码] wx.cloud.database().collection("list") .skip(5) //从第几个数据开始 .limit(10) [代码] 下面把我们index.js的完整代码贴给大家。 [代码]//老师微信:2501902696 let currentPage = 0 // 当前第几页,0代表第一页 let pageSize = 10 //每页显示多少数据 Page({ data: { dataList: [], //放置返回数据的数组 loadMore: false, //"上拉加载"的变量,默认false,隐藏 loadAll: false //“没有数据”的变量,默认false,隐藏 }, //页面显示的事件 onShow() { this.getData() }, //页面上拉触底事件的处理函数 onReachBottom: function() { console.log("上拉触底事件") let that = this if (!that.data.loadMore) { that.setData({ loadMore: true, //加载中 loadAll: false //是否加载完所有数据 }); //加载更多,这里做下延时加载 setTimeout(function() { that.getData() }, 2000) } }, //访问网络,请求数据 getData() { let that = this; //第一次加载数据 if (currentPage == 1) { this.setData({ loadMore: true, //把"上拉加载"的变量设为true,显示 loadAll: false //把“没有数据”设为false,隐藏 }) } //云数据的请求 wx.cloud.database().collection("list") .skip(currentPage * pageSize) //从第几个数据开始 .limit(pageSize) .get({ success(res) { if (res.data && res.data.length > 0) { console.log("请求成功", res.data) currentPage++ //把新请求到的数据添加到dataList里 let list = that.data.dataList.concat(res.data) that.setData({ dataList: list, //获取数据数组 loadMore: false //把"上拉加载"的变量设为false,显示 }); if (res.data.length < pageSize) { that.setData({ loadMore: false, //隐藏加载中。。 loadAll: true //所有数据都加载完了 }); } } else { that.setData({ loadAll: true, //把“没有数据”设为true,显示 loadMore: false //把"上拉加载"的变量设为false,隐藏 }); } }, fail(res) { console.log("请求失败", res) that.setData({ loadAll: false, loadMore: false }); } }) }, }) [代码] 上面的代码就是我们实现分页加载的所有逻辑代码。简单说下代码 1,我们首先进页面时会请求前10条内容 2,10条内容请求成功以后,我们会把请求到的内容加入dataList数组,然后把dataList里的数据显示到页面上。并将currentPage加一,用于请求第二页数据。 3,当用户滑动到底部时,会触发onReachBottom事件,在这个事件里做第二页到请求。然后第二页数据请求成功以后。继续将currentPage加1,这里要记住一定,一定要请求成功以后才将currentPage +1。 三,列表布局和样式 其实index.wxml和index.wxss的代码很简单,给大家把代码贴出来。 1,index.wxml [代码]<scroll-view scroll-y="true" bindscrolltolower="searchScrollLower"> <view class="result-item" wx:for="{{dataList}}" wx:key="item"> <text class="title">{{item.content}}</text> </view> <view class="loading" hidden="{{!loadMore}}">正在载入更多...</view> <view class="loading" hidden="{{!loadAll}}">已加载全部</view> </scroll-view> [代码] 2,index.wxss [代码]page { display: flex; flex-direction: column; height: 100%; } .result-item { display: flex; flex-direction: column; padding: 20rpx 0 20rpx 110rpx; overflow: hidden; border-bottom: 2rpx solid #e5e5e5; } .title { height: 110rpx; } .loading { position: relative; bottom: 5rpx; padding: 10rpx; text-align: center; } [代码] 到这里我们就完整的实现里分页加载功能了。 [图片] 源码和数据源,已经给大家放到网盘里了,有需要的同学请在文章底部留言,或者私信老师。 视频讲解:https://edu.csdn.net/course/detail/9604
2019-11-07