Premessa necessaria
Non sono un esperto, quanto segue è frutto di tentativi ed errori, e di tanta pazienza.
Ne io né questo forum siamo responsabili di eventuali danni al tuo dispositivo e e delle conseguenze da essi derivanti. Procedi a tuo rischio e pericolo.
A cosa è dovuto il bug delle notifiche
(Se non se interessato alla spiegazione, passa direttamente alla soluzione)
Hai settato le app come si deve, con tutti i permessi del caso, eppure il bug è sempre lì, come un muro invincibile. Perché?
Il problema sta in tre lettere: GCM. Google Cloud Messaging.
Da quanto ho potuto capire googlando, si tratta di una piattaforma che le app utilizzano per scambiare dati e ricevere le notifiche push.
Nel mio caso, sotto rete wifi, le app che sfruttano GCM non riuscivano a comunicare. Nessun problema invece sotto rete dati.
Perché?
Pare che Lollipop richiede di connettersi con un indirizzo Ipv6, e questo ad alcuni router non piace. La connessione risulta quindi instabile, e GCM ne paga le conseguenze.
In pratica anche se il wifi è connesso e whatsapp gira in background, di fatto GCM non è disponibile e quindi siete tagliati fuori dalle notifiche push.
Installate Push notification checking-fix , eve ne accorgerete, perché nell’area notifiche ci sarà scritto “not available”, o qualcosa del genere.
Come risolvere?
Sostanzialmente in 2 modi:
1 Disabilitare ipv6 dal router
2 Disabilitare ipv6 dallo smartphone
Per il primo metodo vi toccherà agire dal pannello di controllo del router.
Io ho scelto il secondo, ed ecco come ho fatto.
Ci sono due soluzioni possibili.
Soluzione semplice
1 Scarica l’app disable Ipv6, avviala e concedi l’accesso come root
2 collegati alla rete wifi, avvia nuovamente l’app.
A questo punto l’app verificherà l’Ipv6 status
3 A fianco alla scritta “Ipv6 status” c’è un interruttore che dovrebbe essere sulla posizione on. Disattivalo.
Fine. A questo punto GCM dovrebbe riprendere a funzionare, e così le notifiche push.
Nella versione gratuita dell’app, non puoi flaggare “remember network”, quindi ogni volta che ti colleghi al wifi dovrai aprire l’app e disabilitare Ipv6.
Se questo non ti sta bene compra la versione a pagamento, o passa alla soluzione successiva.
Soluzione avanzata
Si tratta di creare uno script che disabiliterà l’ipv6 ogni volta che ti colleghi al wifi. Ecco come fare.
1 Scarica l’app script manager e concedi l’accesso come root
2 apri l’app, seleziona browse as root, e seleziona una cartella dove andrai a posizionare lo script (io l’ho messo nella sd esterna, in modo da averlo sempre disponibile anche dopo full wipe)
3 Una volta arrivata alla cartella desiderata (la cartella principale dell’sd esterna, per esempio) fai tap sui tre puntini in alto a destra e seleziona “Nuovo script”
4 nominalo “disable_ipv6”, in modo da ricordare a cosa serva
5 nell’editor che si aprirà, posizionati sotto la linea “#!/system/bin/sh” e scrivi
“echo 1 > /proc/sys/net/ipv6/conf/wlan0/disable_ipv6”
6 premi di nuovo i tre puntini e seleziona salva
7 seleziona lo script appena creato con Smanager. Nella finestra di dialogo che si apre attiva i pulsanti “Su” e “Net”. Questo fa sì che lo script si avvi con i permessi di root ogni volta che c’è un cambio nella rete
8 fai tap su salva
Tutto fatto. Ora, ogni volta che ti colleghi via wifi,lo script si avvia e disabilita l’ipv6, e tutto tutto dovrebbe funzionare come si deve.
Per i più pigri metto lo script bell’e pronto qui. Dovete solo metterlo nella sd esterna (o dove volete) e procedere ad attivarlo con Script manager come descritto sopra, saltando i punti 3, 4, 5 e 6.
(se però non funziona, non siate pigri, create lo script!)
Verifica
Se vuoi verificare che l’ipv6 sia effettivamente disabilitato, apri l’app disable ipv6 e controlla l’interruttore dell’ipv6 status.
Oppure vai in /proc/sys/net/ipv6/conf , apri il file disable_ipv6 con un editor di testo e troverai un “1” all’interno
Nota
Come detto non sono un esperto, né mi intendo di script, la procedura avanzata l’ho presa da qui. Tutti i crediti del caso vanno all'autore del post. Io ho solo capito il legame tra questo e l'annoso bug delle notifiche.
Problemi con lo script?
Ero a piedi in città e stavo usando il telefono con maps, gps e wifi attivo (non connesso a niente, ovviamente). A un certo punto vedo dall’area delle notigiche che lo script comincia ad avviarsi a ripetizione. Quindi apro Script Manager, vado nella sd, apro lo script, deseleziono i pulsanti “Root” e “Net”, e tutto torna normale.
Al rientro a casa pensavo di dover riattivare lo script, invece noto con sorpresa, con l’app Ipv6 disable, che l’ipv6 resta comunque disabilitato. Probabilmente per la rete già conosciuta non c’è bisogno di avviare nuovamente lo script.
Morale della favola, se avete lo stesso problema agite allo stesso modo, deselezionando root e net, e riattivateli in caso di necessità.
Spero che la guida possa essere utile almeno ad alcuni di voi.
Buona fortuna e goditi il tuo Xiaomi!
(originariamente pubblicato da me qui)