我是一个特别记性不好的人,所以希望可以写下点东西,把一些经验都写下来,怕以后忘记。
在过去一个月中,我们与微信死磕在微信的框架内开发出了抢单模式的付费问答APP,有完整的抢单功能和消息推送功能。
这个H5 APP的难点在于:
无法像原生APP一样弹窗直接推送,只能通过微信服务号的模板消息间接推送。
使用H5技术构建的APP,消息实时推送不如原生APP方便。
抢单功能有发布订单、相应订单、付款等一系列的状态变化需要推送消息,模式复杂。
今天就来给大家介绍一下我们是如何解决这些问题的。
一、三级消息推送系统
我们综合了微信消息模板推送和web socket推送的技术,设计了包括了微信推送、头部消息提醒、弹窗提醒三种消息推送模式,可以满足这个APP内各种的消息推送需求。
下图是我们所设计的APP消息推送场景与其使用的对应推送方式:
(当时给开发看这张表的时候,开发大神一天没有再理我。把公众号APP当原生APP来做估计也只有我们会这么做了。)
大多数的状态更改都会使用微信消息模板推送,因为微信消息模板推送会以会话的形式呈现在用户的微信界面,离用户最近,被点开的概率最大。我们设计微信消息模板推送的时候主要参考了分答的模式,对状态更改、金钱结算、新问题都做了推送,希望可以提升公众号APP在微信的打开率。
除此以外,在APP内部,大多数的消息都会以头部的方式来进行推送,这样的推送模式会展示信息,但是不会影响到用户,作为一个强调实时性的APP,这样的信息展现模式可以在纷繁的信息和打扰用户两者间做到平衡。
最后,只有最重要、最有时效性的状态更改才会有弹窗,用来提示用户迅速答题或者迅速查看答案。同时,这里采用的是“确认、取消”式的窗口,让用户可以选择跳转去查看内容,或者取消以完成正在进行的操作。
另外我们对“新订单”提醒做了一定设计,我们抄袭了即刻APP对推送消息设置的功能,在抢单者界面增加了一个开关。如果打开了开关,用户发布的新订单会以微信消息模板的形式第一时间推送给接单者。
用户点击开关开启微信提醒,系统默认为关闭状态
第一次迭代时我们因为资源有限,仅作了部分的微信模板提醒,后来发现效果不佳,所以还是背着被客户投诉骚扰的风险,把所有的消息提醒模板都加了上去,希望不会封号。
这里要注意的是,如果微信消息模板接口调用过多是会被封号的,第一次7天,第二次30天,第三次永久。前期用户量小可能问题不大,如果后期用户量增多了,是可能会达到限额的。如果我们这样的调用方式被封了,我们会及时告知你们(目前还没有封)。当然如果读者使用了这种方法并且用户量比较多率先被封了,也请告诉我。我请你喝咖啡。
大家可以看到微信消息模板在这个APP中扮演了重要的角色,在过去的两个月中我们和微信消息模板斗智斗勇,摸清了微信消息模板的套路,接下来就和大家分享一些心得。
首先,要使用微信消息模板,一定要注册微信公众平台服务号,并开启相关功能。流程如下:
开通消息模板的准备工作
所以,要开通整个微信消息推送模板的功能,可能需要将近2-3周的时间周期,这是在规划项目的时候需要考虑的。
添加模板的界面,可以从模板库直接添加模板进行使用。选择正确的行业可以找到大多数的通用模板。
如果你不幸沦落到所有模板都没有办法满足需求,请你点开帮助我们“完善模板库”,仔细阅读模板申请规则以后即可开始申请新的模板。
红色框是申请添加模板的入口
作为在这个申请模板上栽过跟头,险些失去老板信任的产品经理,我可以与大家分享一些我的人生经验。
首先,仔细阅读模板申请规则是至关重要的,微信为了严格控制消息推送,对新的模板有严格的限制,微信公众账号不能主动推送消息。所有推送的消息都必须是被动消息,如用户完成订单的提醒,用户支付成功的提醒,等等。所以想通过新建微信模板来推送广告是行不通的。
其次,行业一定要选对。同样的模板,在互联网这个行业下可以审核通过,在金融服务这个行业下可能就过不了。
再次,申请新的模板每个月只有3次机会,这就是说如果你一拍脑袋把三个指标都申请掉了,而且都被拒掉了,那你就只有眼巴巴的等下个月再来申请了,当然到彼时你的项目可能就已经延期了,你也就将失去你老板的信任。
所以比较理智的做法是先试一条,感受一下审核的尺度,给自己留一点余地。当然也可以怂恿与你同一个行业的微信服务号做炮灰,用他们的指标来申请模板,主要行业一样,模板都是共用的。
最后,申请模板的样例一定要好好填,填的尽量正规保守,解释清楚这个模板的使用场景。对于通用性不强的模板,以及广告意味太重的模板,微信团队是会拒绝的。
模板样例
审核周期在7-15天左右,没有可接触到的加急方法,15天内随时有可能被拒,所以随时做好重新申请的准备。我们在实际操作的过程中选错了行业,所以申请了两回都没有成功。在项目即将延期,老板的刀已经架在脖子上的时候,我放手一搏修改了公众账号的行业,找到了所有需要用的模板,当时那种满溢而出的幸福感是一般人所无法体会的。
如果从项目管理的角度来说,项目的外部风险会比项目的内部风险更难把控,如果你的公众号APP模板比较罕见需要自行申请,则至少准备20天的申请时间。当然,更加稳妥的方式是两个行业至少留一个名额选择互联网行业,互联网行业下的模板比较多,万一申请不通过还可以先用互联网行业的模板凑数,保证基本功能的实现。
三、APP内推送实现方法
因为APP是架构在微信内的H5页面上的,所以如果要实现实时的消息推送,就需要架设socket,我特地查了具体的定义,有点复杂,总的来说就是架设了socket就能实现实时推送吧。
初期我们仅在几个页面上搭建了socket,双方停留在页面上就可以收到消息推送。但是后来我们发现如果两者都离开了页面,则消息互通就会停止,用户无法收到新的状态推送。在这样的情况下,我们更改了策略,在公共页面上搭建了socket。这样只要用户在APP内就可以收到头部消息和弹窗推送。
这一块技术层面的内容要远远大于产品层面。我获得的心得是要深入的与开发沟通了解技术的细节与局限,这样在产品功能设计的时候可以适时作出取舍,非技术人员的想法有的时候也会给技术人员提供一些新的思路,解决项目的困境。
彩蛋时间
微信公众账号讲道理是不能主动推送消息的,但实际上只要有现存的模板,通过一些变通的方法,还是可以主动广告推送的。
比如,我从来都没有领过优惠券,但是我总能收到优惠券过期提醒。
比如,我从来没有订阅过,但是总能收到信活动通知。而且我还懒得退订。
好了,这就是我在做这次项目的过程中所学到的关于公众号APP消息推送的的所有内容了。希望能够给大家一些启发,也请大家多提意见。