- 小程序如何与内嵌h5实时通信?
说下项目背景: 我们的项目小程序只有一个Home页,内嵌的h5。 目前只有支付的时候需要调用小程序api。 问题是h5与小程序如何实时通信,官方推荐的bindmessage只是h5发消息到小程序,小程序如何通知h5 呢? 目前找到的方法只有通过url携带参数,在h5和小程序之间来回页面跳转。 h5想支付了,携带参数跳转到小程序页面 小程序支付失败了,携带参数跳转h5页面 我觉得这种通信手段太烂了,有没有更高明的方法?
2019-08-22 - 同一企业主体下两个账号间的APP可以迁移吗?
如题,我们公司有A,B两个开放平台账号,现在想把A账号下的APP迁移到B账号下去。可以实现吗?流程一样的吗?
2020-09-21 - 关于webview的bindmessage通信需求
- 需求的场景描述(希望解决的问题) 小程序首页嵌套的 web-view 页面,因变量在 webview 页面中进行变化,例如一个切换城市的功能。 我在小程序其他页面,需要使用到该变量的值,此时依据 web-view 官方文档显示,仅特定时机(小程序后退、组件销毁、分享)触发并收到消息 而我的 webview 在首页入口页面,就没办法触发上述的特定条件,也就没办法获取到 webviw 中的变量值。 - 希望提供的能力 希望能够打破 bindmessage 的局限性,可以随时获取到 web-view 中 js 的全局变量,实现更便捷的通信功能,看是否可以实现
2019-06-10 - 建议 web-view的useragent中能加入特殊字符以区分微信自带浏览器
建议 web-view的user-agent中能加入特殊字符以区分微信自带浏览器 或者开发者可以自己设定部分header信息 我的需求是在页面加载前使用服务器程序来判断是否是小程序,还没到页面加载后用js来判断这一步 在URL 里加特殊的字符串这个方法是我现在在用的方法,但是很不方便,如果遇到页面里有其他页面的链接,就很麻烦了 所以还是建议能通过user-agent中加入特殊字符的方式,方便开发 ------- 有官方用户回复建议:第一次在web-view src上带多一个参数,服务器识别到这个参数后种一个cookie呢,后续请求识别这个cookie即可。cookie的有效期可以只是当前session 我这边实际测试的结果是:设置cookie方法不行,我实际测试了,即使cookie有效期是当前session的情况下,在小程序webview中设置的cookie,在同一进程微信浏览器中打开,这个cookie仍然存在 根源还是在 小程序webview和微信本身浏览器没有做区分
2018-06-11 - 小程序微信登录能力调整
为了优化用户的使用体验,平台将回收“使用 wx.getUserInfo 接口直接弹出授权框”以及“使用 wx.authorize 接口直接申请提前授权用户信息”的能力,开发者需要使用组件方式唤起登录授权弹窗。 2018年10月10日后发布新版本的小程序,将无法在线上版本中使用接口直接弹出授权框。开发者可结合平台设计建议,提前做好兼容,合理使用微信登录能力。 能力调整背景 怎么合理使用微信登录能力 小程序登录流程设计建议 01 能力调整背景 推出微信登录能力的初衷是希望:当用户使用小程序时,可以便捷地使用微信身份登录小程序。但在实际使用场景中,我们发现:很多开发者在打开小程序时直接弹出授权框,如果用户点击拒绝授权,无法使用小程序。 在用户无法获知当前小程序服务内容的情况下,很多用户就会选择拒绝授权并离开当前小程序。所以“一进入小程序就要求用户授权”的做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。 所以平台调整登录接口,回收“使用 wx.getUserInfo 接口直接弹出授权框”以及“使用 wx.authorize 接口直接申请提前授权用户信息”的能力,并鼓励开发者参照以下指引合理改造小程序内的登录流程。 02 怎么合理使用微信登录能力 平台分别提供多种方式实现微信登录: 1. 调用wx.login接口,静默获取openid 适用场景:无需使用用户头像、昵称、Unionid信息 2. 使用 open-data (小程序)或者开放数据域(小游戏)的方式展示用户信息(无需用户授权) 适用场景:需要在前端“展示”用户头像、昵称信息,但不需要获取Unionid 3.使用button(小程序)或UserInfoButton(小游戏)组件,用户点击后弹窗请求用户授权 适用场景:需要获取用户头像、昵称、Unionid等基本信息 开发建议 第一步:获取openID 当用户访问小程序时,先通过wx.login,获取用户openID 。这时无需弹框授权,开发者拿到 openID 可以建立自身的帐号 ID。 第二步: 使用open-data方式或开放数据域方式展示头像昵称 如需要在前端展示用户头像、昵称信息, 使用open-data 方式或者开放数据域的方式展示用户信息 第三步:根据实际使用场景,使用组件,引导用户登录 在关键操作中,如必须获取用户头像、昵称、UnionID信息,可根据第一步获取的openID判断是新用户还是旧用户: 如果是旧用户,可以直接登录,也可定期使用wx.getUserInfo更新用户的信息; 如果是新用户,使用button(小程序)或UserInfoButton(小游戏)组件,在用户点击后弹窗请求获取用户基本信息。 03 小程序登录流程设计建议 a. 在必须用到登录信息的环节引导用户登录 在用户必须登录时才引导用户登录(如:购买前需要获取会员信息,用于同步积分数据),而不是用户一进入小程序就弹窗要求用户授权。如只需要在前端展示用户头像、昵称,无需要求用户授权,可直接展示。 [图片] b.清晰、准确地引导用户登录 在登录页面中,清晰、准确地告知用户当前操作是登录,说明获取登录信息的目的(如:用于同步会员积分数据等) [图片] c. 不强制用户必须登录后才能使用小程序服务 提供游客模式,不强制用户必须登录后才能进入小程序。如要求必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。 [图片]
2018-12-29 - (6)微信登录能力优化
小程序和小游戏内的用户登录,我们推荐使用以下两种方式获取用户信息: ▷ 按钮组件的登录方式,用户主动点击按钮可以拉起用户授权弹框,获取用户头像、昵称等信息; ▷ 在不获取用户信息的情况下,可展示用户头像昵称。 用户在没有任何操作的情况直接弹出授权的登录方式将逐渐不再支持,受影响的有 wx.getUserInfo 接口,以及 wx.authorize 接口传入 scope="scope.userInfo" 的情况。 1 为什么平台要做接口调整? 我们提供了 wx.login 和 wx.getUserInfo 接口,用于获取用户的 openID 和基本信息。 推出这两个接口的初衷是希望:当用户使用小程序时,只有访问到真正需要登录的页面,才需要授权并登录。 但在实际应用中,我们发现很多开发者在打开小程序时直接弹出授权框,如果用户点击拒绝授权,无法使用小程序。 在没有任何提示和背景的情况下,直接弹框想要获得用户信息授权,用户脑子里可能会闪过几个哲学问题: 你是谁? 我在哪里? 我为什么要同意? …… 相当一部分用户下意识会点击“拒绝“授权——这样不合理的登录流程既造成了用户的困扰,还使得用户流失。 用户通过小程序可以快速获取服务,因此在访问小程序的第一个页面非常重要。 对于一个互联网产品而言,第一个页面决定了用户对这个产品的认知,用户会选择是否继续使用这个产品。 一个优秀的互联网产品,能够给用户留下一个好的第一印象,用户可以快速了解你的产品,接收到你想要传递的服务信息,从而产生相应的操作行为。 一个优秀的小程序会吸引用户在小程序里进行探索,完成你期望他们去做的事,比如会员注册、商品购买等。 试想一下如果一个品牌的商品官网,一进入要求用户登录才能查看产品信息是什么感觉呢? 因此良好的用户登录体验非常重要。 2 如何设计登录流程? 用户打开小程序时,看第一眼的时候,开发者需要专注以下两个目标: ▷ 精准快速地传达产品理念,开发者要让用户能够快速了解自己的产品和服务; ▷ 将用户流量进行转化,让用户能方便操作或者交易。 一般而言,用户打开小程序后看到的第一个页面,先不要直接弹出授权框,第一个页面可以包含以下内容: ▷ 展示你的小程序功能(如产品、服务、活动等) ,让用户清晰地知道小程序是做什么用的,这些内容可以是你的精选内容; ▷ 激发用户的探索欲,通过描述或者图片吸引用户注意力; ▷ 按照自己的产品目标,给用户提供清晰明确的下一步操作(查看详情、购买等)。 如果某些特殊小程序在使用前一定需要用户登录,或者已经进行到需要用户登录的操作时,可以将 button 组件(其中 open-type 属性指定为 getUserInfo)放置到页面中,页面上可以大致说明以下要点: 为什么需要我授权? 需要我什么信息? 授权后我得到什么好处呢? 接下来在页面上放置一个明显的登录按钮, 建议这个页面上不要有额外的点击区域,以免分散用户注意力,让用户专注于登录这件事情。 3 简单的开发建议 1 当用户打开小程序时访问第一个页面时,先通过 wx.login,获取用户 openID 。这时无需弹框授权,开发者拿到 openID 可以建立自身的帐号 ID。 2 在第一步中,拿到 openID 后,判断是新用户还是老用户。如果是老用户,可以直接登录;如果是新用户,可先在小程序首页展示你的信息服务,让用户对这个小程序有大概的了解,再引导用户进行下一步的操作。 3 当需要获取用户头像昵称的时候,对用户展示一个登录页面,这个页面只有一个最重要的操作,引导用户进行登录。 小程序中,在页面中加入一个 button 按钮,并将 open-type 属性设置为 getUserInfo 。 以小程序为例: 微信登录 对于功能较简单的小程序或者小游戏而言,如果不是必须要获得用户的头像昵称,建议可先通过wx.login 拿到 openID 后,使用 open-data 方式或者开放数据域的方式展示用户信息,整个过程都无需用户授权。 Tips: 1、在用户登录后,开发者需要存储用户的 unionID,而且建议只把 unionID 作为互通的用户标识,不要直接使用 unionID 作为用户 ID。因为一旦小程序迁移到其他的开放平台下,unionID 是会改变的,而 openID 是不变的。 2、用 button 组件的方式获得用户授权后,调用 wx.getUserInfo 就可以直接获取用户信息。这个的意义在于获取过一次之后,用户有可能改昵称头像,因此为了及时同步,最好是定期获取用户信息。 这里两个小提示: ▷ 定期使用 wx.getUserInfo 获取并更新用户的信息; ▷ 如果用户授权过一次之后,又在设置中关掉了授权(或者本地删除了小程序),那这时再调用 wx.getUserInfo 也是不会成功的,需要重新获得授权。 相关开发文档参考: ▷ 小程序 1、小程序 wx.login 2、button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息 3、open-data 展示用户基本信息 ▷ 小游戏 1、小游戏 wx.login 2、用户信息按钮 UserInfoButton 3、开放数据域下的展示用户信息
2018-08-17 - 小程序内置web-view的userAgent问题
小程序内的web-view所打开的页面获取的userAgent中不包含小程序特征,无法识别是在小程序web-view中打开的页面,而在安卓端或开发者工具端web-view的UA中都有miniprogram或miniProgram关键字。 官方文档所提供的 [代码]window.__wxjs_environment[代码]这种方式实际使用起来诸多不便(需等待WeixinJSBridge,以及接口调用需单独传参),希望能在UA中加入特征字符串,感谢。
2018-06-27 - webview 是否可以写header信息、useragent和cookie
- 需求的场景描述(希望解决的问题) 从小程序里打开H5,无法传递当前登录token信息给H5 - 希望提供的能力 目前最简单的解决方法就是在URL里传token信息,但这明显不安全。 希望webview能够设置header信息或者cookie信息,方便H5后端捕获当前信息。 另外useragent 在iOS端也无法识别出来。 另外也希望webview能提供更多事件,能知道当前处于请求开始,请求中、请求结束和中断等信息
2018-11-16 - 小程序统计有疑问,求相关人士解答
- 当前 Bug 的表现(可附上截图) 小程序自动统计uv一共是300左右,但通过自己后台记录的授权人数4000多个,不了解为什么微信统计的差距这么大?有没有合理的解释微信是如何统一一个有效用户的? 看开发文档上"访问人数:访问小程序页面的总用户数,同一用户多次访问不重复计",后台已经完整的记录了4000个授权用户,这都不能算作有效用户吗?
2019-01-14 - 接口被爬虫1小时内累计调用200w次+
历程 从4月20日开始,起初小程序页面被微信爬虫访问时,会携带特定的 user-agent:mpcrawler 及场景值:1129 附部分IP地址与访问次数: [代码]223.166.222.109 - 1,150[代码] [代码]101.91.60.23 - 1,069[代码] [代码]223.166.222.11 - 1,044[代码] [代码]101.227.139.164 - 1,033[代码] [代码]101.91.60.22 - 1,020[代码] [代码]101.91.60.101 - 983[代码] [代码]223.166.222.108 - 897[代码] [代码]101.91.60.11 - 843[代码] [代码]58.247.206.157 - 266[代码] [代码]58.247.206.142 - 265[代码] [代码]58.247.206.152 - 256[代码] [代码]58.247.206.147 - 240[代码] 此后几天,断断续续有爬虫访问小程序页面 4月25日,收到【日志服务告警】- 短时间内大量415、400的状态码,这次开始很特殊——爬虫即没有user-agent也没有携带场景值 但是这次IP同之前的微信爬虫IP大多重叠,而且referer规则都是:https://servicewechat.com/${app_id}/0/page-frame.html,其中version=0(开发版、体验版以及审核版本),以为是机器人审核,但是也不应该持续触发大量非法请求并且没有携带user-agent 附4月25日 - Nginx日志: [图片] 引用自小程序官方问答Q&A: 网络请求的 referer 是不可以设置的,格式固定为 [代码]https://servicewechat.com/{appid}/{version}/page-frame.html[代码],其中 [代码]{appid}[代码] 为小程序的 appid,[代码]{version}[代码] 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本。 就在今天(4月28日)中午将小程序【页面收录】功能设置为关闭,晚上19~20点18~19点,接口被爬虫1小时内累计调用200w次+ 附4月28日晚上19~20点18~19点 - Nginx日志分析: [图片] 疑问 101.91.60.*、223.166.222.*、58.247.206.*等IP是否为微信官方爬虫IP? 微信官方爬虫IP有哪些? 微信爬虫访问是否一定会携带user-agent:mpcrawler 及场景值:1129?
2019-04-30 - 访问分析中访问页面的访问人数和次数的统计时间点是怎样的?
统计访问人数和次数这个事件,是在onLoad或者onShow执行完成之后统计的吗? 我们小程序目前通过switchTab跳转到某页面的过程中,通过自定义事件统计到用户点击跳转按钮的人数为20000多,但是在访问分析的访问页面中目标跳转页的访问人数只有8000多,差了将近3倍。因为这个是小程序内部的页面跳转,怎么会差这么多呢?
2018-10-31 - 访问用户数的获取机制
求教官方大神,我们微信后台显示的累计用户数有10000+,但是数据库里只有8000,不知道微信后台的这个数据获取是如何判定的?如果用户点击了小程序,但是没同意授权,还算么?
2018-07-14 - 小程序自己统计的数据和官方数据对不起来,找不到原因,求大神解答
我们游戏盒子自己统计的8月16日~8月14日的数据如下,其中 PV是盒子的访问次数,UV是盒子的访问人数,当日新增用户数是盒子的新访问人数 PV这里定义跟微信不同,已知。我们的问题是UV和当日新增用户数与官方差异较大,开发自查无解。[图片] 与官方数据对比 打开活跃相当于我们自己统计的UV数据,新增相当于我们自己统计的当日新增用户[图片][图片]
2018-08-17 - 这几天有几百个账号访问我的程序,scene=1129,是不是官方的爬虫
这几天有几百个账号访问程序,scene=1129,是不是官方的爬虫,也收集不到这些账号的fromId,在凌晨三四点的时候访问量还挺大;
2019-04-09 - 小程序官方爬虫
- 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo 最近遇到了一个问题,我的小程序后台接口被人恶意请求。一直从6号请求到现在。 然后我下架了小程序,重新发布审核代码。在审核的过程中,我发现我的新后台接口有了新的请求,这肯定是官方的审核人人员 然后审核成功,我发布了我的代码。这些新的后台接口,就只有我知道,谁也不知道。但又开始一直爬取我的新接口 主要是ip一直在变,浏览器头是苹果的手机头,根本禁止不了 [代码]223.166.222.110 - - [09/Apr/2019:15:38:50 +0800] [代码][代码]"GET 这是接口地址 HTTP/1.1"[代码] [代码]403 169 [代码][代码]"https://servicewe chat.com/wxabe23c48dcfef47c/0/page-frame.html"[代码] [代码]"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, li ke Gecko) Version/11.0 Mobile/15A372 Safari/604.1 MicroMessenger/6.7.4 MicroMessenger/6.5 mpcrawler"[代码] 我就想问下,为啥官方一直爬我接口,这个新接口我就审核了而已,你们就开始爬?想干嘛
2019-04-09