前段时间,《中国绿色 App 公约》开始了全面推广。
一直以来,安卓手机在国内的市场占有率都非常高,但是有些体验上却并不算好。尽管各大手机厂商在硬件上都不断努力突破,但是在软件体验上,尤其是第三方软件的体验上,手机厂商却难以统一管理。这个《中国绿色 App 公约》解决的就是多年以来困扰国内安卓第三方软件的权限和推送的问题。
那这个公约真的能解决问题吗?安卓的软件问题又主要是有什么导致的?
安卓的信息推送为什么如此混乱?
在 iOS 上,苹果的 Apple 推送通知服务(Apple Push Notification Service)托管了 iOS 平台下的应用消息推送。也就是说,某个想要发送推送消息通知的 App 即使没有常驻后台也能通过 Apple 的服务器进行信息推送。这样能够让手机的硬件资源得到更好的控制,提升手机的体验和续航。
安卓在国外其实也有一套对应的推送服务,谷歌的推送服务名叫「Google 云消息传递(Google Cloud Messaging,即 GCM)」,在 2014 年收购 Firebase 之后升级成为「Firebase 云消息传递(Firebase Cloud Messaging,即 FCM)」。
换句话说,谷歌也是有自家的信息推送服务的,但是由于谷歌在国内的一系列问题,导致国内的安卓手机厂商往往都会直接精简掉安卓内的所有谷歌服务,而其中包含的统一推送服务也被一并去除。
这就导致了国内安卓手机 App 想要发送推送信息就无法依靠手机系统,转而依靠软件自身提供。而软件想要推送信息需要的就是「常驻手机后台」且「不被杀进程」,而大量的手机软件在后台运行就会导致手机负荷量增大、并导致手机的处理速度和续航下降。
另外,大型互联网公司旗下也都有各自的推送服务,例如腾讯就有「腾讯信鸽推送」、百度有「百度云推送」、阿里巴巴有「阿里云移动推送」等等,这些使用统一推送平台的软件都会让旗下的软件互相唤醒,让共用的推送通道保持活跃,从而不被系统杀死。而最终的结果就是臭名昭著的「全家桶」。
除去大公司,还有很多第三方公司提供类似的推送服务,比如个推、极光推送、蝴蝶推送、友盟的 U-Push 等等,这些推送都能够帮助国内的安卓手机 App 完成信息推送服务,但是和前面提到的腾讯信鸽之类的相同,一台手机内使用相同推送服务的软件也会互相唤醒。
《公约》能够解决推送问题吗?
国内安卓 App 的问题不是没人不想解决,相反的是,国内的手机厂商们似乎都想解决这个问题。
目前国内的大部分手机厂商都有自己的推送服务:小米有「MI Push」、华为系有「华为推送服务」、OPPO 有「OPPO 推送平台」、vivo 有「vivo 消息推送服务」、魅族有「魅族消息推送服务」等等。
这些手机厂商推出的推送服务都能够比较好的解决上面提到的第三方服务中相互唤醒的缺陷,但是这对于第三方软件开发者就变成了一场噩梦:想要达成理想中的效果,软件在开发之后还要适配所有手机厂商的推送服务,这对软件开发者是一个几乎不可能完成的任务;而如果只适配单一平台的推送,那在其他品牌的手机上依旧还是老样子,依靠常驻系统后台完成推送。
综上所述,目前国内安卓 App 信息推送的最大问题还是出在没有一个像 APNs 或者是 FCM 一样的统一推送信息管理服务器,无法实现安卓平台推送信息的集中管理。
就在这样的一个环境下,2017 年由工信部牵头,国内众多手机厂商和软件上参与的「安卓统一推送联盟」成立了。这个名字起得比较直白,基本表达了这个联盟要解决的所有事情 —— 国内安卓手机的信息推送问题。
这个联盟由工信部旗下的泰尔实验室主导,与参与的企业共同定制统一的推送服务 UPS(Unified Push Service),这个服务有望成为国内安卓厂商 FCM 的替代品。经过了一年多的努力,今年的 1 月 7 日,统一推送联盟发布了《统一推送时间表》,预计在今年年底,现有各推送通道就可以兼容统一推送标准。
而文章开头提到的《中国绿色 App 公约》则是在软件层面上对 App 提出了要求,目前官网上的规章条陈和绿色守护和 App So 联合推出的《Android 绿色应用公约》非常类似,但是要求更低一些:
· 严格遵守国家的各项法律法规,积极进行内容审核和把控,切实践行社会主义核心价值观。值得一提的是《Android 绿色应用公约》中的第一条则是「完全遵照 Android 本身的演进方向」。
· Target SDK Version 最低要求 24,也就是说要符合 Android 7 的安全标准。Android 7 的低电量模式和应用待机模式都有比较高的要求;而《Android 绿色应用公约》中要求的则是符合 安卓 8 的安全标准,基本取消了 App「自启动」。
· 不在启动应用时强制请求「读取手机状态和身份(READ_PHONE_STATE)」权限。
· 除用户的主动交互触发外,避免启动其它应用未处于运行中的进程。这一条是针对交叉唤醒和链式唤醒。
· 除文件管理类应用之外,在 Android 5.0 及以上版本的设备中,避免使用『读取/写入外部存储(READ / WRITE_EXTERNAL_STORAGE)』权限。
· 使用请求唤醒 CPU 的周期性任务,对使用时间有限制,并且避免在「不必要的时间段(比如夜间)」继续调用。这样能够适当延长手机在休眠时间段的续航。这一点是在 Android 9 中重点优化的项目。
根据目前的信息,原本应该在 4 月 3 日推出的《中国绿色 App 公约》草案并没有及时更新,统一推送联盟的官网上也没有新信息的出现,毕竟这项服务中牵扯的利益点众多,想要调和各方的利益诉求可能也需要一定时间。
希望即使谷歌不在,我们希望能享受通过这个 UPS 来体会一下原生安卓的流畅效果,也能帮助开发者节约开发时间和开发成本,最重要的是这个公约能够限制目前混乱的安卓生态现状,对于未来的安卓生态环境的维护建设都会有非常大的好处。
(本文转载自:爱否科技)