微信公众号接口深入剖析与应用——多接口集合应用与重用技术开发(图文导航)

前几天有几个朋友叫我出一个关于公众号发送位置导航的教程,迫于时间压力才今天开始写写,我先说说思想

吧,首先我们知道微信发送位置可以朋友与朋友之间直接发送,但是在一个公司或者企业下,一个公众号下面可

能有很多个关注用户,那就涉及到了给陌生人发送位置的情况,我们知道微信给陌生人是发送不了信息的,需要

通过验证才行,那就涉及到了本篇要讲的第一个避开验证的方法

方法一:通过公众号转发位置给非好友的陌生人,绕过好友验证,点击导航

可能有人就会问,在48小时内如果用户未与公众号交互,信息就会发送失败,这就是本篇第二个方法,通过高级

群发接口获得用户焦点,目前仅限4条/月

方法二:避免公众号失去用户焦点,可结合高级群发,需要经常调用的,可尝试结合企业号群发接口激活焦点以

保证用户48小时内公众号得到过用户焦点,企业号无限制

可能大家还会质疑,用户转发给陌生人的位置消息类型,公众号要以什么样的形式转发给陌生人呢?因为在公众

号的消息响应接口和被动回复消息接口里,没有发送地理位置消息接口,那我们该怎么处理呢?首先说说Link类

型,当陌生人点击Link位置消息会直接调用导航SDK(web api/JS API),此方式相对灵活便捷,而TEXT呢,更轻

易便捷和灵活,但是必须需要与语音接口结合,且不考虑数据库昵称存储与索引的弊端,有些昵称有符号不方便

存储与语音识别和语言表述,所以TEXT是绝对不可取的,那就剩下NEWS类型了,NEWS类型即图文,图(用户

头像)文(用户昵称)并茂,而且给用户的体验度良好,但是相对于LINK灵活度下降,且耗时较长,尤其是在公众

号粉丝较多的情况下,本篇由于是拿测试号测试的,粉丝最多20个,所以选择了NEWS类型

其实,我有个建议,就是通过openid、昵称、ID等给其添加备注并且绑定,结合数据库,需要发送位置时,只

需要结合关键字匹配和语音识别等接口就可以索引到想要发送的人,避免了耗时的操作,然后在封装位置消息

转发(此方法适用于大数据的公众平台)

方法三:以NEWS消息类型代替LOCATION消息类型,作为公众号无法发送地理位置消息的媒介

好吧,由于代码不是很多,关键是熟悉API之间的关系与SDK的调用,所以我暂且只发送测试结果图,有不懂得

请在本博留言,切勿QQ抖动,因为真的很忙,真不好意思!

好了,开始结合图片+技术+思路的剖析:

通过关键字和语音触发位置服务,提示需要先发送位置,这个前提需要远程数据库访问,我这里测试就把连接

池屏蔽掉了,直接缓存了位置

当点击右下角“+”号发送位置的时候,我在服务里启动了一个子线程对公众号粉丝列表进行了异步抓取,然后解

析到的数据存实体对象里,最后以封装到图文列表里,以图文形式供用户选择发送给某个人(包括有焦点的陌生人)

我就随便截取10个图文列表吧,切记图文的长度最长也就是10个,加上收列,那就是每个图文我们顶多只能展示9个好友的信息了,这就是开头我说到,为什么要结合慢查询来实现快速位置转发,因为图文从抓取、遍历解析、遍历包装、集体封装发送相当蛮,所以存储之后索引查询是最便捷的,暂且不说图文长度为10的局限性了,因为我个人感觉这是给用户体验最好的转发形式

我把位置消息的经纬度、头像地址、openid、用户昵称以String.format()函数的形势将他们并接,并且设置为图文的item.setUrl()方法里,作为需要处理和转发的地址,在这里说说我的思想,我把图文里的每一项都做了处理,及遍历的都是用户自己的信息如头像地址、昵称、openid拼接、及经纬度等,而URL需要的头像和昵称写死就可以了,我写的是一个通用函数,在服务里将fromuser(用户openid)、lng(经度)、lat(纬度)作为通用方法的参数(意思是谁点击的发送,在接收端都是发送端用户的昵称和头像及位置),在通用方法里用到了获取个人信息接口、关注者列表接口、地理位置接口、图文响应接口等主要的几个接口,之后当我们点击发送给某个人之后,我把需要处理的数据交给了一个映射的Servlet来处理,获取发送端拼接URL的5个参数,注意中文名字需要URL编码,否则有时候会出现乱码问题,这时候传过来的参数其实是遍历每一项的具体参数,比较关键的就是用户的openid了,因为我们发送给了陌生人,是需要通过公众号转发来实现的,所以你要发给谁,就是你点击了谁的图文之后通过URL传过去的openid参数,再调用公众号的客服消息接口发送至要发送的陌生人,这里暂时只考虑在48小时内有与公众平台有交互的用户,没有的可以调其它接口绕过API限制

发送账号 —— Engineer-Jsp(IOS端)、 接收测试账号——蛋蛋、男(Android端 Mi3) 

不同的系统,有时候会因为字符处理导致出现打不开导航的情况

我在IOS端用Engineer-Jsp这个账号给Android端小米3 蛋蛋、男测试号发了2次位置消息,所以也收到了对应的2条位置图文,当我用测试微信号点击这个图文时,并开始导航,我用的是高德地图SDK,如果是百度SDK的话,注意需要对经纬度进行转码,否则是无效的经纬度,个人建议使用高德的,可以WEB API、JS API等,我这里偷了一下懒,直接使用的是插件来的,直接往地址里传参就OK了,相当方便,看大家个人需要吧

