安卓系统的APP做推送用什么app应该怎么做?

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

苹果手机上的APP,只要设置好了消息做推送用什么app就没有一点问题;

而安卓手机上,为什么只有一部分APP(如微信等)能正常做推送用什么app;而其它的APP,怎么设置也没有及时消息做推送用什么app


个人的分析理解如下,说得不對的地方请各位同学斧正呵呵。

苹果有自己的消息做推送用什么app机制安卓手机本来也有自己标准的消息做推送用什么app机制,即Google的GCM.


但是眾所周知Google在境内被封锁所以gcm在国内根本运作不起来。所以多数国产的APP中也就放弃处理接收gcm


有的APP能接收做推送用什么app消息,并非是采用叻标准的gcm机制;而是自己实现了后台服务自己进行做推送用什么app消息的监听和接收。即所谓“牺牲续航挂后台”

当然,安卓APP各自实现後台来监听、接收做推送用什么app消息,缺点就是费电影响续航。

  • 目的: 在用户未打开App时App主动向鼡户做推送用什么app服务器最新消息

  • 基本原理: 服务器如何先找到设备、再找到app?
    每一个设备都有一个自己的设备号而设备中的app又都有一個唯一的包名。所以服务器只需要找到设备号与包名就可以定位到某个设备的某个应用而这设备号与包名会一起构成一个标识符,叫做device_token因此问题就简化为把device_token与消息内容等信息交给服务器,服务器把内容发到唯一的device_token上

  • 作用: 功能需要,如:资讯类产品的新闻做推送用什麼app、工具类产品的公告做推送用什么app等等;活动运营需要如:电商类产品的促销活动;召回用户 / 提高活跃度等等。

iOS 的消息做推送用什么app機制面世之时是一种全新的解决方案(堪称平台中的平台)应用本身不能有常驻的后台进程,系统的开销少内存使用更少,电量也更尐(把更多的运算和资源开销放在云端非设备端)。而 Android 的特点虽然开销大,优点是更稳定快速但不明显。

(更多请参见以下文章:、、以及即时通讯网精选的)

iOS 系统的做推送用什么app(APNS,即 Apple Push Notification Service)依托一个或几个系统常驻进程运作是全局的(接管所有应用的消息做推送鼡什么app),所以可看作是独立于应用之外而且是设备和苹果服务器之间的通讯,而非应用的提供商服务器
iOS的做推送用什么app是通过苹果洎己的APNs服务进行的,用户需要将device_token以及消息内容等做推送用什么app信息交给APNs服务器剩下的均由苹果自己来完成。iOS应用的做推送用什么app大部分凊况下都要依赖苹果生态提供的APNs(Apple Push Notification Service)服务

  1. 首先,作为设备标识的device-token是由APNs颁发的App开发者或者第三方做推送用什么app平台(图中的Provider)做的工作昰收集这个device-token,APNs的做推送用什么app是要求基于APNs颁发的device-token来做推送用什么app的只有正确的device-token会被APNs接受,如果是一个错误的、或者无效的device-token(比如App已经卸载叻)APNs就不会接受。
  2. 接着开发者使用第三方做推送用什么app平台(图中的Provider)在将做推送用什么app内容与范围选定之后进行做推送用什么app,第三方做推送用什么app平台将信息提交给APNs剩下的操作全部都由APNs来进行完成,整个过程第三方做推送用什么app平台就不能控制了

    例如腾讯 QQ 的服务器(Provider)会给苹果公司对应的服务器(APNs)发出通知,然后再中转传送到你的设备(Devices)之上当你接收到通知,打开应用才开始从腾讯服务器接收数据,跟你之前看到通知里内容一样但却是经由两个不同的通道而来

所以, iOS 的做推送用什么app可以不严谨的理解为:
1)苹果服务器朝手机后台挂的一个 IM 服务程序发送的消息;
2)系统根据该 IM 消息识别告诉哪个 Apps 具体发生了什么事;
3)系统分别通知这些 Apps ;

他们带给用户的恏处是实实在在的: 1)安全:只有登录过的开发者可以通过苹果的服务器做推送用什么app;


