kiến thức Cách fix miss thông báo một số app trên máy xiaomi chạy rom EU/quốc tế 100%, và có thể là cả rom nội địa (cần ae test)

  • Người tạo chủ đề Người tạo chủ đề Yolo22_3
  • Ngày bắt đầu Ngày bắt đầu

Yolo22_3

Đã tốn tiền
Cập nhật liên tục ! Topic thuần chất Em yêu khoa học. Ae nào có vấn đề đọc hiểu nhưng muốn tỏ ra thượng đẳng mời ra chỗ khác. Không tiếp ! :feel_good:
Bản chất vấn đề nó nằm ở chỗ này:
Thông thường, khi anh em mở app, thì OS nó mở package, tạo process chính, rồi process chính tự mở thêm các process phụ, process phụ mở thêm service . Sau khi tắt màn thì OS nó kill process chính, kill process phụ và các services, nhưng để lại process và services listener liên quan tới thông báo. Khi có thông báo từ GCM/FCM(firebase) đẩy về, thì cái service listener này nó nhận được và gọi process chính lên xử lý (nếu ae nhấn vào).
Nhưng thằng Xiaomi nó kill không chỉ app, mà còn process, và toàn bộ service liên quan tới thông báo, kill sạch sành sanh, của cả GCM/FCM (google) và của app. Tất nhiên là app nội địa nó đéo kill rồi
7WQmpYj.gif

Thế nên sẽ chả có service nào của GCM/FCM push thông báo và cũng chả có cái service listener nào của app để nhận thông báo.
HyperOS/Miui quản lý việc kill app/process/service bằng cái app Power Keeper. Cái app này nó quản lý mấy cái setting ẩn trong máy (theo tôi nhé) là:

power_pkg_white_list : danh sách package được bỏ qua không kill khi chạy tốn điện
power_proc_white_list : danh sách process được bỏ qua không kill khi chạy tốn điện
power_service_white_list : danh sách service được bỏ qua không kill khi chạy tốn điện
rt_pkg_white_list: danh sách package không bị giới hạn tài nguyên, hoạt động tối ưu hơn.
turbo_sched_core_app_list : các app trong list này được quyền cấp nhiều điện, chạy bằng big core, và không bị kill service. Ví dụ mấy app tin nhắn, email, social.
Chi tiết hơn:
Vấn đề ở đây là thằng HyperOS nội địa nó khóa hết mấy cái list trên, thay đổi list trên sau khi khởi động lại thì nó reset về cũ. Có máy nó khóa hết, có máy thì không.
uxby0Nl.gif


Còn thằng HyperOS EU và quốc tế thì nó mở 4 cái đầu, cái turbo nó khóa. Một số app nó không cho vào trong turbo nên nó đéo nổ sau khi tắt màn. Nên ae chỉ cần cho thêm tên app, process và service phụ trách thông báo vào, là nó nổ ngay. Nổ nhanh hơn vozer chém gió.
Tôi dùng Mi12 Ultra cài rom EU, bị mất thông báo chrome sau khi tắt màn. Các app khác vẫn nổ ngon. Còn rom Elite và TN thì tịt ngóp ngay cả khi mở màn. (rom lỏ vl mà ae khen lắm thế)
5gcj2yy.gif

Tôi dùng cách dưới đây fix ngon lành, làm 1 lần, dùng mãi. Nổ tưng bừng trong 0,1s. nhanh xé gió, còn nhanh hơn mấy app trong list turbo ở trên.
45X6fZK.gif


