前几天有几个朋友叫我出一个关于公众号发送位置导航的教程,迫于时间压力才今天开始写写,我先说说思想
吧,首先我们知道微信发送位置可以朋友与朋友之间直接发送,但是在一个公司或者企业下,一个公众号下面可
能有很多个关注用户,那就涉及到了给陌生人发送位置的情况,我们知道微信给陌生人是发送不了信息的,需要
通过验证才行,那就涉及到了本篇要讲的第一个避开验证的方法
方法一:通过公众号转发位置给非好友的陌生人,绕过好友验证,点击导航
可能有人就会问,在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,基本没时间回,因为白天要上班,有时候晚上也要看代码之类的,望见谅!谢谢观看~