如何进行app消息推送(push)?

2024-05-13

1. 如何进行app消息推送(push)?

消息推送(Push)就是通过服务器把内容主动发送到客户端的过程。运营人员通过自己的产品或第三方工具对用户移动设备进行主动消息推送。完成推送后,消息通知会展示在移动设备的锁定屏幕及通知栏上,用户点击通知即可去往相应页面。现在流行的消息推送实现方式,主要为长链接方式实现。其原理是客户端主动和服务器建立TCP长链接,长链接建立之后,客户端定期向服务器发送心跳包用于保持链接,当有消息要发送的时候,服务器可以直接通过这个已经建立好的长链接,将消息发送到客户端。个推作为国内移动推送领域的早期进入者,于2010年推出个推消息推送SDK产品,十余年来持续为移动开发者提供稳定、高效、智能的消息推送服务,成功服务了人民日报、新华社、CCTV、新浪微博等在内的数十万APP客户。个推消息推送,也是运用的长链接方式实现消息推送的,其长链接稳定性高、存活好,消息送达率高。开发者通过集成个推消息推送SDK,即可简单、快捷地实现Android和iOS平台的消息推送功能,有效提高产品活跃度、增加用户留存。如果您对个推消息推送感兴趣,欢迎前往个推开发者中心免费注册体验。    

消息推送交互逻辑

如何进行app消息推送(push)?

2. 如何进行app消息推送(push)?

进行app消息推送(push)的主要有两种方式。一是自己研发,自己研发的话灵活性更高,但是比较耗时耗资源,成本也较高。二是,直接采购第三方专业消息推送供应商,快速、高效实现消息推送功能。目前大多数APP都采用与第三方合作的形式来进行消息推送,比如使用个推消息推送服务。开发者通过集成个推消息推送SDK,即可简单、快捷地实现Android和iOS平台的消息推送功能,有效提高产品活跃度、增加用户留存。
个推作为国内移动推送领域的早期进入者,于2010年推出个推消息推送SDK产品,十余年来持续为移动开发者提供稳定、高效、智能的消息推送服务,成功服务了人民日报、新华社、CCTV、新浪微博等在内的数十万APP客户。个推消息推送不仅能有效节省电量与流量,给终端用户稳定流畅的使用体验;同时,在高并发、大流量的情况下,能有力保障消息的稳定到达。此外,个推消息推送还提供多通道一键下发、智能标签分组、富媒体展示样式、全链路数据分析等能力,可有效帮助APP提升消息到达率和点击率。如果您对个推消息推送感兴趣,欢迎前往个推开发者中心免费注册体验。    

消息推送交互逻辑

