文档章节

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

闪电
 闪电
发布于 2015/05/18 22:30
字数 2018
阅读 101
收藏 0

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

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

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

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

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

可能有人就会问,在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,基本没时间回,因为白天要上班,有时候晚上也要看代码之类的,望见谅!谢谢观看~

本文转载自:http://blog.csdn.net/jspping/article/details/41525361

闪电
粉丝 74
博文 392
码字总数 6789
作品 0
海淀
技术主管
私信 提问
微信公众号开发C#系列-8、自定义菜单及菜单响应事件的处理

微信公众号开发C#系列-8、自定义菜单及菜单响应事件的处理 1、概述 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。菜单分为默认菜单与个性化菜单。个性化菜单接口是...

NET快速开发框架
04/16
0
0
C#开发微信门户及应用(46)-基于Bootstrap的微信门户应用管理系统功能介绍

在前面介绍很多的微信框架,基本上都采用EasyUI的界面来搭建的微信框架,如随笔《C#开发微信门户及应用(8)-微信门户应用管理系统功能介绍》介绍的一样,不过随着微信的H5应用越来越多,因此转...

walb呀
2017/12/04
0
0
JeeWx 捷微 3.1 小程序版本发布,支持微信公众号,微信企业号,支付窗

支持小程序,JeeWx捷微3.1小程序版本发布^_^ JeeWx捷微V3.1——多触点小程序版本管理平台(支持微信公众号,微信企业号,支付窗) JeeWx捷微V3.1.0版本紧跟微信小程序更新,在原有多触点版本...

Jeecg
2018/03/19
1K
8
C#开发微信门户及应用(26)-公众号微信素材管理

微信公众号最新修改了素材的管理模式,提供了两类素材的管理:临时素材和永久素材的管理,原先的素材管理就是临时素材管理,永久素材可以永久保留在微信服务器上,微信素材可以在上传后,进行...

walb呀
2017/12/04
0
0
微信公众号开发C#系列-9、多公众号集中管理

1、概述 通过前面8篇关于微信开发相关文章的学习,我们已经对微信常用开发有了一个比较深入的了解。前面的文章都是基于某一特定公众号的,在现实业务中同一单位个体运营着不至一个公众号,此时...

NET快速开发框架
04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

二进制位操作

单片机,或者一些模块的设置操作,都是由一个字节数据来完成,每位各有定义。就需进行位操作来组合需要的数字结果。 以JavaScript为例,编写位操作。 我们期望得到这样一个二进制数:0101101...

format
30分钟前
3
0
聊聊中国的通信行业:从“七国八制”到“中华”脊梁

本期文章和大家一起来聊一聊我曾经从事过的通信行业吧。最近各方面信息的泛滥,包括和华为的同学聊天,自己确实也感慨颇多。想想我自己本科主修通信工程,研究生再修信息与通信工程,从本科开...

CodeSheep
今天
6
0
MDK:ARM M451M:exceed the range of code meory, continue to erase or not?

问题: 代码空间超限 几天前就遇到:exceed the range of code meory, continue to erase or not? 如下所示: 解决过程 开始以为中MDK软件的128KB限制,如是就不能生成HEX文件,应该链接时有提...

SamXIAO
今天
1
1
OSChina 周六乱弹 —— 因违反《中华人民共和国治安管理处罚法》第四十四条之规定

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :#今日歌曲推荐# 惊艳分享谷微的单曲《安守本份》(@网易云音乐) 《安守本份》- 谷微 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
574
12
Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部