MCPcopy Index your code
hub / github.com/MiPushFramework/MiPushFramework

github.com/MiPushFramework/MiPushFramework @0.3.7.20210106.1425051

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.3.7.20210106.1425051 ↗ · + Follow
1,869 symbols 4,322 edges 184 files 375 documented · 20%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

MiPushFramework

Build Status License GPL-3.0 Min Android Version

在非 MIUI 系统上体验小米系统级推送。

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

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

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

系统级推送

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

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

本项目的意义

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

注意

  • 请勿使用 黑域、绿色守护、Xposed一些模块 对 Push 做操作,可能导致推送不稳定
  • 只有推送功能。其他完整功能(如查找手机)请使用 MIUI
  • 服务本身不需要 Root、Xposed 支持,但是为了伪装为MIUI设备,建议使用伪装增强模块

优点

  • 简单,安装非常简单
  • 使用后,其他应用的 XMPushService 会自动禁用,就像在 MIUI,同时还能保证推送
  • 完整事件记录,可以监控每个应用的 注册和推送
  • 拦截小米推送产生的不必要唤醒,也能阻止它读取您的隐私

开始使用

安装步骤非常简单 :

  • 前往 Releases 标签,下载最新的 Release APK ,并安装。
  • 跟着向导进行设置。

反馈问题

遇到任何问题,请先看看 Issues 里面有没有人提过。(常见问题:无法收到推送) 如果没有找到答案,请为每个问题提交一份 Issue,并务必带上如下内容,以便开发者解决:

  • 你的 ROM 是什么,Android 版本是什么
  • 有没有使用框架等工具

同时,请使用 设置-获取日志 获取你的日志文件,写进 Issue。

日志

框架会自动记录日志,保存到私有目录。您可以前往 设置-高级配置 中清理。

参与项目

请参考 Contribution Guideline

已知问题

  • 对于部分小众的ROM (如 360OS)导致无法正常工作的情况,我们只会竭尽全力保证推送的运行,其它不妨碍推送的「特殊适配」会被忽略。对于这些情况,建议您更换更好的 ROM 以获得最佳体验。
  • 努比亚ROM应用(第三方使用 MiPush 的应用)可能不会自动禁用其 XMPushService 并启动服务,请尝试将框架设为系统应用
  • 锤子 ROM 下,Push 可以正确收到通知,但是通知栏没有提示 #143
  • 开发者学生党,开学了更新可能不太及时,请谅解
  • 一些通知 Feature 可能无法使用(如通知都会显示为推送框架发出,而不是目标应用)

感谢

  • @Rachel030219 提供文件
  • Android Open Source Project, MultiType, greenDao, SetupWizardLibCompat, Condom, MaterialPreference,GreenDaoUpgradeHelper, epic, Log4a,helplib,RxJava RxAndroid,RxActivityResult,RxPermissions, hiBeaver
  • 酷安 @PzHown @lmnm011223 @苏沐晨风丶(未采纳) 提供图标

License

GPL v3,有些狗不遵守开源协议(非本项目),请务必遵守开源协议

Extension points exported contracts — how you extend this code

CondomKit (Interface)
Kit interface to extend the functionality of Condom. Created by Oasis on 2017/7/21. [7 implementers]
condom/src/main/java/com/oasisfeng/condom/CondomKit.java
RomChecker (Interface)
Created by Trumeet on 2018/4/22. [10 implementers]
common/src/main/java/top/trumeet/common/utils/rom/RomChecker.java
OnConnectStatusChangedListener (Interface)
@author Trumeet @date 2017/12/30 [2 implementers]
push/src/main/java/top/trumeet/mipushframework/control/OnConnectStatusChangedListener.java
OnOpChangedListener (Interface)
(no doc)
extenders/src/main/java/android/app/AppOpsManager.java
OutboundJudge (Interface)
The callback for outbound request filtering. Created by Oasis on 2017/4/21. [6 implementers]
condom/src/main/java/com/oasisfeng/condom/OutboundJudge.java
ITopActivity (Interface)
Created by zts1993 on 2018/2/18. [6 implementers]
common/src/main/java/top/trumeet/common/ita/ITopActivity.java
OnNavigationItemSelectedListener (Interface)
Listener for handling events on bottom navigation items. [1 implementers]
push/src/main/java/android/support/design/widget/BottomNavigationView.java
IContentProvider (Interface)
Stub class for real IContentProvider, only for compilation purpose. Created by Oasis on 2017/4/11.
condom/src/main/java/android/content/IContentProvider.java

Core symbols most depended-on inside this repo

getString
called by 91
common/src/main/java/top/trumeet/common/utils/Utils.java
equals
called by 63
common/src/main/java/android/os/UserHandle.java
isEmpty
called by 47
push/src/main/java/top/trumeet/mipushframework/utils/ShellUtils.java
get
called by 39
condom/src/main/java/com/oasisfeng/condom/util/Lazy.java
getPackageName
called by 37
provider/src/main/java/top/trumeet/mipush/provider/register/RegisteredApplication.java
delegate
called by 35
extenders/src/main/java/android/app/AppOpsManagerExtender.java
getSystemService
called by 33
condom/src/main/java/com/oasisfeng/condom/CondomCore.java
wrap
called by 28
condom/src/main/java/com/oasisfeng/condom/CondomContext.java

Shape

Method 1,623
Class 222
Interface 21
Enum 3

Languages

Java99%
Kotlin1%

Modules by API surface

condom/src/main/java/android/content/pm/PackageManager.java166 symbols
condom/src/main/java/com/oasisfeng/condom/PackageManagerWrapper.java155 symbols
condom/src/main/java/com/oasisfeng/condom/PseudoContextWrapper.java92 symbols
common/src/main/java/android/app/ActivityManager.java79 symbols
condom/src/main/java/com/oasisfeng/condom/CondomContext.java60 symbols
condom/src/androidTest/java/com/oasisfeng/condom/CondomContextBlockingTest.java52 symbols
extenders/src/main/java/android/app/NotificationManager.java38 symbols
common/src/main/java/android/os/UserHandle.java31 symbols
condom/src/main/java/com/oasisfeng/condom/CondomCore.java29 symbols
common/src/main/java/top/trumeet/common/register/RegisteredApplication.java28 symbols
provider/src/main/java/top/trumeet/mipush/provider/register/RegisteredApplication.java27 symbols
extenders/src/main/java/android/app/AppOpsManager.java25 symbols

For agents

$ claude mcp add MiPushFramework \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page