集成推送(极光+小米+华为)总结(java服务端)

公司app集成了极光推送,前前后后在这上面费了不少时间了,总结下自己的理解和遇到的问题。 只用过极光推送,所以下面都以极光推送为例。(后面新增小米和华为)

1.、都有什么品牌的推送服务? 集成什么品牌比较好?

  主流第三方推送有 极光,友盟,个推,百度云,基本服务都是免费的。另外还有小米推送,华为推送,这两个在自己的android平台上权限更高,在app进程被杀死的情况下也能推送。

  个人推荐: 个推>友盟=极光=百度云 ,原因如下。   另外大些的应用还会同时集成小米推送和华为推送,来提高在小米和华为手机上的推送到达率。

① 市场占有率是个很重要的指标,在android应用下,app进程被杀死的话,可以通过共有使用了同家服务商的其他app推送通道,来提高到达率。

② 其他方面,比如推送稳定性,耗电量,耗流量,功能全面度等来说,主流的推送服务商差距感觉也不太多,就不怎么考虑了。另外,应该只有极光支持winphone推送= =。

可参考:http://www.jianshu.com/p/db3c478d9191

2、 ios和android的推送机制?

  了解也不深,就不多说了,个人大致总结下就是,ios使用的是苹果官方的推送服务器APNs通道转发,android也有官方的推送服务器GCM,但好像在国内因为墙的关系不太能用,所以第三方都采用直接与应用建立长连接的方式推送,导致权限不高,到达率也低,并且耗电量还高。

关于推送机制可参考:https://www.zhihu.com/question/20667886

关于为什么不用GCM可参考:http://www.52im.net/thread-117-1-1.html

关于android保活的方式可参考:http://www.52im.net/thread-438-1-1.html

3.、定时推送怎么实现?

  极光推送是有定时推送的api的,但我使用的是java的定时任务框架quartz实现的,这样更灵活一些。

4、推送和自定义消息的区别?

 推送是指应用外,往通知栏推送内容。

自定义消息是往app内推送数据,这个很灵活,可以借此实现一些无法用http请求实现的功能。比如常见的的app内表示未读消息的即时刷新的红点或角标。

5、ios和android 推送到达率的问题? 为什么android的推送到达率普遍低很多?

   在极光推送中,ios的推送成功数代表极光服务器成功发送到苹果APNS服务器的数据,基本与表目标数相差无几,目标数与成功数之差为失败数,失败的原因一般是Apple 判断 token 失效了,App 已经卸载了等。苹果端的实际到达用户数统计需要另外设置,我没有做。ios由于在app进程被杀死的情况也可以收到通知,所以实际到达数排除手机没电,没网等情况后,应该也还是较多的。   怎么配置可以看极光的说明文档:https://docs.jiguang.cn/jpush/client/iOS/ios_guide_new/#_9。

  在android端,成功数即代表了实际到达用户的数量,等于在线到达数+离线到达数。当app处于打开状态时,计入在线到达数,未打开状态下app推送会由极光的离线推送机制,等用户激活app时推送。当用户在离线时间内(极光免费用户为5天)未激活app的话,也就永远收不到了。 所以我们一般需要采用一些手段,使推送能尽量到自己的未激活app,提高到达率。
  1. android怎么提高到达率?

    ①让自己的app成为白名单。

       方式有两种,一种是用户手动设置,一种是像QQ,微信等一样,被手机厂商默认设置为白名单。
    

    ②使自己的app处于打开或是后台打开的状态。这个就属于运营范畴了。

    ③集成小米推送,华为推送等手机厂商的推送服务,这些推送的权限更高,有系统的推送进程。小米推送可以使小米手机上进程被杀死状态也能推送。华为同理。

    ④被其他app唤醒进程:

       当使用了极光推送服务的其他app被唤醒时,自己app可以使用其他APP的推送通道收到推送,其它推送服务商同理。所以推送服务商的市场占有率越高,自己app收到推送的概率也就越高。极光需要另外配置该功能:https://community.jiguang.cn/t/jpush/2815。
    

    关于android保活的方式可参考:http://www.52im.net/thread-438-1-1.html

后续集成小米推送和华为推送

1.小米推的送

  小米的文档写的挺明白了,各项功能也还算完整,api逻辑跟极光差不多。最重要的是在小米MIUI系统上是系统级推送,可以在应用被杀死的情况下收到推送。另外小米还支持ios推送,也可以透传消息,所以完全替代极光是应该是行得通的。

2.华为推送

其实也不难,在服务器端就两个接口,①是从华为服务器获取 通行令牌,②是根据通行令牌调用华为接口推送就好了。但华为吐槽点不少。
  1. 集成实际上其实挺简单,但文档复杂,写了一堆细节和原理上的东西,格式也不够友好,不利于快速上手。只能推送android。

  2. 功能比较简单,只能使用token(RegistrationID)推送,一次最多还只能是1000条。 统计页面上数据也比较少。

    1. 新版推送跟旧版推送不兼容,旧版推送貌似已经放弃维护,所以我集成的是新版,而且新版推送只在华为5.1以上才收的到(被这个问题耽误了半天时间)
  3. 相比较极光,小米,推送管理平台页面也挺简陋,各方面细节上都不够友好。

    推荐快速集成方案:直接下载demo(华为没有提供对接口封装后的jar包),对应文档把一些参数改改就好了。然后拿到移动端给的token就可以推送了。

3.极光+小米+华为推送整合:

   应该主要就是解决一个问题,三个平台都推送的情况下,移动端怎么只显示一条资讯?

   我这采用的方法是:

         ①通知栏推送服务端三个推送平台一起推,不用做什么特别处理。应用内推送(透传消息)就用极光推。

         ②移动端上(听同事说的),小米手机只初始化极光和小米,之后再把极光通知栏推送这一块关掉。(因为需要用到极光的应用内消息推送,所以极光还是需要初始化)

                   华为手机只初始化极光和华为,之后再把极光通知栏推送这块关掉。

                      其他手机就只初始化极光推送就好了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值