点击图文如图,进入导航,点击路线开始进入线路检索,有需要的可以加入TTS进行语音播报服务

如上图出现了3种规划线路的方式供用户选择

发送成功后,重定向200.jsp页面界面:

位置发送失败,重定向404.jsp页面

这篇博客就这些内容,东西不难,关键是API接口之间的熟练应用、灵活调用、配合使用以及优化处理,有需要的小伙伴可以自己尝试写写,有问题可以第一时间在本博客留言,不要发Q,基本没时间回,因为白天要上班,有时候晚上也要看代码之类的,望见谅!谢谢观看~

时间: 2024-09-28 22:49:00

微信公众号接口深入剖析与应用——多接口集合应用与重用技术开发(图文导航)的相关文章

微信公众号开发API接口大全

在本文中,我们列出微信公众平台上可以使用的API接口以及举例如何在微信公众平台调用这些接口实现相应的功能. 接口调用说明: ① Appkey请使用的微信公众号,不要使用默认的trailuser ② 接口返回类型为文本.图文.及音乐三种基本消息 ③ 请在所有消息底部主动加上“技术支持 方倍工作室” ④ JSON验证网址 http://pro.jsonlint.com/ ⑤ 接口将不定期增加或更新,欢迎指出错误 ⑥ 如果有想要实现的,请在下面评论中列出并提供数据来源 ⑦ 提供的例子为天气.笑话.点歌

[微信公众号开发] NO.1 概述

概念 微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台. 服务号,订阅号 服务号具有更高级的接口权限,可以使用微信支付等高级接口,需要具有一定的开发能力,或者请相关人员进行开发. 订阅号通常是小团体,个人,自媒体用于推送资讯.技术分享.可以不需要开发,需要对公众号后台操作熟练. openid 每个用户针对每个公众号会产生一个安全的openid,开发者可以通过这个openid作为用户的唯一标识.通过它识别到用户的个人资料,用于消息回复,公众号相关业务开发. access_token a

微信公众号文章也可以添加音乐 不用因无法添加背景音乐代码而烦恼了

之前我们有聊过用代码添加图文消息背景音乐,微信可能考虑安全问题一段时间后代码不能用了,现在好了,微信公众号文章也可以添加音乐了,直接在微信公众平台后台像添加图片一样直接就可以插入音乐,未经认证的公众号也可以使用这一功能. 微信公众号文章添加音乐具体的操作流程是: 运营者可以在编辑图文消息时,在正文中插入音乐;选取音乐时,支持根据歌名.作者进行搜索,并且可以试听音乐;完成后即可. 也许文字不能表达的,音乐,可以表达. 一首歌,也许是你的信仰,你的态度,你的心情,你的记忆…… 为了让这种表达和分享更

微信公众号可通过现金红包接口发放微信支付现金红包(附开发教程)

农历新年将至,支付宝红包打了一仗,微信在朋友圈屏蔽了它的分享,但单防守还不行,进攻才是最好的防守.昨日,微信支付现金红包接口正式开放,只需开通微信支付,即可接入现金红包.微信公众号也可以发放现金红包了! 通过现金红包接口,公众号开发者可以策划相关运营活动,向用户发放微信支付现金红包,更好的达到品牌推广及回馈用户的效果. 1.商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景 2.领取到红包后,用户的资金直接进入微信零钱,避免繁复的领

微信公众号API测试——接口调用频率限制

接口频率限制[1] 公众号调用接口并不是无限制的.为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码: {"errcode":45009,"errmsg":"api freq out of limit"} 各接口调用频率限制如下: 接口 每日限额 获取access_token 2000 自定义菜单创建 1000 自定义菜单查询 10000 自定义菜

使用原app接口进行微信公众号开发

1.跨域问题 原来的app项目已经上线,然而接下来就有意思了,突然上头说要把app的发件功能复制到微信公众号里.那么问题来了,微信公众号的页面是前端和交互式h5大哥写的. 那么就将页面丢微信里,请求我原来app的接口不就好了? 然后问题是微信请求我原来的接口是能请求到数据啊,但是,浏览器出于安全根本就不会让你使用这些数据,这就产生了跨域的问题了. 解决办法一 我学长说让我在原接口中使用jsonp来支持跨域(额),这个就意味着每个接口还得改,改错了原来的app很有可能就崩了,想想都可怕 解决办法二

微信公众号接口添加菜单时错误(errcode":40017 invalid button type)

POST提交时总是报错: {"errcode":40017,"errmsg":"invalid button type"} 最后查出来是由于数据中有中文引起的 解决: data = {"button":[ {"name": u"会员服务", "sub_button":[ {"type":"click","name&qu

.net微信公众号开发——基础接口

本文讲述微信公众号开发中基础接口的使用,包括以下内容:    (1)获取许可令牌(AccessToken):    (2)获取微信服务器地址:    (3)上传.下载多媒体文件:    (4)创建.显示二维码:    (5)长链接转短链接.    开源项目地址:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount    本文的源代码地址:http://git.oschina.net/xrwang2/xrwang.weixin.Pub

微信公众号平台接口开发:基础支持,获取access_token

新建Asp.net MVC 4.0项目 WeChatSubscript是项目UI层 WeChatTools是封装操作访问公众号接口的一些方法类库 获取AccssToken 我们要的得到AccessToken,这是所有接口访问的基础,我们看看官方给出的接口调用文档 很简单明了,grant_type=client_credential,这是固定的不会变 appid与secret就是前面一章我叫大家记起来的那个认证口令数据. 下边我们来实现这个功能,新建WeCharBase.cs 1 public c