本文目录:
- 1、如何进行app消息推送(push)?
- 2、如何实现app消息推送
- 3、APP消息推送(APP Push)解决方案-服务端工作逻辑和实现
- 4、谁知道APP推送怎么做?
- 5、app推送是什么
如何进行app消息推送(push)?
消息推送(Push)就是通过服务器把内容主动发送到客户端的过程。运营人员通过自己的产品或第三方工具对用户移动设备进行主动消息推送。完成推送后,消息通知会展示在移动设备的锁定屏幕及通知栏上,用户点击通知即可去往相应页面。
现在流行的消息推送实现方式,主要为长链接方式实现。其原理是客户端主动和服务器建立TCP长链接,长链接建立之后,客户端定期向服务器发送心跳包用于保持链接,当有消息要发送的时候,服务器可以直接通过这个已经建立好的长链接,将消息发送到客户端。
个推作为国内移动推送领域的早期进入者,于2010年推出个推消息推送SDK产品,十余年来持续为移动开发者提供稳定、高效、智能的消息推送服务,成功服务了人民日报、新华社、CCTV、新浪微博等在内的数十万APP客户。个推消息推送,也是运用的长链接方式实现消息推送的,其长链接稳定性高、存活好,消息送达率高。开发者通过集成个推消息推送SDK,即可简单、快捷地实现Android和iOS平台的消息推送功能,有效提高产品活跃度、增加用户留存。
如果您对个推消息推送感兴趣,欢迎前往个推开发者中心免费注册体验。
消息推送交互逻辑
如何实现app消息推送
具体操作步骤如下:
1、首先打开手机设置,点击选择“应用管理”按钮。
2、然后在新的界面里点击选择一款实现消息推送的软件。
3、之后在新的界面里点击选择“通知管理”按钮。
4、然后在新的界面里点击选择“允许通知”右侧开关按钮将其开启即可。
APP消息推送(APP Push)解决方案-服务端工作逻辑和实现
App推送消息是我们常见的一种app消息提醒方式。
我们的实现需要第三方的支持,实现方式是后台通过接口将Push请求发送至第三方,第三方实现在App所在设备上的推送。
在与推送平台交互时,后台需要向第三方发送两部分信息,推送目标终端标示+推送内容
APP推送需要定位目标终端,也就是说要给那台设备进行推送,
简单的情况下,单设备推送,我们需要拿到一个终端ID的概念,用于定位目标设备,
注:不同渠道中使用的单设备ID方式也不尽相同,以下用TokenID来表示这个终端ID的概念。
而实际推送渠道中往往还有自定义的功能,比如通过打标签的方式将TokenID进行划分,达到批量差异化的效果。
即指通过API接口参数的定义终端上收到的Push消息的内容和格式。
其中IOS的推送消息在展示上区别于安卓的一点是没有title,title的部分只能是默认的APP名称,而安卓的部分虽然默认值也是APP名称,但是也支持自定义title。
通过上述的处理逻辑可得知,后端首先需要登记客户端的TokenId,然后保持TokenID的有效性更新,然后在需要发送APP推送时拿到用户的有效TokenID,
然后使用TokenID和已有的内容信息通过API与三方Push服务交互,完成推送。
即后端的实现分为两部分:
1、TokenID的登记
2、App Push API的调用
注:以下示例中有两个元素为本项目的特殊情况:
其中product_id是因为当前项目中客户端同时有多个版本,不同版本需要推送独立处理,但在同一张表内统一记登记;
而login_id跟member_id同时存在是因为当前系统中存在共享账户的情况,一般账号账户一对一的情况login_id和member_id是绑定的,不需要同时重复登记。
pre
/ ============================================================== /
/* Table: sys_app_push_token */
/ ============================================================== /
create table sys_app_push_token
(
record_id int(11) not null auto_increment,
login_id int(11),
member_id int(11),
push_token varchar(200),
visit_device int(4) comment ‘3:Android;4:IOS’,
product_id varchar(20) default ‘0’ comment ”,
push_channel int(4) default 1 comment ‘1:IOS信鸽,2:华为,3:小米,4:极光’,
nstatus int(4) not null default 0 comment ‘状态:0:申请中;1:生效;2:失效;3:删除;4:历史记录’,
create_userid int(11) not null default 0,
create_time varchar(20) character set utf8 not null default “”,
edit_userid int(11) not null default 0,
edit_time varchar(20) character set utf8 not null default “”,
this_remark text,
description text,
create_ordernum varchar(30) character set utf8 comment ‘记录创建时的流水号’,
last_ordernum varchar(30) character set utf8 comment ‘记录最后一次编辑时的流水号’,
primary key (record_id)
)
ENGINE=InnoDB
DEFAULT CHARACTERSET=utf8
COLLATE=utf8_general_ci
auto_increment=10000
row_format=COMPACT;
alter table sys_app_push_token comment ‘app推送token表’;
/ ============================================================== /
/* Index: Index_1 */
/ ============================================================== /
create index Index_1 on sys_app_push_token
(
record_id
);
/pre
注:其中,推送渠道绝对在做Push时使用哪家API,参数的判定交由客户端进行处理,后端直接登记判定结果。
pre
@Transactional(readOnly=false)
publicbooleanuploadMemberPushTokenEnt(TrainVansContext trainVansContext) {
try{
//check already data
trainVansContext.getTrainVansRequest().put(“login_id”, TrainVansUtils.getMV(trainVansContext.getTrainVansRequest(),”login_login_id”));
// get All memberRelation
trainVansContext.getTrainVansRequest().put(“relation_type”, TrainVansUtils.getMV(trainVansContext.getTrainVansRequest(),”visit_role”));
List memberRelationList = SpringContextHandler.getBean(MemberService.class).getRelateMemberListByLoginId(trainVansContext);
for(Map memberRelateMap : memberRelationList){
//
trainVansContext.getTrainVansRequest().put(“member_id”, TrainVansUtils.getMV(memberRelateMap,”member_id”));
Map tokenMap = SpringContextHandler.getBean(AppPushService.class).getPushTokenMapByLoginMap(trainVansContext.getTrainVansRequest());
//disable already data
if(tokenMap !=null){
if(!TrainVansUtils.getMV(tokenMap,”push_token”).equals(TrainVansUtils.getMV(trainVansContext.getTrainVansRequest(),”push_token”))){
//
trainVansContext.getTrainVansRequest().put(“record_id”, TrainVansUtils.getMV(tokenMap,”record_id”));
if(!SpringContextHandler.getBean(AppPushService.class).updateDiabledThePushToken(trainVansContext)){
thrownewRuntimeException(“TranVans_Operate_Exception”);
}
//insert new data
if(!SpringContextHandler.getBean(AppPushService.class).insertPushTokenRecord(trainVansContext)){
thrownewRuntimeException(“TranVans_Operate_Exception”);
}
}
}else{
//insert new data
if(!SpringContextHandler.getBean(AppPushService.class).insertPushTokenRecord(trainVansContext)){
thrownewRuntimeException(“TranVans_Operate_Exception”);
}
}
}
returntrue;
}catch(Exception e) {
TrainVansUtils.setRetInfo(trainVansContext,”10005001″,”Register TokenID Error”);
e.printStackTrace();
thrownewRuntimeException(“TranVans_Operate_Exception”);
}
}
/pre
注:方法外部有一个关于对应本账号的对账户列表的遍历,遍历中的处理部分为TokenID的登记处理操作。
推送渠道:
APP推送不仅仅要求在APP打开状态时或者后台运行时进行消息推送,更多的场景是在移动终端关闭APP的场景下进行消息推送,
渠道的优劣无非在于两个维度,送达率和送达效率。
其中安卓推送的渠道较为杂乱,其中华为和小米提供的PUSH服务对于自平台的移动终端支持的较为完善,而没有厂商提供PUSH服务的终端只能通过
第三方服务来进行对接。
对于现有的这些渠道进行如下总结:
1、IOS:信鸽推送,这个推送在我门公司中经历了三个项目,推送效果稳定。API接入也方便,是IOS端的不二选择。
2、Android-华为:华为自平台。
3、Android-小米:小米自平台。
4、Android-其他:目前使用的是“极光推送”。在理想状态下送达率和送达效率表现很好,但并不如以上三家渠道稳定。
在进行调用时可根据之前定义的push_channel分发给各自的渠道,各渠道的具体对接请各自查看官网,API都很完善。
谁知道APP推送怎么做?
消息推送是一把双刃剑,运用好消息推送可以有效帮助APP提升活跃、留存等重要指标。如果运用不当,则有可能引起用户的反感,导致用户流失。要做好消息推送,APP可以从以下四个方向着手:
1.推送时间
首先尽量选择用户空闲时间推送。推送的目的是引导用户点击激活APP,只有当用户有时间去查看你的推送内容的时候,才有可能去点击。一般推送的时间可以选择在早上上班途中、午饭后的午休时间、傍晚下班途中、晚饭后睡觉前。其次,不同类型的APP用户使用时间段是不同的,运营可根据APP类型定制推送时间。比如我们发现社交类的APP用户在早上9-10点以及晚上10点之后会比较活跃;电商类APP用户活跃时间在中午12点和晚上10点会比较集中;资讯类APP用户的用户活跃一般集中在早上7点至10点;直播类APP用户在晚上10点至12点活跃度最高,选择在自身用户活跃较高的时间段内推送,可以起到事半功倍的效果。另外,还可以通过用户画像辅助精细化推送时间。
2.控制推送频率
一是根据APP类型来决定推送频率,比如工具类APP用户一天只会打开1~2次,推送次数控制在2次以内最佳。社交、直播和资讯类的APP每天被打开的频次较多,如果一天只推一条消息,可能会导致用户流失。因此控制好推送频率对提高用户粘性来说是很关键的。二是控制前后两次推送的时间间隔:如果你每天需要推多条消息,应注意推送的时间间隔,时间间隔太短会造成打扰,非时效性的消息,一般前后两条消息推送间隔控制在两个小时以上。
3.推送文案
1)用户口吻的推送内容:推送的文案是影响点击转化的最直接因素,优质的文案可以很大程度提升推送的转化率。什么是用户口吻的推送内容?举个例子,一款社交类型的APP,当用户长期不使用时,可能会给用户推送这样一条文案:“呀!原来你也在这里,我们来聊聊吧”用户点进去之后会发现这条消息其实只是某个人关注了你,系统自动生成的提示语而已。但是在收到此类消息的情况下,用户大概率会去点击,这抓住了人好奇的天性。
2)运用热门关键词:可以在内容中植入带有名人、数字、地域、热门事件等关键词,吸引用户关注,激发他们的点击欲。比如“月入5k的人都去哪里玩?”和“穷游去哪里?”一般来说,第一条的点击率会远高于第二条。
3)独特的提示音:一般APP的提示音都是系统默认的,随着推送的广泛运用,很多用户即使知道有推送过来了也不会去关注。对此,APP在开发过程中就可以去修改推送提示音。如果你的推送提示音是很有辨识度的,用户只要听到声音就知道是你的推送,那么TA去关注推送的概率就会提升。
4)富媒体推送:如果你的推送内容中适当运用图片、视频、音频等富媒体内容,也会让文案增色不少。
4.用户分组
用户分组的原则是将合适的消息推给合适的人群,怎样判断什么是合适的人群呢?①可以通过自身APP运营过程中产生的数据,比如电商类的APP,肯定有用户购物喜好的数据,A人群喜欢运动装,那么有运动装的促销就可以推给A人群。②通过跟个推消息推送这样的第三方合作,实现精细化用户分组。个推消息推送提供数千种用户画像标签,包含用户属性、兴趣偏好等维度标签,针对新注册、沉默、活跃等目标用户进行分层精细化推送。
如果您对个推消息推送感兴趣,欢迎前往个推开发者中心免费注册体验。
个推消息推送功能
app推送是什么
app推送是移动端的APP进行消息的推送,用户可以选择接受推送信息和不接受。对于一款APP来说,消息推送是企业觉得非常好用、成本最低的一种打广告的方式,很多APP都会用到消息推送。
然而关于APP推送可以选择第三方工具来实现,例如深圳极光,极光推送私有云产品的优势如下:
1、数据安全:私有云部署私有环境,客户数据在客户自己的内网,数据安全合规。
2、性能强大:私有云目前只服务本身自己,性能方面会超出公有云共用平台。
3、参数调优:私有云环境允许用户根据自己的需求随意调配设置参数,直到性能最优。
4、弹性扩容:私有云异步架构,多点备份部署,通过弹性横向扩容节点来增加每一个模块处理能力,轻松应对用户增长,可随数据变化快速扩容。
5、专业服务:专属的私有云团队支持,包含咨询、测试、技术支持等相关服务。
6、源码授权:私有云可授权极光的核心源代码给予用户使用。
极光推送私有云基于极光推送海量用户的公有云版本演进而来,相对于推送公有云增加了几项特色功能:支持 Web、PC 平台推送,支持消息盒子,厂商失败可转极光补发。
本文来源:https://www.yuntue.com/post/89015.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