这个问题很纠结,我也准备弄个类似的功能。
小程序中可以推荐其他人的小程序吗?我是独立开发者,做了几个工具类的小程序。我朋友也是独立开发者,做了几个不错的工具类小程序。 现在我想在我的小程序的关于页面,推荐我朋友的小程序,同时让他也在他的小程序关于页面帮我推荐我的小程序。(不是小程序盒子,小程序都有自己的功能,只是在内页关于小程序开发者里面增加3-5个推荐同类型的工具小程序) 我看文档里面有这样的说明:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/miniprogram-navigate/wx.navigateToMiniProgram.html 平台将坚决打击小程序盒子等互推行为,使用此功能时请严格遵守《微信小程序平台运营规范》,若发现小程序违反运营规范将被下架处理。 现在想知道,我和好友的小程序在关于小程序内页中加互相跳转,是否违反规定?如何鉴定怎么算违规怎么算不违规?
04-17太吓人了,需要这么多证。 没有证,简直寸步难行啊,闷头做小程序,到头来发现根本走不下去,晕死。
有没有介绍下微信小游戏的各种资质分别到哪里申请?我先把我了解到的信息发出来,很多可能是错误的,刚办过的人请指正。 只以公司名义为例,个人简单。 《游戏自审自查报告》 需要资料:参考模板自己写就可以。 《计算机软件著作权登记证书》 申请入口:http://www.ccopyright.com.cn/ 硬性要求:营业执照、源代码、软件文档(我就是写使用说明书,截图加文字,已申请成功过几个),源代码和软件文档请仔细看格式要求,比如页眉、每页几行。 《文化部备案信息》 申请入口:各省文化厅? 有人说国家备案现在处于关闭期间。这个说法可靠吗? 《广电总局版号批文》 《广电总局版号批文》就是游戏版号,是广电总局同意相关游戏出版上线运营的批准文件,全称《网络游戏电子出版物审批》?这个说法对吗? 有人说申请版号之前一定先要把《ICP 经营许可证》、《网络文化经营许可证》、《游戏软件著作权》、《互联网出版许可》都办下来才行?这个说法对吗? 如果确实需要这些前置条件,申请入口和要求分别如下: 《ICP 经营许可证》 申请入口:各省通信管理局 https://tsm.miit.gov.cn/ 硬性要求:3个专职人员(在公司社保名单内,其中1个需要计算机软件相关专业毕业证书),注册资本100万,租房合同原件和房产证复印件、扫描件 《网络文化经营许可证》 申请入口:省文化厅 硬性要求: 1、营业执照经营范围必须含:经营性互联网文化服务; 2、企业股东、法定代表人身份材料复印件; 3、3个以上专职人员(在公司社保名单内,都需要计算机或软件工程等专业,提供专业人员身份证明及毕业证书(职称证书)) 4、注册资本1000万(有说法降低到100万了?) 《互联网出版许可》 暂无资料要办的证太多了,浪费太多精力在这些地方了
04-17好家伙,我也出现了这个问题。 但我已经知道是什么原因了。 是在编辑 js 文件时候,不小心通过系统提示输入了一个莫名其妙的函数名,然后IDE给你自动导入对应的lib文件(在js文件的首部给你加的import).然后编译出错。 这倒不算bug,是你自己不小心。
'pages/index/XrFrame/systems.js' is not def?报错,就简单的三个页面,本来还好好的,忽然就报错了,请问怎么解决? index页面我没有用到XrFrame [图片]
03-18session_key 好像基本没啥用啊,官方文档罗哩罗嗦一堆登录流程,把人搞晕乎了。 登录流程: 微信用户启动小程序->调用wx.login获取到CODE->发送到小程序后台服务/后台服务再通过CODE/APPID/SECRET从微信服务器获取OPENID.SESSIONKEY,走到此处就完成了前端用户小程序登录到小程序后台服务器的逻辑,因为OPENID是微信用户和小程序ID(APPID)的唯一映射,后台服务器将此OPENID记录到数据库,表示此用户注册了/登录了。 接下来小程序服务器自己生成一个TOKENID发给前端小程序来维护当前登录状态即可,前端小程序可以将此TOKENID简单保存为全局或者序列化保存到硬盘上,下次再启动时候读取。每次给小程序服务器发送请求时候绑定此ID认证当前用户的状态,整个过程无需SESSIONKEY的参与。 即便为了完全,小程序后台给TOKENID设定一个有效时间,然后也就是给前台命令,要前台再次调用wx.login走一道上述流程。 getuserinfor 好像也用不到,据说获取电话号需要用到,但99.99%的小程序都用不到这个功能吧,即便getuserinfor也很多用不到,唯一用到的就是openid,将微信用户和小程序运营系统绑定起来,用户的平台昵称头像什么的,不从微信平台获取也无所谓啊,自己搞一样的。 既然有后台,肯定后台代码可以维护用户登录态,又不是多复杂。如果是无后台小程序(所有功能都在小程序包代码里面实现不访问后台),那些登录流程通通不需要,甚至getuserinfor授权都不一定需要。很奇怪还弄了判断session有效性的API,这玩意根本用不上啊。 OPENID是唯一绑定的,小程序后台只要得到他,一切登录用户系统/客户服务都迎刃而解。 而login连弹窗都没有,微信用户启动小程序后,app.js里面调用login,连接后台,后台处理返回token,一切流程都静悄悄解决了。
为什么wx.login获取的session_key会是过期的?如果是连续使用wx.login获取的session_key 过5 到8分钟之后 再通过wx.login获取session_key 测试过程: 第一种方式: 删除手机上的小程序从开发工具扫码获取最新的小程序,然后通过wx.login 实现登录,连续删除,连续扫码重新打开小程序,然后点击wx.login实现登录 不会出现wx.login获取失效的session_key 第二种方式: 删除手机上的小程序 然后过3-5分钟 去重新扫码获取最新的小程序 =》 通过wx.login实现登录,第一次wx.login就会获取到失效的session_key,目前是必现的 有兄弟知道是什么原因吗 我没有使用checksession 直接使用的wx.login 在线等。。。
02-23我也遇到这个问题。动态更新某个marker的ui(边框/背景颜色),闪烁特厉害,效果完全不能直视。 模拟器上倒没问题一点不闪烁。 拖拽/缩放时候marker都正常。 感觉像是setdata(marker..操作内部先清零一遍mark刷新一次,然后再添加所有mark再刷新导致的。明显逻辑有问题啊。 这部分lib代码是刚毕业的程序员写的么?
微信小程序地图动态加载marker出现闪烁现象- 当前 Bug 的表现(附上截图) [图片] 可以看到拖动地图出现明显的闪烁。 使用微信小程序地图动态展示marker,当用户拖拽或缩放地图时需要加载当前区域内的marker,但是使用setData({markers:markers})出现很明显的闪烁现象,该怎么解决? - 预期表现 移动地图,动态加载marker,地图上的marker无明显闪烁现象,让用户感觉不到marker刷新了。或者能否提供插入或删除单个marker的方法,这种批量操作marker的效率太低了。 - 复现路径 用鼠标拖动地图,marker重新加载会出现闪烁 - 复现 Demo demo如下: map.wxml: [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"map_container"[代码][代码]>[代码] [代码]<[代码][代码]map[代码] [代码]class[代码][代码]=[代码][代码]"map"[代码] [代码]id[代码][代码]=[代码][代码]"map"[代码] [代码]longitude[代码][代码]=[代码][代码]"{{longitude}}"[代码] [代码]latitude[代码][代码]=[代码][代码]"{{latitude}}"[代码] [代码]scale[代码][代码]=[代码][代码]"14"[代码] [代码]show-location[代码][代码]=[代码][代码]"true"[代码] [代码]markers[代码][代码]=[代码][代码]"{{markers}}"[代码] [代码]bindregionchange[代码][代码]=[代码][代码]"regionchange"[代码][代码]></[代码][代码]map[代码][代码]>[代码] [代码]</[代码][代码]view[代码][代码]>[代码]map.wxss: [代码].map_container{[代码][代码] [代码][代码]position[代码][代码]: [代码][代码]absolute[代码][代码];[代码][代码] [代码][代码]top[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]bottom[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]left[代码][代码]: [代码][代码]0[代码][代码];[代码][代码] [代码][代码]right[代码][代码]: [代码][代码]0[代码][代码];[代码][代码]}[代码][代码].map{[代码][代码] [代码][代码]width[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码]}[代码]map.js [代码]var[代码] [代码]amapFile = require([代码][代码]'../../libs/amap-wx.js'[代码][代码]);[代码][代码]var[代码] [代码]markersData = [];[代码][代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]markers: [],[代码][代码] [代码][代码]latitude: [代码][代码]'32.864377803922'[代码][代码],[代码][代码] [代码][代码]longitude: [代码][代码]'115.788491268263'[代码][代码] [代码][代码]},[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]},[代码][代码] [代码][代码]onShow:[代码][代码]function[代码][代码](){[代码][代码] [代码][代码]//模拟从服务器加载设备[代码][代码] [代码][代码]//模拟网络延迟[代码][代码] [代码][代码]setTimeout(() => {[代码][代码] [代码][代码]var[代码] [代码]markers = [代码][代码]this[代码][代码].getMarkers();[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]markers: markers[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}, 1000);[代码][代码] [代码][代码]},[代码][代码] [代码][代码]regionchange:[代码][代码]function[代码][代码](res){[代码][代码] [代码][代码]if[代码][代码](res.type==[代码][代码]'end'[代码][代码]){[代码][代码] [代码][代码]console.log([代码][代码]"加载设备"[代码][代码]);[代码][代码] [代码][代码]//模拟从服务器加载设备[代码][代码] [代码][代码]//模拟网络延迟[代码][代码] [代码][代码]setTimeout(()=>{[代码][代码] [代码][代码]var[代码] [代码]markers = [代码][代码]this[代码][代码].getMarkers();[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]markers: markers[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},1000);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码][代码] [代码][代码]getMarkers:[代码][代码]function[代码][代码](){[代码][代码] [代码][代码]var[代码] [代码]markers1 = [ [代码][代码] [代码][代码]{ latitude: 32.863684789997, longitude: 115.794747394735 }[代码][代码] [代码][代码], { latitude: 32.866150490718, longitude: 115.779776056454 }[代码][代码] [代码][代码], { latitude: 32.85699840912, longitude: 115.793706230259 }[代码][代码] [代码][代码], { latitude: 32.868802796587, longitude: 115.795851934883 }[代码][代码] [代码][代码], { latitude: 32.868802796587, longitude: 115.795851934883 }[代码][代码] [代码][代码], { latitude: 32.865037454128, longitude: 115.784221396101 }[代码][代码] [代码][代码], { latitude: 32.861683316431, longitude: 115.794735614756 }[代码][代码] [代码][代码], { latitude: 32.86145345, longitude: 115.7946734 }[代码][代码] [代码][代码], { latitude: 32.866980115902, ongitude: 115.779949 }[代码][代码] [代码][代码], { latitude: 32.861960286233, longitude: 115.794732449203 }[代码][代码] [代码][代码], { latitude: 32.861960286233, longitude: 115.794732449203 }[代码][代码] [代码][代码], { latitude: 32.860691527707, longitude: 115.783249338155 }[代码][代码] [代码][代码], { latitude: 32.858660704851, longitude: 115.782761369842 }[代码][代码] [代码][代码], { latitude: 32.861673318033, longitude: 115.782898390111 }[代码][代码] [代码][代码], { latitude: 32.859451402325, longitude: 115.783271050545 }[代码][代码] [代码][代码], { latitude: 32.858075553001, longitude: 115.782085844506 }[代码][代码] [代码][代码], { latitude: 32.85980061309, longitude: 115.782478686392 }[代码][代码] [代码][代码], { latitude: 32.859026954912, longitude: 115.783450959086 }[代码][代码] [代码][代码], { latitude: 32.858902233697, longitude: 115.786543290987 }[代码][代码] [代码][代码]];[代码][代码] [代码][代码]var[代码] [代码]markers2 = [[代码][代码] [代码][代码]{ latitude: 32.863684789997, longitude: 115.794747394735 }[代码][代码] [代码][代码], { latitude: 32.859749503874, longitude: 115.782486744537 }[代码][代码] [代码][代码], { latitude: 32.865891748675, longitude: 115.778707367095 }[代码][代码] [代码][代码], { latitude: 32.868802796587, longitude: 115.795851934883 }[代码][代码] [代码][代码], { latitude: 32.868802796587, longitude: 115.795851934883 }[代码][代码] [代码][代码], { latitude: 32.865037454128, longitude: 115.784221396101 }[代码][代码] [代码][代码], { latitude: 32.861683316431, longitude: 115.794735614756 }[代码][代码] [代码][代码], { latitude: 32.86145345, longitude: 115.7946734 }[代码][代码] [代码][代码], { latitude: 32.866980115902, ongitude: 115.779949 }[代码][代码] [代码][代码], { latitude: 32.861960286233, longitude: 115.794732449203 }[代码][代码] [代码][代码], { latitude: 32.861960286233, longitude: 115.794732449203 }[代码][代码] [代码][代码], { latitude: 32.860691527707, longitude: 115.783249338155 }[代码][代码] [代码][代码], { latitude: 32.858660704851, longitude: 115.782761369842 }[代码][代码] [代码][代码], { latitude: 32.861673318033, longitude: 115.782898390111 }[代码][代码] [代码][代码], { latitude: 32.859451402325, longitude: 115.783271050545 }[代码][代码] [代码][代码], { latitude: 32.858075553001, longitude: 115.782085844506 }[代码][代码] [代码][代码], { latitude: 32.85980061309, longitude: 115.782478686392 }[代码][代码] [代码][代码], { latitude: 32.859026954912, longitude: 115.783450959086 }[代码][代码] [代码][代码], { latitude: 32.858902233697, longitude: 115.786543290987 }[代码][代码] [代码][代码]];[代码][代码] [代码][代码]var[代码] [代码]markers3 = [[代码][代码] [代码][代码]{ latitude: 32.863684789997, longitude: 115.794747394735 }[代码][代码] [代码][代码], { latitude: 32.859749503874, longitude: 115.782486744537 }[代码][代码] [代码][代码], { latitude: 32.85699840912, longitude: 115.793706230259 }[代码][代码] [代码][代码], { latitude: 32.868802796587, longitude: 115.795851934883 }[代码][代码] [代码][代码], { latitude: 32.868802796587, longitude: 115.795851934883 }[代码][代码] [代码][代码], { latitude: 32.865037454128, longitude: 115.784221396101 }[代码][代码] [代码][代码], { latitude: 32.865902040263, longitude: 115.780964494169 }[代码][代码] [代码][代码], { latitude: 32.86145345, longitude: 115.7946734 }[代码][代码] [代码][代码], { latitude: 32.866980115902, ongitude: 115.779949 }[代码][代码] [代码][代码], { latitude: 32.861960286233, longitude: 115.794732449203 }[代码][代码] [代码][代码], { latitude: 32.861960286233, longitude: 115.794732449203 }[代码][代码] [代码][代码], { latitude: 32.860691527707, longitude: 115.783249338155 }[代码][代码] [代码][代码], { latitude: 32.858660704851, longitude: 115.782761369842 }[代码][代码] [代码][代码], { latitude: 32.861673318033, longitude: 115.782898390111 }[代码][代码] [代码][代码], { latitude: 32.859451402325, longitude: 115.783271050545 }[代码][代码] [代码][代码], { latitude: 32.858075553001, longitude: 115.782085844506 }[代码][代码] [代码][代码], { latitude: 32.85980061309, longitude: 115.782478686392 }[代码][代码] [代码][代码], { latitude: 32.859026954912, longitude: 115.783450959086 }[代码][代码] [代码][代码], { latitude: 32.858902233697, longitude: 115.786543290987 }[代码][代码] [代码][代码]];[代码][代码] [代码][代码]var[代码] [代码]rm = (Math.random()*3).toFixed(0);[代码][代码] [代码][代码]console.log([代码][代码]"rm="[代码][代码]+rm);[代码][代码] [代码][代码]if[代码][代码](rm==1){[代码][代码] [代码][代码]return[代码] [代码]markers1;[代码][代码] [代码][代码]}[代码][代码]else[代码] [代码]if[代码][代码](rm == 2){[代码][代码] [代码][代码]return[代码] [代码]markers2;[代码][代码] [代码][代码]}[代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]return[代码] [代码]markers3;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码]})[代码]
02-06这个函数,根本就没有实现。 调用没反应卡死。 浪费大爷我的时间。
map组件执行方法不生效fromScreenLocationhttps://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.fromScreenLocation.html 为什么这个方法调用不生效, map.fromScreenLocation({ x: 100, y: 100, success: (res) => { console.log('成功'); console.log(res); that.locationInfo.lat = res.latitude.toFixed(6) that.locationInfo.lng = res.longitude.toFixed(6) that.searchLocation() }, complete: () => { console.log('完成'); } })
01-31终极解决方案: 先直接返回 echostr; 如果还不行,先通过chrome 打开此url网页(随便传个echostr参数进去),仔细观察返回结果,看字符串前后是不是有空格/回车,如果有就是你的web服务程序输出内容有夹带. 比如php脚本,在<?PHP 标签前面,很多人习惯留个空行,删掉就行。 前面有人说是编码什么,不是那个情况,我反复试了,怎么设置header都没用。
微信公众号开发配置url提示token验证失败?[图片] 项目发布到服务器运行ok, 配置url失败, 服务器的日志消息显示已经微信的get请求已经进入并成功返回了 “echostr”的值 但是依然显示token配置失败 操作时间在2019年9月11日18点30
2023-09-24