前言

我可以得到什么?

一部更加流畅,推送接收更加高效准确,并且续航大增的手机(也许)

如果你不想看冗长且繁杂的技术细节,并且想单刀直入地改造你的推送,请戳这里

技术原理

推送技术,或者说是是一种基于Internet通信方式的服务器推送,其中要求通信的请求是由发布者或中央服务器发起。与pull/get形成对比,额外消息传输的相应一般由接收者或客户端发起。

推送服务通常是基于提前的消息预设置上。也就是所谓的Publish/Subscribe 模型。客户通过订阅由服务器提供各种消息的频道,不论何时都可以在其中一个频道得到新的内容,同样服务器通过推送把消息传递给相应的客户端。

*本文大部分材料摘自Wikipedia.orgCSDN博客GitHub并优化和删节,本文提及但不讨论除手机以外的终端,如有侵权请联系im#moedev.net

目前广泛应用的消息推送

不同的操作系统常采用不同的推送机制:

Apple/iOS

Apple于2008年6月9日首次公布这项服务,并在2009年6月17日随iOS 3.0推出了Apple推送通知服务(Apple Push Notification Service,简称APNs)。此项服务于iOS的通知中心整合后大幅加强了推送和本地通知的用户体验,并于API的形式添加到Max OS X Lion中。

APNS Logo.png

服务器使用APNs向联网用户推送服务器邮件、日历和联系信息。像是iPhone一类的设备和邮件、日历一类的应用都能收到来自Mac OS X服务器的推送通知。推送通知相较后台进程(使用拉取技术)能更好地维持电池寿命。

Google/Android

GCM

Google云端推送(英语:Google Cloud Messaging,简称GCM)是一项免费服务,帮助开发者从服务器发送数据到安装了他们的应用程序的Android设备上,或从服务器到其Chrome浏览器应用程序或扩展。GCM第一次亮相是在2012年6月27日在旧金山Moscone中心举行的Google I/O 2012。Chrome上的推送服务在Google I/O 2013之前发布,官方博客文章题为“用推送消息构建高效的应用程序和扩展”。

Firebase

2018年4月10日Google Cloud Messaging已被弃用,并已从Google API中删除。与此同时,火力基地/Firebase(Firebase Cloud Messaging,简称FCM)取代了其位置。

火力基地

两者区别&为甚麽GCM没了?

  • 开发者可以从GCM平滑切换到Firebase
  • Firebase的跨平台机能,特殊技能和运行速度远佳于GCM
  • *Google花了很多钱买下Firebase(たぶん)

但是

这两者都无法在中国大陆直接使用,因为G〇W(直球)。于是,中国大陆Android生态中出现MiPush和统一推送联盟。我们这次所介绍的是开源的MiPushFramework

WindowsPhone

RestInPlace

Remember this dude.

MiPushFramework

*此处直接引用官方介绍文档

什么是小米系统级推送,为什么会有这个项目

小米推送是小米公司提供的推送服务,许多 App 都在使用(如酷安)。

它非常轻量,会在 MIUI 设备上自动启用系统推送,而非 MIUI 设备则在后台保持长连接。

系统级推送

类似 GCM,小米推送的系统级推送是在 MIUI 完成的。应用在启动时,会判断如果是 MIUI ROM 则向系统注册推送,推送工作都由系统完成,应用无需后台,更省电。

然而在非 MIUI,每个使用小米推送的应用都会在后台启动一个 XMPushService, 10个应用就有10个,20个就有20个服务.. 非常耗电耗内存费流量。

本项目的意义

本项目就是想让任何不用MIUI的用户都能用上小米的系统推送,这样既能保证推送,又保证了无需后台。

缺陷

  • 不支持 MIUI。
  • 不建议使用 黑域、绿色守护、Xposed一些模块 对 Push 做操作,可能导致推送不稳定
  • 只有推送功能。其他完整功能(如查找手机)请使用 MIUI

优点

  • 简单,安装非常简单,无需 Root、Xposed、ROM 支持
  • 使用后,其他应用的 XMPushService 会自动禁用,就像在 MIUI
  • XMPushService 禁用后,还能保证推送
  • 更多设置项,可以针对每一款应用设置不同的推送权限
  • 完整事件记录,可以监控每个应用的 注册和推送
  • 可以在应用程序注册推送时选择是否允许
  • 拦截小米推送产生的不必要唤醒,也能阻止它读取您的隐私

使用MiPushFramework

Release页面下载最新版本,并安装。初始化程序后,打开支持MiPush的App,将会进行自动注册。

[pic]

对于有些App,需要伪装机型为小米,这需要Xposed或者Magisk的支持。

[pic]

注册成功后就可以把这些App丢进Island/Icebox/Brevent

[pic]

使用MiPushFramework的推送将会有Push标注

[pic]

各项推送服务对比

感谢

Wikipedia.org以及其优秀Wikier的编撰

CSDN众多bloger的专业描述


铁路民航 | 轨交摄影 | 街机音游 | 集群运维