公司决定启用推送技术。目前来说,用的是极光推送。免费版。

主要目标为ios + android。不排除未来有JS上实现的需求。

极光推送的文档只看到ANDROID、ios、winPhone,就是不支持js。
从这点看,技术选型的拓展性不强。

回到现状

因为手机本身的电量、网络的限制,我们必须要根据手机本身的特点,尽量节省电量和流量,同时要保证数据到达客户端的及时性。
为了解决数据同步,两个方式:
一、从服务器拉取。
二、手机跟服务器端维持长连接,进行推送。
很多情况下,我们会选择推拉结合的方式。

移动网络的特点

先来了解下IPv4的短缺问题 NAT-IPv4

换言之,运营商的网关需要维护一个外网的IP、端口到内网IP、端口的对应关系,来保证客户端跟服务器端的通信。
但是,客户端在一段时间内没有通信,则会淘汰NAT表中的对应项,通信中断。

大致讲下移动端的情况

Android手机:

平台多,ROM差异化大。要想实现及时性,必须要有取舍。经常说要接入各平台的推送服务,才能使用平台级的推送唤醒功能。华为的、小米的、魅族的、fire的,一来二去apk的包Size就变大了。这是我们不愿意看到的。

IOS手机:

依赖系统级的推送。不存在多家的问题。到时简化了。也没有推送无法唤醒手机的问题。

这次重点讲解android的方案。

IOS的推送是通过ios的框架实现的。问题会少。不存在因为轮训唤醒的电量,及时性问题。
极光推送在Android上的长连接(IOS可以利用系统服务推送哟)
要维持长连接,需要心跳机制。所以,心跳的频率很重要,直接影响到了电量,及时性。
保持Android长期唤醒Timer、AlarmManager。

极光推送是用AlarmManager实现的。这个消息,一定不可能及时。RTC唤醒你频率不可能高,频繁唤醒你的电量会激增,感受一下:一次网络请求40ma。休眠3ma。简单来说,你待机时间会大幅压缩。而且,每次唤醒,你难保其他app不会做网络请求。那就可能导致电量很不经用。

极光推送的服务器设计

大量的客户端连接,对服务器的压力会非常巨大。极光号称有C2000K项目。但是从来没有数据表示,他们到底活跃链接的处理量有多少?现在他们官网直说 10亿并发,这个完全不同的概念。天。并发数不说了吗?
另外通信量也会有不同的影响。这个需要结合起来看。

网络,有评论描述。同一个推送,有10分钟到的。也有1小时到了。

解决方案:自己做,便宜又好用。MQTT XMPP搞起来。

这里更多的是 产品逻辑配合技术实现。这避免了很多问题。好用不贵。

首先

用一套成熟的协议来简化,其实,MQTT\XMPP都是可以的

其次

AlarmManager、Timer去掉。那么这里怎么处理呢。
我认为,但是需要AlarmManager、Timer的时候,手机是一定休眠了的。既然如此。你何必强制唤醒一次。这里改 拉的方式,监听锁屏点亮、切换到当前应用的时候,进行Router拦截进行网络请求,切他。拉取你需要的信息。

再者

一般的互联网App,用户量1KK其实也还行,日活有多少,低频还是高频的用户操作,我们公司是低频的用户操作。其实,cover 1kk的用户量,估计同时在线率很低很低。保持10K的连接数就可以cover住。后续,可以考虑优化链接方式,LRU之类的处理优化长连接。这是完全可以做到的。

在电量、及时性、并发链接数解决后,你还有什么问题呢?
其实费用还好的,部署一台靠谱的阿里云上就好。

