朋友刚从iPhone过度回安卓,选择了魅族18,习惯了iPhone端的推送服务所有推送第一时间秒推,而安卓这边各家都有各自的推送,魅族flyme的推送经过测试除了微信QQ基本其他都不能第一时间推送。后台限制也比较严重,尤其是微博的限制。所以就想寻求一种安卓端的解决方案。截止截稿日期2021年3月,目前好用的安卓端无需后台推送服务就是MiPush。想办法让非MIUI系统使用MiPush就可以了。以下的过程需要Root和Magisk框架,没有的话则没办法使用了。(该项目作者称:无需Root,无需框架,但是经过实测非MIUI无ROOT无框架,不安装伪装为小米设备的模块,无法成功将App注册。这点需自行测试。)
装前必读:国内的EMUI和MIUI的推送机制是比较完善的,所有没必要折腾。像原生Android、Flyme、One UI、Color OS以及氢OS的推送机制都有大大小小的问题,喜欢正常收到通知的可以继续操作。该文章以魅族Flyme 8.2演示。
原理:
请参考Github的项目介绍 :https://github.com/MiPushFramework/
必备软件:
推送服务——用于接受通知的app(不可卸载)
消息接受——用于测试的App(可卸载)
Magisk Manager框架——搭配模块MiPushFake(不可卸载)、mipush注册机(注册完成之后可卸载)
Xposed框架——搭配模块小米推送框架增强(注册完成之后可卸载)
软件下载地址:
百度网盘合集: https://pan.baidu.com/s/1is4xzddanHiplfa9wuE5vQ 密码: ooq6
使用步骤:
1.手机ROOT以及安装Magisk面具框架。
2.将上述软件安装,面具框架的模块勾选激活,xposed的框架勾选激活。
3.打开推送服务App,按照引导设置开启电池管理白名单,使用情况访问权限。
4.安装测试项目消息通知,打开该软件设置一个订阅标签。确认注册成功之后访问下列网页,进行测试通知。
https://tdtt.top/send?topic=你自己的订阅标签&title=通知标题&content=通知内容
我的为通知测试链接为:
https://tdtt.top/send?topic=ss&title=标题&content=内容
使用效果:
效果图为魔改过的软件使用效果。在flyme8上运行原版软件,只会在安装第一次能够成功跳转至应用通知,之后完全不可以跳转。所以我进行了简单的修改,修改过的软件可以跳转小米Push SDK支持的应用,比如微博、易车、微店等等。
不支持一键跳转的软件需要点击通知之后再次点击手动打开App,这两个步骤可以调换。即先点击手动打开App按钮,再点击通知。可以完成绝大多数应用跳转。
各种系统的情况有所不同,我的附件会打包原版以及魔改版本,自行选择就可以。原软件与我修改过的软件哪个更适合自己就需要自己测试了。我修改过的软件只在魅族的flyme8进行了测试,未测试其他系统。需要自行选择跟测试反馈。
修改软件的原理:
如果推送服务APP正在前台运行,可以调用拉取应用的方法推送通知,如果状态为后台运行的状态无法进行activity的跳转与传递。
当前解决方案,为每个通知增加SDK INTENT按钮 如果有一键启动的支持方法,如果无则通过先startActivity再进行页面跳转。
遇到的问题:
使用MiPushFake模块之后,识别手机型号的软件(比如微博),手机型号会被识别为小米手机。没有办法换为原来的手机型号发微博,只能作为小米手机某个型号。可以通过修改手机型号的软件进行修改比如:机型更改等App,原理是通过root修改system的build.prop文件。下载链接:https://www.coolapk.com/apk/com.dabai.ChangeModel2
同时有一些system分区被锁定的手机系统,不可以通过修改文件的方式进行修改只能通过Magisk框架模块进行修改手机型号,本文附件会附带小米11Ultra的机型修改模块。可以解决发动态没有小尾巴的问题。