2)快速、稳定、可靠:苹果掌控做推送用什么app服務器和 OS ;
4)让整个系统的体验更统一和简单:不会出现杀后台这种脑残事。(不用大量 Apps / Apps 的服务为了做推送用什么app挂后台)也不会出现 Apps 被殺就收不到做推送用什么app这种脑残事(早一点的新浪微博 Android 版仍然如此);
5)开发容易:当然,开发者还是要做些事情比如维护个服务器什么的。但是复杂度无疑降低很多了

而 Android,就不同更像是传统桌面电脑系统做法。每个需要后台做推送用什么app的应用有各自的单独后台進程才能和各自的服务器通讯,交换数据另外其实 Android 也有类似 APNS 的 GCM(Google Cloud Message),属于开发者可选非强制。

Android平台在不使用GCM的情况下就需要将自己嘚服务器或是第三方做推送用什么app服务提供商的服务器与设备建立一条长连接通过长连接进行做推送用什么app。
开发者通过第三方做推送鼡什么app服务提供商将信息直接下发给需要的设备第三方做推送用什么app服务提供商与设备建立一条长连接通道,并且将消息路由到APP中(图Φ的设备1与设备2)对于像设备3这种无网络连接或是没有成功建立长连接通道的设备,会在设备3连网且做推送用什么app消息没有过期的情况丅自动收到由第三方做推送用什么app服务提供商做推送用什么app过来的消息保证消息不会丢失。

但是不建议自己设置服务器实现做推送用什麼app功能
一是因为成本太高(开发成本、维护成本),自己搭建的服务器无论是稳定性还是速度上都比不了第三方做推送用什么app服务提供商的效果;
另一个是因为自己的数据量较小使用第三方做推送用什么app服务提供商可以用他们的维度进行做推送用什么app,实现精准做推送鼡什么app

Apps 挂后台一直是 Android 引以为豪的特性,挂后台等待做推送用什么app就成为技术选择;
但是没人真正为用户的电池负责。Apps 的开发者不会站茬系统层面考虑的他会假设其他 Apps 没有那么“不自觉”;
优点在于 ,因为整个技术方案非强制 Android 的 Apps 在接收到做推送用什么app后的表现更为灵活。像 Line 的 Android 版本可以在做推送用什么app通知的 Popup 上直接回复 iOS 就需要越狱才能做到了。

3.1 操作系统有自身的消息做推送用什么app功能(系统级别)

  • 系統级别:任何时候都可以做推送用什么app给用户且不会被系统杀死
  • 本质: App将服务器更新的信息做推送用什么app给用户,即App获取服务器信息洅做推送用什么app给用户
  • App从服务器获取最新消息的基本方式(原理)有3种:Push、Pull 和 SMS

应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信例如消息排队等。

要考虑轮询的频率如果太慢可能导致某些消息的延迟,如果太快則会大量消耗网络带宽和电池

这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池IOS平台的做推送用什么app服务之所以工莋的很好,是因为每一台手机仅仅保持一个与服务器之间的连接事实上C2DM也是这么工作的。不过刚才也讲了这个方案存在着很多的不足の处,就是我们很难在手机上实现一个可靠的服务目前也无法与IOS平台的做推送用什么app功能相比。

在Android平台上可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,并获取其显示内容进行处理

优势: 可以实现完全的实时操作。
劣势:成本相对比较高需要向移动公司繳纳相应的费用。我们目前很难找到免费的短消息发送网关来实现这种方案

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

Android的辅助模式可以获取到手机通知栏上通知的Notification对象,利用此原理我做了一个可以获取囷收集APP做推送用什么app通知的应用可以帮助开发者调试自己APP的通知是否正常,或者收集统计各种APP的做推送用什么app通知主要包含以下功能:

  • 监听APP的做推送用什么app通知,提取出标题和内容
  • 定期自动唤起被监听APP
  • 自定义需要监听的APP列表
  • 支持提取标准通知和自定义通知内容
  • 使用辅助模式无需root和修改系统代码

对于开发者自己定义的通知,因为是一个RemoteViews对象没有办法通过标准的方式获取标题和内容,需要指定View的ID来从RemoteViews中提取在设置中可以定义被监控APP的标题viewid和内容viewid。代码已经放到欢迎Fork和Star。

我要回帖

更多关于 APP推送 的文章

 

随机推荐