结合公司业务后,对极光推送的进一步思考相关推荐

  1. Android 集成极光推送和厂商通道

    JPush 产品简介 Push 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条. 开发者集成 SDK 后,可以通过调用 API 推送消息.同时,JPush 提供可视化的 web 端控 ...

  2. Android集成极光推送

    话不多说先上图: 集成步骤: 1.新建Android Studio项目,因为之后会用到包名 2.建项目后登录极光推送开发者平台创建自己的应用 https://www.jiguang.cn/dev2/# ...

  3. 极光小课堂 | 极光推送之 Android 客户端使用指南——基础篇

    " 本文中涉及到的所有代码现已在 Github 上开源,地址:https://github.com/xuexiangjys/JPushSample" 01 前言 - 极光推送是国内 ...

  4. 极光推送 android6.0,极光推送Unity-Android-API

    Android API 停止与恢复推送服务 清除通知 设置允许推送时间 设置通知静默时间 申请权限接口(用于 Android 6.0 及以上系统) 通知栏样式定制 设置保留最近通知条数 本地通知 获取 ...

  5. 小米手机退出app后收不到极光推送消息

    场景: 进入app,发送消息,消息正常接收,连续2次back退出app后,收不到极光推送消息,pushService进程存在,app主进程被杀. 华为,魅族都能在相同条件下接收消息,**小米手机 收不 ...

  6. Android 关于App被杀死后,如何接收极光推送

    作为一个程序媛,我要做到的就是听从上级的安排,有需求就实现.但是有的事情我表示真的很无力啊,就比如标题所说的需求. 因为ios在杀死app后都可以接收到通知,所以不懂的人就会觉得那Android应该都 ...

  7. 极光推送收不到推送消息

    极光推送收不到推送消息 问题 解决 猜测为什么会出现问题 问题 sdk版本号: // 极光推送 compile 'cn.jiguang.sdk:jpush:3.1.6' // 此处以JPush 3.1 ...

  8. 使用极光推送实现分组发送和服务端集成

    推送功能在手机应用开发中越来越重要,几乎成为所有App必备的功能,由于Android本身没有消息推送机制,通常采用的是基于XMPP协议的推送,但这种开发很麻烦,因此在市场上应运而生了提供消息推送服务的 ...

  9. 极光 php 自定义消息,laravel框架使用极光推送消息操作示例

    本文实例讲述了laravel框架使用极光推送消息.分享给大家供大家参考,具体如下: 最近需要使用极光推送往客户端推消息,所以这里记录下使用过程. 极光推送的服务端文档: https://docs.ji ...

  10. 在ionic/cordova中使用极光推送插件(jpush)

    Stpe1:创建一个项目(此处使用的是tab类型的项目,创建方式可参照我前一篇如何离线创建Ionic1项目) Stpe2:修改项目信息 打开[config.xml]修改下图内容: Stpe3:创建极光 ...

最新文章

  1. 测序数据的处理方法及装置制造方法及图纸
  2. Alpha 冲刺 (5/10)
  3. node+express+mongDB实现简单登录注册
  4. 政府安全资讯精选 2017年第六期 车联网和移动安全可能成为未来监管重点
  5. C++ Opengl 绘制二次几何体源码
  6. .NET Core + Kubernetes:StatefulSet
  7. Spring Boot集成ShedLock分布式定时任务实例
  8. “请给我一个女朋友”“我给你一个大嘴巴子”,微信官方真给人实现愿望了...
  9. CENTOS6.8 修改主机名
  10. oracle查看所有用户6,CSS_Oracle 用户权限查询,1.查看所有用户:nb - phpStudy
  11. Ubuntu18.04 32位下载
  12. boot camp驱动下载以及对应机型版本查询
  13. 【NLP学习笔记】Word Normalization and Stemming
  14. 【路径规划】基于蚁群求解多旅行商MTSP问题matlab源码
  15. 模拟私网问题导致节点宕机无法启动
  16. Word中如何删除目录页的页码
  17. java calculator类_java里使用面向对象的思想编写一个计算器类(Calculator),可以实现两个数的加、减、乘、除运算...
  18. LLDB breakpoint syntax
  19. 基于QT实现的可视化链表(单链表、循环链表、双向链表)
  20. python dict是什么意思,python中的字典是什么

热门文章

  1. 坦克大战小游戏的实现
  2. 如何下载高清卫星地图
  3. Linux之VM12+ CentOS7安装以及网络配置
  4. 顺序表C语言实现详解
  5. .net之PDF合并(直接拼接,不改变尺寸和样式)
  6. h5 bootstrap 小程序模板_教你获取小程序码或小程序H5页面路径
  7. 安装程序无法创建新的系统分区 服务器,安装程序无法创建新的系统分区怎么办...
  8. 数学牛人们的轶事[下]--zt 出处不详
  9. 从条件概率到贝叶斯公式
  10. 利用lnmp一键安装的php环境忘记mysql,root用户密码解决方法