Cách làm như sau:
(Nhớ cài driver: https://provider.xiaomi.eu/tools/driver.zip, bật USB debugging và USB debugging (Security Settings))
1. Đầu tiên là xử lý thằng GCM/FCM của google
- Lấy log của package: com.google.android.gms

Dùng lệnh (ví dụ): adb shell dumpsys activity services | grep com.google.android.gms
(Có thể gõ adb shell trước rồi ấn enter, rồi gõ nốt phần lệnh còn lại)
Sau đó copy log đem vào chatgpt/grok bảo nó tách tên package, process, service liên quan tới thông báo ra. :byebye:
- Mở chatgpt lên, gõ:
Dựa theo mã nguồn và tài liệu của GCM/FCM(firebase) trên android, liệt kê hết tên package, process và service liên quan và hỗ trợ thông báo trong log trên.
- Rồi nó hiện như sau:

Tên package: com.google.android.gms
Tên process:

  • com.google.android.gms : nó là cái Google play services
  • com.google.android.gms.persistent : là sub-process, chịu trách nhiệm push đẩy thông báo, và các thứ khác.
Tên service:
  • gcm.GcmService : thằng này là dịch vụ push/pull thông báo nè, nó phân phối cho service listerner của app
  • gcm.nts.SchedulerService : thằng này lên lịch cho thằng trên
  • chimera.PersistentApiService : thằng này hỗ trợ thằng thứ nhất
  • chimera.PersistentApiServiceNoInstantApps : thằng này cũng hỗ trợ thằng thứ nhất (chi tiết ae mở chatgpt hỏi)
2. Tiếp theo là xử lý thằng app không nổ thông báo (tôi lấy ví dụ chrome nhé):
1. Đầu tiên là xử lý thằng GCM/FCM của google

- Lấy log của package: com.android.chrome

Dùng lệnh (ví dụ): adb shell dumpsys activity services | grep com.android.chrome
Sau đó copy log đem vào chatgpt/grok bảo nó tách tên package, process, service liên quan tới thông báo ra. :byebye:
- Mở chatgpt lên, gõ:
Dựa theo mã nguồn và tài liệu của app Google Chrome trên android, liệt kê hết tên package, process và service liên quan và hỗ trợ thông báo trong log trên.
Rồi nó hiện như sau:


Package: com.android.chrome → gói chính Chrome Android.
Processes:
  • com.android.chrome → tiến trình chính, chạy UI & service thông báo.
  • com.android.chrome: privileged_process0 → xử lý tác vụ cần quyền cao.
  • com.android.chrome:sandboxed_process0 → chạy nội dung web & Service Worker sandbox.
Services:
  • org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService → nhận FCM/GCM push messages.
  • org.chromium.chrome.browser.services.gcm.GCMBackgroundService → xử lý GCM/FCM nền.
  • org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender → gửi upstream messages.
  • org.chromium.chrome.browser.notifications.NotificationService → quản lý & hiển thị thông báo.
  • org.chromium.chrome.browser.notifications.NotificationJobService → job nền hỗ trợ notifications.
  • org.chromium.chrome.browser.ChromeBackgroundService → service nền tổng quát, sync & task.

Như vậy:
Thêm pkg vào list: power_pkg_white_list và rt_pkg_white_list
Thêm process vào: power_proc_white_list
Thêm service vào: power_service_white_list
App Power Keeper nó tìm kiếm theo đoạn kí tự trong trên chứ ko tìm cả tên service, nên ae ko cần tiền tố đứng trước, như / : . hay tên của process
Ae thêm bằng adb nhé (mở khóa developer option, dùng máy tính, bật cmd,...)
Dùng lệnh sau:

adb shell settings put system rt_pkg_white_list com.google.android.gms,com.android.chrome
adb shell settings put system power_pkg_white_list com.google.android.ext.services,com.google.android.gms,com.android.chrome
adb shell settings put system power_proc_white_list com.google.android.gms,com.google.android.gms.persistent,com.android.chrome,com.android.chrome:privileged_process0
adb shell settings put system power_service_white_list gcm.GcmService,gcm.nts.SchedulerService,chimera.PersistentApiService,chimera.PersistentApiServiceNoInstantApps,org.chromium.content.app.PrivilegedProcessService0,org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService,org.chromium.chrome.browser.services.gcm.GCMBackgroundService,org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender,org.chromium.chrome.browser.notifications.NotificationService,org.chromium.chrome.browser.notifications.NotificationJobService,org.chromium.chrome.browser.ChromeBackgroundService
Có thể chỉnh lại thời gian tự reconnect lại gms:
adb shell settings put gms_checkin_timeout_min 2
Cuối cùng là bật Autostart của app thôi ! Có thể tắt luôn cái Pause app... cũng được. Không cần chỉnh battery với lock app, chạy nền.... gì hết. Rất tiết kiệm pin !

Lưu ý:
Ae khởi động lại máy, sau đó có thể dùng SetEdit để kiểm tra xem mấy cái whitelist đó còn giữ thay đổi không. Vậy là xong. Nổ tưng bừng.
Rom China của một số máy nó khóa hết list (reboot là reset lại), một số máy thì lại mở list, nên ae cứ thử làm với list như trên trước xem.
Nếu Rom mà bị khóa hết white_list, thì ae tự chạy lại mỗi lần reboot.
Hoặc Ae dùng rom china, nếu bị reset list sau mấy ngày, có thể dùng cách này. Dùng Termux chạy adb qua Shizuku, auto bật adb mỗi khi khởi động, auto chạy lệnh mỗi xx ngày/giờ/phút

Ae làm theo hướng dẫn này nhé:

Tất tật Shizuku + app:
Mời ae nghiên cứu !

Một cách khác (chưa kiểm tra kĩ, nhưng có tác dụng y chang)
Chỉ cần thêm tên package (ví dụ com.android.chrome) vào một trong hai cái setting sau, nên dùng setedit để thêm vào, tránh ghi đè list app cũ nhé
cloud_turbo_sched_allow_list
turbo_sched_core_app_list


Hai list này sẽ bị reset về ban đầu sau khi khởi động, nên cần thêm lại mỗi lần reboot, ae có thể nghiên cứu tạo cronjob qua shizuku nhé (tôi không biết cái này, kaka).

Cái tôi chưa thử:

  • bỏ tên package và process lớn của app, ví dụ com.android.chrome, ra khỏi pkg và proc list rồi test. Nếu ok thì cũng có thể tiết kiệm được thêm pin (dù hiện tại có trong list t thấy cũng chả ăn pin). :byebye: Mời ae thử
  • các OS nội địa china khác như OriginOS, ColorOs,MagicOS, cũng có thể cùng nguyên lý như trên, ae thử xem nhé :byebye: Decompile file apk của app quản lý power và kill app (dùng apktook Apktool (https://apktool.org/)), như Powerkeeper trên HyperOS, Athena trên ColorOS,... Tìm mấy cái list thôi :byebye: Ae tự nghiên cứu nhé !
  • cách đơn giản thế này sao ae chưa từng thử à :doubt: nếu ngon thì từ nay chúng ta lại dùng máy nội địa khỏi lo thông báo, khỏi cần unlock :sexy_girl:
Danh sách pkg, proc, service cho app khác (ae voz đã test và post trong thớt này)
Gmail:
power_pkg_white_list: com.google.android.gm,com.google.android.gms

power_proc_white_list: com.google.android.gms

power_service_white_list: com.google.android.gm.notification.GmailFirebaseMessagingService,com.google.android.gm.sync.SyncService,com.google.android.gm.account.AccountService,com.google.android.gm.provider.MailSyncAdapterService,com.google.android.gm.notification.GmailNotificationService

rt_pkg_white_list: com.google.android.gm,com.google.android.gms

Mes và zalo:

Mời ae test

Có cái hình Lockscreen ko ae lại bảo xạo lol coca, nổ real time luôn:

IMG_20251020_103400.jpg
 
Sửa lần cuối:
dài thế này tôi đọc là hết muốn fix, chắc bán cụ máy đi mua bản qte cho nhanh :nosebleed:
máy quốc tế cũng có thể lỗi thông báo một vài app, đây là cách fix chung, viết chia sẻ cho ae thôi, fen nói thế tôi cụt cả hứng
45X6fZK.gif


biết đâu kì tới mấy os tàu nó mở cho chỉnh white_list thoải mái thì ngon quá còn gì
WxgkIvr.gif
 
Nếu mã có rom taiwan thì chuyển sang taiwan, đủ tiếng việt, ko miss thông báo, rom chính chủ xiaomi luôn
 
Em dùng mi12 nd, unlock chuyển qua rom taiwan vẫn chết thông báo của gmail nên dùng luôn outlook
 
Cập nhật liên tục !
Bản chất vấn đề nó nằm ở chỗ này:
Thông thường, khi anh em mở app, thì OS nó mở package, tạo process chính, rồi process chính tự mở thêm các process phụ, process phụ mở thêm service (tôi hiểu thế). Sau khi tắt màn thì OS nó kill process chính, kill process phụ và các services, nhưng để lại process và services listener liên quan tới thông báo (tôi hiểu vậy). Khi có thông báo từ GCM/FCM(firebase) đẩy về, thì cái service listener này nó nhận được và gọi process chính lên xử lý (nếu ae nhấn vào).
Nhưng thằng Xiaomi nó kill không chỉ app, mà còn process, và toàn bộ service liên quan tới thông báo, kill sạch sành sanh, của cả GCM/FCM (google) và của app. Tất nhiên là app nội địa nó đéo kill rồi
7WQmpYj.gif

Thế nên sẽ chả có service nào của GCM/FCM push thông báo và cũng chả có cái service listener nào của app để nhận thông báo.
HyperOS/Miui quản lý việc kill app/process/service bằng cái app Power Keeper. Cái app này nó quản lý mấy cái setting ẩn trong máy (theo tôi nhé) là:

Vấn đề ở đây là thằng HyperOS nội địa nó khóa hết mấy cái list trên, thay đổi list trên sau khi khởi động lại thì nó reset về cũ. Có máy nó khóa hết, có máy thì không.
uxby0Nl.gif


Còn thằng HyperOS EU và quốc tế thì nó mở 3 cái đầu, cái turbo nó khóa. Một số app nó không cho vào trong turbo nên nó đéo nổ sau khi tắt màn. Nên ae chỉ cần cho thêm tên app, process và service vào là nó nổ ngay. Nổ nhanh hơn vozer chém gió.
Tôi dùng Mi12 Ultra cài rom EU, bị mất thông báo chrome sau khi tắt màn. Các app khác vẫn nổ ngon. Còn rom Elite và TN thì tịt ngóp ngay cả khi mở màn. (rom lỏ vl mà ae khen lắm thế)
5gcj2yy.gif

Dùng cách dưới đây fix ngon lành. Nổ tưng bừng trong 0,1s. nhanh xé gió, còn nhanh hơn mấy app trong list turbo ở trên.
45X6fZK.gif


Cách làm như sau:
1. Đầu tiên là xử lý thằng GCM/FCM của google
Mở chatgpt lên, gõ:
Dựa theo mã nguồn và tài liệu của GCM/FCM(firebase) trên android, liệt kê hết tên package, process và service liên quan tới thông báo.
Rồi nó hiện như sau:
Tên package:
com.google.android.gms
Tên process:
com.google.android.gms : nó là cái Google play services
com.google.android.gms.persistent : là sub-process, chịu trách nhiệm push đẩy thông báo, và các thứ khác.
Tên service:
gcm.GcmService : thằng này là dịch vụ push/pull thông báo nè, nó phân phối cho service listerner của app
gcm.nts.SchedulerService : thằng này lên lịch cho thằng trên
chimera.PersistentApiService : thằng này hỗ trợ thằng thứ nhất
chimera.PersistentApiServiceNoInstantApps : thằng này cũng hỗ trợ thằng thứ nhất (chi tiết ae mở chatgpt hỏi)

2. Tiếp theo là xử lý thằng app không nổ thông báo (tôi lấy ví dụ chrome nhé):
Mở chatgpt lên, gõ:
Dựa theo mã nguồn và tài liệu của app chrome trên android, liệt kê hết tên package, process và service liên quan tới thông báo.
Rồi nó hiện như sau:



Tên serviceVai trò / ghi chú
org.chromium.chrome.browser.services.gcm.ChromeGcmListenerServiceNhận tin nhắn từ FCM/GCM (action com.google.firebase.MESSAGING_EVENT) Chromium Source+1
org.chromium.chrome.browser.services.gcm.GCMBackgroundServiceDịch vụ nền GCM (background tasks) Chromium Git Repositories
org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSenderGửi upstream message / invalidation qua GCM Chromium Git Repositories+2Chromium Git Repositories+2
org.chromium.chrome.browser.notifications.NotificationServiceXử lý sự kiện notification (click, close, show) Chromium Git Repositories+1
org.chromium.chrome.browser.notifications.NotificationJobServiceJobs xử lý notification chờ / deferred notification Chromium Git Repositories+1
org.chromium.chrome.browser.ChromeBackgroundServiceDịch vụ task GCM / wake-up theo lịch (listens for com.google.android.gms.gcm.ACTION_TASK_READY) Chromium Git Repositories+1

Tên pkg: com.android.chrome
Tên process: com.android.chrome
Tên service:
org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService
org.chromium.chrome.browser.services.gcm.GCMBackgroundService
org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender
org.chromium.chrome.browser.notifications.NotificationService
org.chromium.chrome.browser.notifications.NotificationJobService
org.chromium.chrome.browser.ChromeBackgroundService


Như vậy:
Thêm pkg vào list: power_pkg_white_list
Thêm process vào: power_proc_white_list
Thêm service vào: power_service_white_list
App Power Keeper nó tìm kiếm theo đoạn kí tự trong trên chứ ko tìm cả tên service, nên ae ko cần tiền tố đứng trước, như / : . hay tên của process
Ae thêm bằng adb nhé (mở khóa developer option, dùng máy tính, bật cmd,...)
Dùng lệnh sau:


Cuối cùng là bật Autostart của app thôi ! Có thể tắt luô cái Pause app... cũng được. Không cần chỉnh battery với lock app.... gì hết.

Ae khởi động lại máy, sau đó có thể dùng SetEdit để kiểm tra xem mấy cái whitelist đó còn giữ thay đổi không. Vậy là xong. Nổ tưng bừng.
Rom China của một số máy nó khóa hết list (reboot là reset lại), một số máy thì lại mở list, nên ae cứ thử làm với list như trên trước xem.

Với rom nội địa, ae nào rảnh và biết về rom, thử unpack xong đóng gói app Powerkeeper của rom EU hoặc rom quốc tế vào xem. Xong bổ xung thêm app nào chưa nổ thông báo vào như trên.
Hoặc ae đang dùng thì có thể thử cài đè App Power Keeper lên (dùng adb, tôi nhớ là được, có thể cần dùng quyền su).
Tôi thấy rom EU nó dùng app Powerkeeper khác so với của rom nội địa. Nên nó mới không khóa mấy cái list trên.

Cái tôi chưa thử:

  • bỏ tên package và process lớn của app, ví dụ com.android.chrome, ra khỏi pkg và proc list rồi test. Nếu ok thì cũng có thể tiết kiệm được thêm pin. :byebye: Mời ae thử
  • các OS nội địa china khác như OriginOS, ColorOs,MagicOS, cũng có thể cùng nguyên lý như trên, ae thử xem nhé :byebye: Dùng SetEdit kiểm tra xem nó có white_list không, có thì điền thử kí tự bất kì,ấn lưu rồi reboot xem có bị reset không.
  • cách đơn giản thế này sao ae chưa từng thử à :doubt: nếu ngon thì từ nay chúng ta lại dùng máy nội địa khỏi lo thông báo, khỏi cần unlock :sexy_girl:
Bác ơi đọc qua thì thấy bác am hiểu chuyên sâu về android, os ợ
Xin đc hỏi 1 vấn đề khác. E đang dùng tab Lenovo y700 2023, rom qt, có hai vấn đề:
1. Ko thể update via ota được. Vậy tải một bản offline update vài trăm MB rồi "force install" là có khả thi ko? Có phụ thuộc yếu tố gì ko?
2. Em hay xài tiktok và ytb, và có một bug khá kì lạ là khi nào mà bật battery saver thì 2 app này, đặc biệt là youtube, có tần suất khá dày đặc bị đơ (kiểu như not responding của windows) mất 3-5s rồi app mới chạy tiếp. Ví dụ quẹt xem clip tóp tóp chừng 15 đến 20 cái thì bị 1 cái khựng 3s. Hoặc bên YTB có khi báo luôn: "App does not respond, do u want to Close?" Bên Tiktok cũng có bị luôn sau series vài lần lag như đã kể (mà tần suất ít hơn so với YTB)
Vậy thì lý do là cớ ra làm sao nhị? Cơ chế Battery Saver của OS bên Lenovo nó can thiệp sâu vào cách app chạy luôn à?
(Được cái khi bật Battery Save là pin tụt chậm hơn thấy rõ luôn, tầm 30-35%)
 
Đánh dấu, cám ơn hướng dẫn của bác mặc dù mình ít khi trên tay máy nội địa.
 

Thống kê chủ đề

Ngày tạo
Yolo22_3,
Người trả lời cuối
Mắc Biết,
Trả lời
1.252
Lượt xem
105.423
Quay lại
Lên đầu trang