3. 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是绑定的,不需要同时重复登记。
      / ============================================================== /
   /* 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
   );   
                                           注:其中,推送渠道绝对在做Push时使用哪家API,参数的判定交由客户端进行处理,后端直接登记判定结果。
      @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");
   }
   }      注:方法外部有一个关于对应本账号的对账户列表的遍历,遍历中的处理部分为TokenID的登记处理操作。
   推送渠道:
   APP推送不仅仅要求在APP打开状态时或者后台运行时进行消息推送,更多的场景是在移动终端关闭APP的场景下进行消息推送,
   渠道的优劣无非在于两个维度,送达率和送达效率。
   其中安卓推送的渠道较为杂乱,其中华为和小米提供的PUSH服务对于自平台的移动终端支持的较为完善,而没有厂商提供PUSH服务的终端只能通过
   第三方服务来进行对接。
   对于现有的这些渠道进行如下总结:
   1、IOS:信鸽推送,这个推送在我门公司中经历了三个项目,推送效果稳定。API接入也方便,是IOS端的不二选择。
   2、Android-华为:华为自平台。
   3、Android-小米:小米自平台。
   4、Android-其他:目前使用的是“极光推送”。在理想状态下送达率和送达效率表现很好,但并不如以上三家渠道稳定。
   在进行调用时可根据之前定义的push_channel分发给各自的渠道,各渠道的具体对接请各自查看官网,API都很完善。

APP消息推送(APP Push)解决方案-服务端工作逻辑和实现

4. APP推广push是什么形式?

移动端。
Push推送,指服务器定向将信息实时送达至用户的手机界面,通过信息推送服务,主动、及时的与用户发起交互,向用户推送提醒、动态等信息。
Push可根据特定指向用户群体、区域等方式推送,通过实时的推送保持与用户的交互沟通,提升用户活跃度和留存率,塑造用户忠诚度。

扩展资料:推广渠道
1、发布APP应用。
在各大手机厂商市场、各大网络运营商、独立商店、第三方应用商店、PC下载站、手机WAP站等等进行大范围的覆盖,发布的平台越大推广的效果越好。同时在用户量大、要求高的平台进行首发活动。
2、自媒体推广
主流的自媒体平台,不仅能提升APP品牌,还能带来不少下载量。当然要坚持做原创内容,并保持每天更新,抓住热点事件进行品牌营销。
3、线下推广
通过付费给手机厂商、运营商做手机预装,出厂就存在,用户转化率高,但是这种方式费用成本较高,预装资格较难获取。也可以水货刷机,或者与行货店面进行合作,用户质量高,粘度高,但同样成本太高。

5. APP推广push是什么形式?

移动端。
Push推送,指服务器定向将信息实时送达至用户的手机界面,通过信息推送服务,主动、及时的与用户发起交互,向用户推送提醒、动态等信息。
Push可根据特定指向用户群体、区域等方式推送,通过实时的推送保持与用户的交互沟通,提升用户活跃度和留存率,塑造用户忠诚度。

扩展资料:推广渠道
1、发布APP应用。
在各大手机厂商市场、各大网络运营商、独立商店、第三方应用商店、PC下载站、手机WAP站等等进行大范围的覆盖,发布的平台越大推广的效果越好。同时在用户量大、要求高的平台进行首发活动。
2、自媒体推广
主流的自媒体平台,不仅能提升APP品牌,还能带来不少下载量。当然要坚持做原创内容,并保持每天更新,抓住热点事件进行品牌营销。
3、线下推广
通过付费给手机厂商、运营商做手机预装,出厂就存在,用户转化率高,但是这种方式费用成本较高,预装资格较难获取。也可以水货刷机,或者与行货店面进行合作,用户质量高,粘度高,但同样成本太高。

APP推广push是什么形式?

6. 【转】一文带你彻底了解APP PUSH推送机制

APP PUSH的定义为在手机终端锁屏状态下通知栏展示或在操作前台顶端弹出的消息通知,点击后可唤起对应的APP,并在APP内跳转到指定页面。
  
 push消息是通知用户,引导用户进行参与活动、购买产品的重要手段,而且PUSH消息也可以引导用户查看消息,唤起APP提高日活,是一块重要的流量。
  
 从应用的功能来划分,主要分为三类应用,第一类是IM类APP,如微信、QQ等;第二类是新闻资讯类,如华尔街见闻等;其余暂归为为工具类,比如支付宝、美团等。
  
 每种类型APP对PUSH的需求也不同,IM类APP追求实时、稳定的触达,此类APP一般通过自己的长连接进行消息推送,保证用户在收到消息的时候能够实时地接收消息消息。另外,一些安卓厂商也会给予头部APP的进程一定保护,对相关的进程纳入白名单,在清理进程的时候予以忽略。
  
 新闻资讯类的APP与工具类APP的PUSH推送机制基本一致,仅在频率控制上有差异,新闻资讯类由于新闻资讯较多,需要将突发新闻及时推送给用户。
  
 由于目前工具类的APP占大多数,本文将主要讲解工具类APP的常见推送机制。
                                          
 PUSH消息在消息系统创建好后进入发送阶段,服务端需要根据用户终端信息进行路由,如果是IOS系统,那么会调用苹果自身的推送通知服务(APNs),如果用户的手机是安卓系统,那么根据不同的厂商去调用不同的厂商SDK。
  
 对于不同的系统版本,支持的消息展示形式也是不同,比如IOS10之后,当APP在前台时,是否通知栏展示;此样式可以根据产品需求来选择,有服务端传输相应通知方式的值即可。如果用户的手机非五大厂商内的手机,可以通过自己搭建的长连接或者使用第三方服务进行推送。
  
 如果不是自己直接对接厂商通道,那么内部的服务端可能无需做过多较为复杂繁琐的开发工作,通过接入第三方消息推送平台来实现消息的推送,比如信鸽、个推等。多数的通道会将消息是否成功推送到客户端SDK的回执数据反馈给发送方,需要提供回调地址。
  
      4.1 推送通道
  
 通道类型一般分为三类:厂商通道、第三方推送服务平台、长连接。
  
 厂商通道是手机终端厂商推出的推送服务,通过接入厂商SDK,内部服务端可以将消息推送到手机系统的服务端,再下发至客户端内部的厂商SDK,由操作系统进行相应展示,点击后唤起相应APP,这样可以避免APP进程被杀死后消息无法触达用户,因此触达率较高。
  
 第三方推送平台是推送服务公司自己搭建相关的消息服务。并且各个APP使用了同一个平台的推送服务时,客户端都是集成同一个第三方推送平台的SDK,因此形成了一个推送联盟,当联盟中的其中一个APP的消息进程没有被杀死的时候,其他的APP也可以利用进行通知用户,形成了相互唤起,提高触达率。
  
 经过一些场景的测试,相互唤起的成功率并不是很高,需谨慎结合自身场景评估。为了提高触达率,第三方推送平台也会集成各大厂商的SDK进行推送。
  
 长连接就是建立手机与服务端的一条链路进行消息数据推送,通过长连接也可以进行APP状态监控,但完全由长连接推送且保证触达的稳定,需要投入的研发资源较多,且需尽量避免自己的长连接进程不要被操作系统杀死。
  
          4.2 优劣势对比
                                          
 APP push功能的搭建需要依据产品自身的情况和公司可投入的资源成本为主,在不同的阶段应该追逐不同的目标。
  
      5.1 推送账号
  
 推送时客户端的PUSH SDK均会根据用户的设备号生成一个对应关系的TOKEN。
  
 在SDK内部,如果使用的是第三方推送服务,则去第三方的SDK注册;如果是厂商,则去商城SDK注册;如果使用自己长连接,则去自己的SDK进行注册,作为后续推送的标识用户的唯一ID。
  
     5.2 消息路由
  
 消息路主要见上述推送流程的讲解,此处主要讲解根据不同的业务场景,可能会定向推送给不同版本APP的用户。因此服务端在通道能力路由的时候,不仅需要能够区分通道,还要进一步能够针对用户的手机终端进行更加精细化的差异推送。
  
 此外,消息通道并一定是100%稳定,如果下游通道出现问题,服务端需能够将由于通道问题导致的消息路由到备用通道去发送,以保证业务稳定触达。
  
      5.3 全量推送
  
 一般来说,对于公司内部运营或公司的相关数据均是以产品的customer id为准,用户数据系统对接消息系统时也多为customer id,因此需建立customer id与推送TOKEN的关系,便于运营针对用户进行推送。但对于一些场景会需要针对未登录的用户也进行推送,即全量推送;比如突发重大新闻资讯、大促等活动,所以运营系统需要提供全量推送功能,针对所有TOKEN进行推送。
  
 上报数据包括触达 点击 关闭 退出 注册等数据。
  
 对于所有方式的触达消息,都离不开触达与点击,触达的数据通过厂商的需要厂商回调上报,点击数据可以由SDK上报服务端。
  
 对于push的关闭,也是需要进行考量的,来评估push是否过度发送,打扰到了用户。关闭数据有两部分,一部分为app内部的关闭,sdk直接上报给服务端即可;另一部分为用户在手机操作系统上关闭了对应app的push,需要APP在前台时,sdk调用手机终端相关方法获取该用户是否关闭了系统通知,然后上报至服务端。
  
 注册数据即用户首次启动APP时,去相关sdk注册token。
  
 用户退出账号时,sdk需要上报服务端,解除token与customer id的绑定关系。
  
     7.1 强提醒 不留痕
  
 push由于是app自己的通知渠道,是运营的一个重要工具。
  
 如果用户未关闭PUSH通知的话,push可以从通知栏弹出进行消息显示,具有一定的强提醒性,但PUSH点击跳转后便消失,没有痕迹,因此针对于重点的通知消息,需要在APP内设置消息中心,在PUSH的同时留下通知记录。
  
     7.2 消息样式
  
 对于各家PUSH来说,一些营销消息会加入EMOJI表情来吸引用户点击,这也是一个吸引用户点击的一个小方法,只要服务支持传输约定好的EMOJI码就可以了。
  
 目前安卓系统也支持富媒体推送,推送包含图片、语音等形式,对于资讯类的APP可以增加缩略图,吸引用户点击。目前来看,语音场景还有点挖掘。
  
     7.3 IOS和安卓
  
 由于APP是基于手机操作系统,因此对于IOS和安卓的推送的流程及功能基本相同,只不过细节和方法上略有不同,且国内安卓产商都在安卓系统上进行了一定改造,导致国内安卓厂商标准各不相同,需要开发同学仔细对接各个厂商。
  
 触达率的提升需要从消息创建到实际通知到用户的建立完整流程,细化每一个交互环节,发现影响触达率的主要瓶颈,并针对性地进行解决或优化方案。
  
 除此之外,未采用厂商通道的消息也可以采用自己的长连接和其他推送平台服务同时多条推送,在客户端的SDK内增加针对同一罅隙流水号的去重,这样可以也可以提高一部分消息的触达率。

7. 如何用好消息推送(push)做APP运营

  消息推送目标:成为用户的贴身助手

  消息推送原则:在正确的时间推送正确的内容

  产品运营人员如何做好APP消息推送?

  1.细分消息推送的对象,不随意push全量

  首先要建立用户数据库,对用户特征、地域、偏好进行细化,这部分可以通过账号体系引导用户主动选择,也可以通过对用户行为的大数据分析建立用户模型。单针对北京的福利活动,就只推送给北京地区的用户,无厘头地推送给广东的用户不就成了拉仇恨嘛。

  2.尊重用户,把主动权还给用户。

  尊重用户第一步就是把选择的主动权还给用户,消息推送的前提是用户充分信任APP才给了授权,就像邮件订阅一样,用户有取消订阅的权利,否则就会屏蔽你的邮件来源。在上面的消息推送时用户心理反应模型中,用户遇到反感的消息时,会首先想到关闭消息,甚至关闭消息推送的授权,这个时候要尊重用户的选择权,否则当用户找不到关闭的入口,就只能将APP卸载掉,直接导致用户流失。

  3.从用户接受信息的场景反推消息推送的时间

  现在的APP推送机制都由服务端进行控制,在推送时间上需要正确得把握。首先千万别在大半夜push消息,除非是预报地震,影响用户休息等对用户形成打扰都是不友好的行为。二是从用户使用场景出发,选择合适的推送时间。以天气类APP为例,通常用户会在早上出门前想知道一整天的天气情况、温度变化,因此天气类APP最好的推送时机就是早上。再举一个浏览器的例子,每到年前各大浏览器厂商都开始做抢票,必然涉及到给用户推送抢票日历,那么抢票日历的推送时间放在早上合适吗?仔细考虑一下这个使用场景,12306的放票时间从早上8点开始,等到抢票当天才提示用户需要抢票,会不会给用户一种突然措手不及的感觉?用户需要提前准备抢票设备(手机APP、网速较快的电脑、可信赖的浏览器等),所以选择在前一天晚上推送是不是更为合适?

  4.推送用户感兴趣的内容

  永远只推送用户感兴趣,且选择与用户心理定位相符合的内容。微信的订阅模式值得被参考,为什么每天收到那么多微信消息提示但用户不会反感?因为这些都是用户主动订阅的内容,订阅就代表着感兴趣,感兴趣就会点开看,就是这样的逻辑。为什么说要选择与用户心理定位相符合的内容,如果一个音乐APP整天推送新闻,用户会觉得这是挂羊头卖狗肉,这种与产品无关的消息推送短期内会带来流量上的利益,但长期来讲破坏产品在用户心理的定位,得不偿失。

  5.根据使用频次决定消息推送的频率

  工具型APP用户可能每天只打开一次,而社交型APP用户每天会打开20次以上,这就是产品类型决定的使用频次差别。用户心理有一个平衡值,恰到好处的消息推送频率会让用户不知不觉对APP形成依赖。社交型APP可以推送得频繁些,因为用户希望第一时间收到好友发来的消息;工具型APP按照使用场景和使用频次进行推送,通常每天不可以超过一条;内容型APP则不需要按时间决定,当用户订阅的电视剧有新剧集更新,那么就第一时间给用户推送消息。一切以用户感受为中心的运营事半功倍。

  6.后续动作:尽量引导打开APP,保持友好的用户体验

  从APP厂商的角度,一切消息推送皆以用户打开APP为目的,那么用户打开时进入的是不是用户想要看到的界面?有很多APP推送的是活动信息,但点开进入的是APP首页,用户还要花精力去寻找活动页面入口在哪儿,这就是不友好的用户体验,一定程度上挫伤了用户点开消息的热情。

如何用好消息推送(push)做APP运营

8. 消息推送(push)对app运营的影响有哪些?

push指运营人员通过自己的产品或第三方工具对用户移动设备进行的主动消息推送。用户可以在移动设备锁定屏幕和通知栏看到push消息通知,通知栏点击可唤起app并去往相应页面。对APP影响如下:1、延长用户生命周期:移动互联网发展迅速,每台手机平均安装34个app,月平均新装3.5个app,同时,每月卸载app达到了3.4个。单个APP的寿命越来越短。2、导致关闭推送功能:一款APP的push过多的话,会使用户感到反感,可能会把推送的功能关闭,就算APP以后举办非常有价值的活动,也无法通过消息推送告知用户。消息推送推荐极光推送。极光用户和推送统计,完整的消息生命周期查询,并且可以形成“推送报表”与“用户统计报表”呈现给开发者,用来观察推送的效果和应用发展趋势。
最新文章
热门文章
推荐阅读