- 小程序webview访问公众号文章提示非业务域名
排查方式如下 1:小程序和公众号需要进行绑定 2:需要是https请求 3:业务域名设置了不一定参数里就是业务域名的地址,若配置的基本都是公众号文章地址,这里的业务域名是不需要额外设置的 4:参数需要进行encode编码 分享案例 1:若遇到非业务域名问题,请先固定一篇文章进行测试,打印代码 https://mp.weixin.qq.com/s?__biz=xxxxxxxxxx==&mid=xxxxxxxxxx&idx=1&sn=xxxxxxxxxxxx&chksm=c0457762f732fe745f1bf8b1f99fa7a535335772eb6a104c1cf026ea063e16ec157465894b52&token=246279511&lang=zh_CN#rd 2:打开代码片段,放入打印出来的代码,编译查看是否提示参数错误 [图片] 3:把打印出来的代码进行encodeURIComponent转码 https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkwMDE4MzU5OQ%3D%3D%26mid%3D2247504930%26idx%3D1%26sn%3D8d98cf8616cf11134620508082bdf1eb%26chksm%3Dc0457762f732fe745f1bf8b1f99fa7axxxxxxxxxeb6a104c1cf026ea063e16ec157465894b52%26token%xxxxxxxxxxxxx%26lang%3Dzh_CN%23rd 4:开发者工具-->添加编译模式-->启动参数-->url=encodeURIComponent转码后的请求,然后编译下 [图片] 附上事例中的代码片段:https://developers.weixin.qq.com/s/CdlD8vmP7AxR 欢迎社区开发者留下自己解决非业务域名报错的步骤 !!!
2022-03-04 - 小程序与公众号下发统一消息接口调整通知
各位开发者: 下发统一消息 接口曾支持小程序与公众号统一的模板消息下发。由于小程序模板消息能力已于 2020 年 1 月下线(详见 小程序模板消息能力调整通知),当前下发统一消息能力仅限于公众号范畴。为了优化开发体验,避免多个同一功能接口对开发者造成困扰,微信团队将对下发统一消息接口进行如下调整: 自 2023 年 9 月 20 日起(以下简称 “生效期”),下发统一消息接口将被收回。自生效期起,调用下发统一消息接口将会显示 “45109” 错误码,无法下发小程序模板消息与公众号模板消息。如业务需下发公众号模板消息,请使用 公众号模板消息能力 满足能力需求,具体适配操作可参考下方适配指引。 注意点: 1、下发统一消息接口与公众号模板消息接口的差异对比如下: [图片] 2、本次接口回收仅影响使用旧的下发统一消息接口的方式下发模板消息的情况,不代表公众号模板消息能力被收回,使用 公众号模板消息接口 下发公众号模板消息的能力不受影响。例如小程序 A、B 当前正使用不同接口下发公众号模板消息: [图片] 3、小程序订阅消息能力不受本次接口回收的影响。 4、请已使用下发统一消息接口的开发者尽快适配。若 2023 年 9 月上旬仍未适配,官方团队将分阶段通过站内信、微信开发者工具通知等方式同步告知指引修改。 适配指引: [图片] 检查当前调用下发统一消息接口的用户身份信息: 1、若当前下发模板消息的用户身份信息为公众号 openid,按照 公众号模板消息接口文档 适配 2、若当前下发模板消息的用户身份信息为小程序 openid,检查 微信开放平台 是否将小程序与公众号绑定在同一个主体 a) 若小程序与公众号绑定在同一个主体下,按照 公众号模板消息接口文档 适配 b) 若小程序与公众号没有绑定在同一个主体下,先完成绑定工作,再按照 公众号模板消息接口文档 适配 微信团队 2023年8月22日
2023-09-18 - 小程序用户头像昵称获取规则调整公告
更新时间:2022年11月9日由于 PC/macOS 平台「头像昵称填写能力」存在兼容性问题,对于来自低于2.27.1版本的访问,小程序通过 wx.getUserProfile 接口将正常返回用户头像昵称,插件通过 wx.getUserInfo 接口将正常返回用户头像昵称。 更新时间:2022年9月28日考虑到近期开发者对小程序用户头像昵称获取规则调整的相关反馈,平台将接口回收的截止时间由2022年10月25日延期至2022年11月8日24时。 调整背景在小程序内,开发者可以通过 wx.login 接口直接获取用户的 openId 与 unionId 信息,实现微信身份登录,支持开发者在多个小程序或其它应用间匿名关联同一用户。 同时,为了满足部分小程序业务中需要创建用户的昵称与头像的诉求,平台提供了 wx.getUserProfile 接口,支持在用户授权的前提下,快速使用自己的微信昵称头像。 但实践中发现有部分小程序,在用户刚打开小程序时就要求收集用户的微信昵称头像,或者在支付前等不合理路径上要求授权。如果用户拒绝授权,则无法使用小程序或相关功能。在已经获取用户的 openId 与 unionId 信息情况下,用户的微信昵称与头像并不是用户使用小程序的必要条件。为减少此类不合理的强迫授权情况,作出如下调整。 调整说明自 2022 年 10 月 25 日 24 时后(以下统称 “生效期” ),用户头像昵称获取规则将进行如下调整: 自生效期起,小程序 wx.getUserProfile 接口将被收回:生效期后发布的小程序新版本,通过 wx.getUserProfile 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。自生效期起,插件通过 wx.getUserInfo 接口获取用户昵称头像将被收回:生效期后发布的插件新版本,通过 wx.getUserInfo 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的插件版本不受影响,但如果要进行版本更新则需要进行适配。通过 wx.login 与 wx.getUserInfo 接口获取 openId、unionId 能力不受影响。「头像昵称填写能力」支持获取用户头像昵称:如业务需获取用户头像昵称,可以使用「头像昵称填写能力」(基础库 2.21.2 版本开始支持,覆盖iOS与安卓微信 8.0.16 以上版本),具体实践可见下方《最佳实践》。小程序 wx.getUserProfile 与插件 wx.getUserInfo 接口兼容基础库 2.27.1 以下版本的头像昵称获取需求:对于来自低版本的基础库与微信客户端的访问,小程序通过 wx.getUserProfile 接口将正常返回用户头像昵称,插件通过 wx.getUserInfo 接口将正常返回用户头像昵称,开发者可继续使用以上能力做向下兼容。对于上述 3,wx.getUserProfile 接口、wx.getUserInfo 接口、头像昵称填写能力的基础库版本支持能力详细对比见下表: [图片] *针对低版本基础库,兼容处理可参考 兼容文档 请已使用 wx.getUserProfile 接口的小程序开发者和已使用 wx.getUserInfo 接口的插件开发者尽快适配。小游戏不受本次调整影响。 最佳实践小程序可在个人中心或设置等页面使用头像昵称填写能力让用户完善个人资料: [图片] 微信团队 2022年5月9日
2023-09-26 - 小程序滑动日历
需求 做项目的时候需要用到一种日历,看完设计师的设计稿总结成:可以左右滑动切换显示的日历,能够在某一个日期下显示文字和标签,并且提供选择某一个范围内的日期和单选两种功能。 刚开始看到,想着这种组件网上也是一大堆。然而,查找了一番才知道大部分的日历组件都是上下滚动类型的,能够符合项目需求的组件不多。当然也有一些复杂的日历组件,但是我不想学习使用方法(懒),又因为偶然间看到了日历的简单实现思路,自己花了点时间写这个组件 解析原件 根据项目需求,我得先清楚我的日历应该具备哪些信息: [代码]1. 标题,旨在说明日历的用途,如选择购票时间,选择团期等 2. 副标题,用来显示当前的年月 3. 左右切换按钮,用来翻阅日历 4. 星期(日-六) 5. 一个月的天数的排列,通过循环,只要设置好每个格子的大小,就可以按照顺序排下去,但是我们得知道几点: 5.1)每月的1号是星期几,即从哪个位置开始排 5.2)每月有多少天,即要排多少个格子 6. 按照这种排列,肯定会出现前面几个格子是空白的,后面几个格子是空白的,即上下月的残余天数 6.1)上个月的最后一天是几号,有多少 6.2)下个月的残余天数有多少 7. 底部是否存在按钮,用来操作 [代码] 分析出上面的几点,基本上可以确定为自己的日历应该是张什么样子 [图片] 分析日历的显示: [代码]1. 可以显示文字和标签,因为日历每个日期相当于一个块,所以利用定位可以很快解决显示的问题,颜色也可以根据传过来的属性进行自定义 2. 可以选择日期,从这可以分析出每一个块至少有三种颜色变化:没有选中状态,选中状态以及中间状态 [代码] 从上面的分析可以知道,我们的数据结构应该长成这样子(展示部分): [代码]/** * 日历副标题 */ subTitle: { year: '' month: '' } /** * 日历信息 */ calendarInfo: { last: { year: -1, month: -1, list: [], swiperHeight: 999 }, cur: { year: -1, month: -1, day: -1, select: -1, //选中的时间,位置 swiperHeight: 999, //滚动框的高度 }, next: { year: -1, month: -1, list: [], swiperHeight: 999 } }, /** * 提示信息 */ tipData: [ { value: '2020-10-1', text: '国庆节', type: 'text', //文本类型 color: 'red' //文本颜色 }, { vlaue: '2020-10-1', text: '休', type: 'tag', //标签类型 color: 'lightblue', //标签颜色 } ] [代码] 那么此时的日历应该是长成这样 [图片] 开始封装 首先我选择的组件是微信小程序的swiper 确定每个月的1号是星期几 [代码] /** * 获取某月1号是星期几 * @param {Object} date * @returns {Number} */ getFirstDayWeek(date) { return new Date(date.year, date.month - 1, 1).getDay() }, [代码] 确定每个月的天数 [代码] /** * 获取某年某月的总天数 * @param {Object} date * @returns {Number} totalDays */ getTotalDays(date) { return new Date(date.year, date.month, 0).getDate() }, [代码] 根据第二点和第三点可以轻松知道当前月份的上个月的残余天数和下个月的残余天数(日历上显示的总天数是7的倍数,且最多显示6行) [代码]/** * 根据这个月,计算上下两个月的残余天数 * @param {Object} date */ calculateResidualDays(date) { // 计算上月残余天数,需要知道1号是星期几(个数)且上月最后一天是几号(起始数值) let last_value = dateUtil.getTotalDays({ year: date.year, month: date.month - 1 }) for (let i = 0; i < date.firstDayWeek; i++) { date.list.unshift({ value: this.properties.showRemnantDays ? last_value - i : '', type: 'last' }) } // 计算下月残余天数,需要知道本月显示多少行 let total = Math.floor(date.list.length / 7) if (date.list.length % 7 > 0) { ++total } if (this.properties.fixRow) { // 设置了每月固定显示6行 total = 6 } let next_value = total * 7 - date.list.length // 设置滚动框的高度,设置变化的过渡动画 date.swiperHeight = total * 107 for (let i = 1; i <= next_value; i++) { date.list.push({ value: this.properties.showRemnantDays ? i : '', type: 'next' }) } // 格式化显示的提示信息 this.formatShowTip(date) }, [代码] 大致上日历已经显示出来了,配置显示的文字和标签 [代码] /** * 格式化文字标签 * @param {Object} date */ formatShowTip(date) { // 判断是否显示相关的节假日 if (this.properties.showHoliday) { this.formatHolidayTip(date) } // 循环遍历找出对应的要显示的文字日期 this.properties.dateText.forEach((item, index) => { date.list.forEach((arr, temp) => { let value = date.year + '-' + date.month + '-' + arr.value if (item.value === value && arr.type === 'cur') { arr.tip = item } }) }) }, [代码] 设置选中日期 点击按钮 最后 因为代码的篇幅比较大,所以没有粘贴全部,只是一部分,详细的代码可见小程序业务组件日历。 github里面的组件目前只是单纯的提供日历的显示,暂时还没有提供获取后端数据并且格式化的方法,这个可自行添加,也可以在切换月份的时候回调事件处理。 组件整体的效果变现为: [图片] 原文链接
2023-03-03 - 关于小程序ios端android webview一直缓存问题的解决方案
// 只要配置服务端http的 Cache-Control Expires Pragma 即可 //php配置 header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); header("Pragma: no-cache"); //php nginx 选择一个地方配置了就行 //nginx 配置 if 路径 { expires -1; } 如何验证:在chrome中打开控制台,查看network,点击请求,查看resposne,如下图所示 [图片]
2022-02-17