# 如何解決小米手機大陸版 HyperOS 通知延遲問題 ### 原理 大陸版電量管理會經常切斷 fcm 連線,減少接受通知頻率以達到省電效果 直接刪除電量管理仍會無法正常接收通知,甚至產生更多問題 目前只能將電量管理禁用,測試通知都可以第一時間收到了! 目前測到的副作用是 app 無法在背景長時間執行,根據耗電量決定何時會被殺掉 例如鎖定手機播放音樂,過一陣子就會停止播放音樂(youtube music) 瞭解副作用後再決定是否要進行接下來的步驟 ### 副作用 1. app 無法在背景長時間運行 2. 禁用後電量管理可能無法恢復(只能讓手機恢復原廠設定才能恢復) --- ==可以接受副作用再進行以下操作== ==步驟比較複雜,請謹慎操作== ### 禁用電量管理 1. 手機打開開發者模式(我的裝置-全部參數-OS版本點擊7下) 2. 確認手機已經登入小米賬號,登入後才能開啟usb偵錯(安全設定) 3. 在 Mac / Windows 的 cli 上安裝 adb 4. 開啟 usb 偵錯、usb 偵錯(安全設定)這兩個選項 5. 插線後手機點擊允許偵錯 6. 用 cli 確認已連接電腦 `adb devices` 7. 取得維護人員權限 `adb shell settings put global maintenance_mode_user_id 110` 8. 禁用電量管理 `adb shell pm disable-user --user 0 com.miui.powerkeeper` 10. 確認電量管理已經被禁用 `adb shell pm list packages -d` 12. 移除維護人員權限 `adb shell settings delete global maintenance_mode_user_id` 13. 重開手機以確保生效 14. app 設定中沒有看到背景設定,表示成功 15. 在需要通知的 app 設定中開啟自啟動選項 --- ### 如何恢復電量管理(以前經驗是無法恢復,但可以試試) 1. 取得維護人員權限 `adb shell settings put global maintenance_mode_user_id 110` 2. 啟用電量管理 `adb shell pm enable --user 0 com.miui.powerkeeper` `adb shell pm enable com.miui.powerkeeper` 4. 移除維護人員權限 `adb shell settings delete global maintenance_mode_user_id` --- ### 指令範例 ``` //有連接上會印出手機的 deviceID ../Downloads % adb devices List of devices attached 525a0c12 device ``` ``` //未安裝 play 商店會有這些,安裝後沒了,代表 gms 沒有被禁用 ../Downloads % adb shell pm list packages -d package:com.google.android.gsf package:com.android.vending package:com.google.android.printservice.recommendation package:com.google.android.ext.shared package:com.google.android.onetimeinitializer package:com.google.android.configupdater package:com.google.android.gms ``` ``` //禁用電量管理後 ../Downloads % adb shell pm list packages -d package:com.miui.powerkeeper ``` ``` ../Downloads % adb shell settings delete global maintenance_mode_user_id Deleted 1 rows ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up