Eklenen resimleri görmek için kayıt olmalısınız
Xiaomi Cihazlarda Geciken Bildirim Sorunu ve Kesin Çözümü
Xiaomi kullanıcılarının en sık karşılaştığı can sıkıcı durumlardan biri şüphesiz bildirimlerin gecikmesidir. WhatsApp, Gmail, Telegram veya Discord gibi anlık bildirim (push notification) altyapısını kullanan uygulamalardan gelen mesajlar bazen dakikalar, bazen de saatler sonra ulaşabiliyor. Bütçe dostu modellerden en üst seviye amiral gemilerine kadar cihaz fark etmeksizin yaşanan bu durum, yıllardır Xiaomi topluluğunun en büyük şikayet konularından biri olmaya devam ediyor.
Birçok rehber bu sorunun Çin (CN) ROM'larından kaynaklandığını söylese de bu doğru değildir. Aynı gecikme sorunu, hem EU (Avrupa) hem de Global ROM yüklü telefonlarda ve Xiaomi tabletlerde de birebir yaşanmaktadır.
Sorunun Kaynağı Nedir? Asıl sorun sanıldığının aksine ROM bölgesiyle değil, HyperOS'un arka plan işlemlerini yönetme şekliyle ilgilidir. Ekran kapandığında ve cihaz şarjda olmadığında HyperOS, "ETKİN DEĞİL" (Inactive) adını verdiği çok derin bir güç tasarrufu moduna geçer. Sistem, pilden tasarruf etmek amacıyla Google Play Hizmetleri'nin (FCM - Firebase Cloud Messaging) bağlantısını anında keser.
Bunu kendiniz de test edebilirsiniz: Arama ekranına *#*#426#*#* yazarak FCM Tanılama (Diagnostics) menüsüne girin. Ekran açıkken veya cihaz şarj olurken bağlantının aktif olduğunu göreceksiniz (bu arada, cihazı USB veya prize takıp şarj ederseniz bildirimlerin anında geldiğini fark edebilirsiniz). Ancak ekranı kapattığınız an bağlantı derhal kopar.
Buradaki en ilginç detay, bu sorunun yalnızca ekran kapalıyken ve Wi-Fi ağına bağlıyken yaşanmasıdır. Mobil veri kullanırken bildirimler ekran kapalı olsa dahi anında düşer. Bunun sebebi, HyperOS'un agresif pil optimizasyonunun Wi-Fi ve mobil veriye farklı davranmasıdır. Bekleme modunda Wi-Fi radyosu acımasızca kısıtlanırken, mobil veri bağlantısı korunur. Sistem, Google Play Hizmetleri'ni sıradan bir arka plan uygulaması gibi görüp bağlantısını kestiği için, bir uygulama size bildirim göndermeye çalıştığında o mesaj Google sunucularında beklemeye başlar. Ta ki siz ekran kilidini açıp bağlantı yeniden kurulana kadar...
Çözüm Yöntemi Aylar süren denemeler sonucunda, telefonu sürekli şarjdaymış gibi kandırmaya çalışmak yerine (ki bu yöntem root gerektirir ve yeni HyperOS sürümlerinde pek işe yaramaz), Android'in derinliklerindeki "Doze" ve "AppOps" sistemlerine doğrudan müdahale etmenin en iyi yol olduğunu keşfettim. Basit ADB komutlarıyla Android sistemine, Google Play Hizmetleri'ni asla kısıtlamaması gerektiğini söyleyebiliriz.
1. Adım: Google Play Hizmetleri ve Google Hizmetleri Çerçevesi'nin arka planda sürekli çalışmasına izin verin. (Aşağıdaki kodları ADB terminaline sırayla girin):
adb shell cmd appops set com.google.android.gms WAKE_LOCK allow
adb shell cmd appops set com.google.android.gms RUN_ANY_IN_BACKGROUND allow
adb shell cmd appops set com.google.android.gsf RUN_ANY_IN_BACKGROUND allow 2. Adım: Cihaz uyku (bekleme) modundayken bu hizmetlerin bağlantısının kesilmemesi için onları Doze beyaz listesine (whitelist) ekleyin:
adb shell dumpsys deviceidle whitelist +com.google.android.gms
adb shell dumpsys deviceidle whitelist +com.google.android.gsf
adb shell dumpsys deviceidle whitelist +com.google.android.gms.persistent Bu yöntemin temel esprisi, sistemin kısıtlamaları etrafından dolanmak yerine, kısıtlamaları doğrudan sistem düzeyinde atlamasıdır. Bu komutlarla telefon aktif veya pasif modda olsun fark etmeksizin, bu kritik servislerin asla kapatılmayacağını Android'e kabul ettirmiş oluyorsunuz. Komutları girdikten hemen sonra Wi-Fi üzerinden WhatsApp'taki 10 dakikalık gecikmelerin bittiğini, Telegram mesajlarının ve Gmail bildirimlerinin anında geldiğini (cihaz pildeyken ve ekran kapalıyken bile) göreceksiniz.
Doğrulama ve Önemli Detaylar Komutların işe yarayıp yaramadığını şu kodla kontrol edebilirsiniz:
adb shell dumpsys deviceidle whitelist ıkan listede com.google.android.gms, com.google.android.gsf ve com.google.android.gms.persistent isimlerini görüyorsanız işlem başarılıdır.
- Kalıcılık: Bu ayarlar cihazı yeniden başlattığınızda silinmez. Ancak büyük bir HyperOS veya Android sürüm güncellemesi alırsanız sıfırlanabilir. Bildirimler tekrar gecikmeye başlarsa komutları baştan girmeniz yeterlidir.
- Ön Hazırlık: İşleme başlamadan önce Geliştirici Seçenekleri'nden USB Hata Ayıklama açık olmalı ve telefonu bilgisayara bağladığınızda "Dosya Aktarımı" (File Transfer) seçeneğini seçmelisiniz.
- HyperOS İzinleri: ADB komutları sistemi halletse de HyperOS'un kendi kısıtlamalarını da kaldırmalısınız. Bildirim beklediğiniz uygulamalar için Ayarlar → Uygulamalar → [İlgili Uygulama] → Uygulama İzinleri → Arka Plan Otomatik Başlatma ayarını mutlaka aktif edin.
- Uygulama Yenileme: İşlemler bittikten sonra, WhatsApp gibi bazı sosyal medya uygulamalarının bildirim altyapısını tazeleyebilmesi için uygulamayı silip baştan yüklemeniz gerekebilir.
- Avantajları: En büyük artısı, Root erişimi gerektirmeden sorunu kökünden çözmesidir. Telefonunuz normal şekilde uyku moduna geçmeye devam eder, gereksiz 3. parti uygulamalarla uğraşmazsınız. Wi-Fi üzerindeki FCM bağlantısı, tıpkı mobil veride olduğu gibi stabil ve güvenilir hale gelir. Üstelik bu yöntem farklı Xiaomi modellerinde de sorunsuz çalışmaktadır.
- Dezavantajları: Tek eksisi pil tüketiminde yaşanacak ufak artıştır. İşlemi yapmadan önce gece bekleme modundaki şarj tüketimi yaklaşık %2 civarındayken, Google Play Hizmetleri'nin Wi-Fi bağlantısını açık tutması sebebiyle bu oran %3-4 seviyelerine çıkabilir. Anlık bildirim almak isteyen çoğu kullanıcı için bu çok ufak bir bedel olsa da, pil tüketimi konusunda aşırı hassas olanların bu detayı göz önünde bulundurması gerekir.