浅谈push推送的一点感受
在手机已成为生活必不可分的一部分,push服务伴随而来。ios的apns,android随着谷歌退出中国市场,各家在android的推送不断展开。有厂商的推送,如小米、华为、魅族、oppo等,还有中间商的服务,如极光、友盟等。
苹果推送的apns,还是厂商的推送,都是走的代理,发给代理后即可。而自研的安卓推送,则是要自我维护,更好的保护好长连接,精准化推送人群,以及软实时等方面去设计和考虑。
这里只谈一下安卓推送。安卓推送的长连接包活关系到app是否能与服务端通信。而android系统又是个生态系统,自身机制可把内存大的、长时间运行的app等干掉。所以,app的包活至关重要。
目前,业内大概三种的包活方案:
1)app唤起联盟,即a和b在一个联盟中,a启动的时候,会唤起b。
2)手机出厂root到白名单。这一点:如微信、qq等app。在git上有人做过实验,要是刷机后,卸载重新安装上述app,在没有启动app的场景下,无法收到消息。
这一点不难理解,哪家的手机也不能在出厂的时候,没有给这些用户量大的app放到白名单中,谁也不想买个手机是个肉鸡。
3)app前端启动,这点如:qq音乐。在手机锁屏等时候,app是运行在前台的,而不是大多数后台运行。这里了解到,有几个app也是这么玩的,app前台放一个很不明显的logo,其实就是前台运行。这样的用户体验其实很差。
所有,app保活就成为了至关重要的位置,目前业内常用的有tcp保持长连接和websocket的方式。至于精准化人群,可根据用户画像或者tag标签分类进行筛选。软实时包括服务的设计,网关的设计等。
现在比较火的一个场景是物联网,是一个大方向。把它抽象下,基础模型可以从push推送模型中抽取到。
浅谈push推送的一点感受的更多相关文章
- iPhone的Push(推送通知)功能原理浅析
第一部分:Push原理(以下绝大多数内容参考自.图片来自iPhone OS Reference Library)机制简介Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhon ...
- 58同城高性能移动Push推送平台架构演进之路
本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需要,原理和方案对比:移动Push推送第一阶段(单平台)架构如何设计:移动Push推送典型性能问 ...
- 转: 58同城高性能移动Push推送平台架构演进之路
转: http://geek.csdn.net/news/detail/58738 文/孙玄 本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需 ...
- 移动端Push推送
移动端Push推送 移动端开发逃不掉要做推送,这里给出服务端一种省时省力的解决方案. iOS:PushSharp.Apple.苹果有自己的推送服务,我们按照规则推送数据就好.这里我选取PushShar ...
- push推送服务设计
PUSH系统架构设计简述 一.网络传输协议的选择 PUSH系统协议选取: UDP协议实时性更好,但是如何处理安全可靠的传输并且处理不同客户端之间的消息交互是个难题,实现起来过于复杂,那就非TCP协议莫 ...
- Android push推送消息到达成功率优化
Android push推送消息到达成功率优化 问题:server向client发送消息.未考虑client是否在线,这种消息到达率是非常低的. 第一次优化:使用server离线缓存数据,推断假设cl ...
- 为什么PUSH推送要经常背锅?
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 自从做了推送以后,每隔一段时间就发现有各大的公司 ...
- Android应用实现Push推送消息原理
本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我 们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅 ...
- Push推送原理
Push 的工作机制 APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器. 推送可以分为三个阶段. 第一阶段:.net应用程 ...
随机推荐
- 魅族 -- 禁止D及以下级别LOG的输出
真机调试时:Log.d()打印不出信息,模拟器可以. 使用的手机:魅族. 状况:禁止D及以下级别LOG的输出. PS.Log.d("h_bl", "进入执行") ...
- Java读取文本文件
try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw StringBuilder stringBuilder = new StringBuilder(); // 读入 ...
- winform TreeView树节点上下移动
/// <summary> /// 上移 /// </summary> /// <param name="sender"></param& ...
- Telnet窗口尺寸选项
转:http://www.cnpaf.net/Class/Telnet/200408/6.html 1.命令名称和选项代码 名称=NAWS(NegotiateAboutWindowSize)协商窗口的 ...
- iOS:Xcode中SVN不能提交CocoaPods中的.a文件的解决方法
不能提交.a文件, 这个与SVN的配置有关, 其实与xcode倒没有关系. 解决方法: 1. 打开终端, 在命令行中输入: vi ~/.subversion/config 来打开配置文件.2. 然 ...
- CSS3 transform变换
CSS3 transform变换 1.translate(x,y) 设置盒子位移2.scale(x,y) 设置盒子缩放3.rotate(deg) 设置盒子旋转4.skew(x-angle,y-angl ...
- Spark集群数据处理速度慢(数据本地化问题)
SparkStreaming拉取Kafka中数据,处理后入库.整个流程速度很慢,除去代码中可优化的部分,也在spark集群中找原因. 发现: 集群在处理数据时存在移动数据与移动计算的区别,也有些其他叫 ...
- Python Xpath 提取html整个元素(标签与内容)
提取html某标签中文字时,文字中含有:“<sub>2</sub>O<sub>5</sub>”,导致提取的文字不符合预期. 解决方法: #coding= ...
- [Angular] Control the dependency lookup with @Host, @Self, @SkipSelf and @Optional
Very differently to AngularJS (v1.x), Angular now has a hierarchical dependency injector. That allow ...
- 自行控制loadrunner的socket协议性能测试 (转)
一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字符串转换为十六进制数据包 发送自己定义的数据包 接收数据包到自定义缓冲 ...