Ludomedia Notifier
Anteprima Stato
Abbandonato Abbandonato
Piattaforme
Android
Download
Nessun download disponibile.

Ludomedia Notifier è una app non ufficiale per Android che vi permetterà di controllare periodicamente la presenza di notifiche sul vostro account di Ludomedia e in caso ce ne siano di non lette verranno automaticamente segnalate all'utente sul suo dispositivo Android tramite l'utilizzo delle notifiche di sistema. In questo modo davvero non avrete più scuse per perdervi una notifica di Ludomedia, anche in mobilità.

Adesso un po' di appunti tecnici sull'app. Innanzitutto da premettere che il programma in sé consiste in sole 3 componenti: una activity principale che è l'interfaccia utente dove impostare le varie cose, un service in background che si occuperà di effettuare i controlli sulla presenza di eventuali notifiche su Ludomedia e un receveir settato al boot di sistema che si occuperà di avviare il service di background automaticamente all'avvio di Android. Il tutto è stato programmato in modo da richiedere il minor ammontare possibile di risorse e soprattutto agisca in modo abbastanza intelligente da ridurre al minimo il consumo di batteria. Purtroppo, non avendo accesso via server a Ludomedia poiché non ne sono il proprietario, non ho potuto implementare il supporto a GCM (il servizio di notifiche Push ufficiale di Android), quindi ho dovuto optare per un controllo manuale programmato ogni tot minuti. Dunque, com'è ovvio aspettarsi, impostare intervalli di aggiornamenti molto brevi farà avviare i controlli più spesso influendo negativamente sul consumo di batteria. Precisato questo, però, nel creare quest'app però ho cercato di seguire tutte le linee guida che Google stessa mette a disposizione degli sviluppatori nella sua documentazione ufficiale per ridurre al minimo il peso sulle risorse di sistema e sul conseguente consumo di batteria.
Nello specifico ho creato il service di background in modo che:

  • Rispetti le impostazioni di default dell'utente senza intoccare nulla di sua mano.
  • Faccia il suo lavoro in un thread separato, ossia in maniera del tutto distaccata dall'activity principale che quindi può essere tranquilla chiusa per liberare risorse di sistema e non deve dunque rimanere anche lei in esecuzione in background per forza.
  • Ottenga un risveglio solo parziale del sistema e soprattutto lo rilasci una volta che ha finito il suo compito (ossia, detto in altre parole, non mantenga sveglio il sistema indefinitivamente).
  • Quando ha finito di fare il suo lavoro richiami la funzione standard di autochiusura in modo da liberare le risorse del sistema.
  • Rispetti quella che in particolare è una delle linee guida più infrante nelle app su Android e che peggio fa adirare gli utenti, ossia evitare che l'app, seppur killata (interrotta) a forza, comunque dopo qualche istante si riavvi ancora da sola. Io invece ho fatto in modo che non si riavvi automaticamente da sola quando il sistema la killa (lo interrompe) nelle situazioni in cui ha bisogno di più risorse.
  • Mantenga la compatibilità anche con i device aventi una versione di Android più datata grazie all'uso comunque di funzioni deprecate.
  • Utilizzi gli allarmi di sistema per attivare gli eventi, in modo che il peso di dover calcolare il prossimo controllo non sia sul service di background.
  • Utilizzi gli allarmi cosidetti “inesatti”, ossia quelli che il sistema, in caso siano vicini tra loro, può raccogliere assieme e farli coincidere nell'esecuzione in modo da ridurre sensibilmente le volte in cui risvegliarsi.
  • Annulli sempre prima un allarme già impostato nel caso debba resettarlo, evitando quindi il rischio seppur remoto di aver più allarmi con lo stesso scopo in esecuzione.
  • Aspetti, all'avvio del device, il segnale di boot del tutto completato prima di eseguire le sue operazioni, in modo da non interferire con le routine di avvio del device.
  • Non esegua subito il controllo appena completato il boot, causando quindi pesantezza all'avvio del device, ma invece utilizzi un allarme così da farlo scattare ed eseguire in modo posticipato, dando dunque al sistema tutto il tempo necessario per assestarsi dopo l'avvio.
  • Possa essere fermato dall'utente tramite l'interfaccia senza doverlo killare forzatamente.
  • Blocchi la sua esecuzione programmata in caso di errore di connessione senza andare dunque a ripetere tale errore periodicamente finché l'utente non interviene a sistemarlo.

Oltre a questo, anche il programma in sé segue direttive in modo da ridurre il costo sulle risorse di sistema e sul consumo batteria. Operando essenzialmente sul versante notifiche, nello specifico l'ho programmato in modo che tali notifiche di Android:

  • Acquisiscano le impostazioni di default: tutto è nelle mani dell'utente dunque, colore di sfondo, vibrazione, suono, colore del LED se supportato, tutto ma proprio tutto delle notifiche viene acquisito dalle impostazioni di default in modo che l'utente possa gestirle come più gli aggrada. Le uniche cose personalizzate nelle notifiche dal programma sono ovviamente il testo e l'icona.
  • Siano sempre una: con questo intendo che non vengono create nuove notifiche ogni qual volta il programma controlla gli aggiornamenti, ma nel caso sia ancora presente una notifica passata quando si va a notificare nuovamente viene aggiornata tale notifica con il nuovo testo senza andare a crearne una nuova ad hoc e finendo dunque per intasare (soprattutto con intervalli di aggiornamenti brevi) il pannello delle notifiche di sistema.
  • Notifichino in modo intelligente: nel senso che non vadano a far vibrare e suonare il device ogni qual volta si aggiorni una notifica, ma soltanto quando non sono presenti altre notifiche del programma.
  • Si chiudano automaticamente quando l'utente preme su di esse.
  • Si chiudano automaticamente quando l'utente, da un altro PC o device, accede alle notifiche di Ludomedia azzerandole. Il programma infatti è programmato in modo che, nel caso riceva zero nuove notifiche (ossia l'utente, utilizzando un altro mezzo, le ha già lette), vada a controllare se c'è una notifica di sistema presente e in tal caso la rimuove.
  • In caso di errore di connessione a Ludomedia notifichino tale problema all'utente invitandolo ad intervenire.
  • Avviino programmi differenti a seconda del contenuto: nel caso infatti siano notifiche regolari premendo su di esse si avvia il browser internet di default del device già indirizzato sulla pagina delle notifiche di Ludomedia, nel caso invece siano notifiche di errore allora premendo su di esse verrà avviata l'applicazione in modo che l'utente intervenga rieffettuando il login e/o riattivando il service in background.

Infine, per quanto riguarda la sicurezza, un paio di precisazioni:

  • Il programma richiede username e password perché non può operare senza per accedere al vostro account su Ludomedia. In ogni caso tali dati NON verranno salvati dal programma ma utilizzati una tantum per l'acquisizione appunto di cookie e token necessari al login in futuro. Soltanto questi due dati saranno salvati e assolutamente soltanto sul vostro device.
  • Nonostante vengano salvati solo token e cookie ho voluto comunque dare all'utente la possibilità di poter cancellare (tramite apposita funzione nel programma) tutti i dati salvati in modo da garantirgli il pieno controllo di sicurezza sul programma.

Penso di aver detto tutto sul “modo” in cui ho programmato questa applicazione, se mi son scordato qualcosa o avete ancora altri dubbi non esitate a chiedere, tramite apertura di un issue nella pagina ufficiale di Bitbucket del progetto, oppure contattandomi direttamente su Twitter o via email.

Ho testato personalmente l'app con tutti i dispositivi Android a mia disposizione e posso quindi confermare la compatibilità sicura con i seguenti modelli:

  • Nexus 4 con Android 4.4.4
  • Nexus 7 con Android 4.4.4
  • Xperia P con Android 4.1.2

Altri test positivi sono stati fatti da alcuni utenti di Ludomedia (e ne approfitto per ringraziarli) sui seguenti modelli:

  • Wiko Rainbow con Android 4.4.2
  • S4 i9505 GPE Edition con Android 5.0.1

In generale comunque l'app è compilata in modo da supportare tutte le versioni di Android dalla 3.0 in poi.

  • Fixato un bug sul contenuto del testo di una stringa.
  • Fixato un bug sull'impostazione del numero di errori sopportati dal programma che nella v1.0 non veniva salvata correttamente.
  • Ridisegnata leggermente l'interfaccia del programma eliminando un po' di pulsanti e cambiando il testo di qualche stringa.
  • Aggiunta una nuova activity dedicata soltanto alle Impostazioni
  • Aggiunta un'opzione in cui l'utente può disattivare gli aggiornamenti delle notifiche quando non si è sotto copertura WiFi
  • Aggiunta un'opzione in cui l'utente può scegliere se skippare gli errori di connessione o meno.
  • Aggiunta un'opzione in cui l'utente può scegliere quanti errori di connessione consecutivi (fino ad un massimo di 10) skippare prima di disattivare gli aggiornamenti delle notifiche in background.
  • Piccoli miglioramenti al codice per tentare di aumentare ancora l'efficienza generale del programma.
  • Gestione migliorata della connettività internet: adesso se l'utente disattiva la connessione ad Internet nel suo device il programma non notificherà più un errore e poi si spegnerà, ma semplicemente si sospenderà fino a quando la connessione non sarà riattivata, in quel caso tornerà ad essere operativo automaticamente.
  • Gestione migliorata dei risultati tramite cache: adesso il programma memorizza l'ultimo risultato ottenuto in modo che, al risultato successivo controlli prima se è diverso da quello memorizzato e solo in tal caso si adoperi di notificare il cambiamento.
  • Gestione migliorata degli errori: adesso il programma si bloccherà soltanto se l'errore di connessione è ripetuto per più di una volta. Questo permetterà quindi di superare gli errori di connessione singoli che a volte accadono (per un timeout, per un problema al server, ecc…) e porterà dunque il programma a non spegnersi più automaticamente in loro presenza ma soltanto quando questi saranno ripetuti per più di una volta (in modo da risparmiare cicli e quindi risorse/batteria).
  • Possibilità di accedere direttamente dall'app al proprio account di Ludomedia
  • Possibilità di impostare a discrezione dell'utente l'intervallo in minuti con cui cercare nuove notifiche disponibili
  • Possibilità di interrompere l'aggiornemento periodico direttamente dall'interfaccia senza dover per forza killare il service in background
  • Possibilità di controllare anche manualmente dal programma la presenza di notifiche su Ludomedia.
  • Avvio automatico del service in background all'avvio di Android
  • Utilizzo delle notifiche di sistema Android per avvertire l'utente di nuove notifiche disponibili su Ludomedia
  • Gestione degli errori di connessione/accesso a Ludomedia con conseguente auto-blocco (per evitare nuovi fallimenti) e notifica all'utente di intervenire
  • Programmato seguendo tutte le linee guida della documentazione ufficiale di Google (leggere paragrafo qui sopra per maggiori dettagli) in modo da cercare di ridurre al minimo il consumo di risorse e batteria.

La procedura di installazione è la classica per ogni APK non proveniente dal Play Store. Proprio per questo vi riporto quella che avevo illustrato per VVVVIDroid visto che, appunto, è la medesima per tutti gli APK (cambia solo il nome del programma):

  1. Attiva l'installazione di applicazioni da sorgenti sconosciute nel tuo dispositivo: vai in Impostazioni e cerca l'opzione Sorgenti (o Origini) sconosciute (in alcuni dispositivi è nella scheda Applicazioni, in altri nella scheda Sicurezza), quindi assicurati che sia attiva come da immagine:


  2. Direttamente dal browser web del tuo cellulare scarica il file APK dal link che puoi trovare qui a destra in questa stessa pagina:


  3. A download terminato ti verrà mostrata una notifica dal tuo browser web:


  4. Clicca sulla notifica e dalla finestra che apparirà scegli la voce Installa:


  5. In pochi istanti l'app sarà installata e pronta per essere avviata:


  6. Potrai sempre avviare l'app dal menù del tuo dispositivo come qualsiasi normale app installata dal Play Store:


Di seguito potete vedere alcuni screenshot dell'app e del suo funzionamento (cliccate su di essi per visualizzarli a dimensioni reali):

  • Al social network di Ludomedia e alla sua community.
  • A Google per la libertà e facilità con cui permette di programmare su Android.
  • Alla mia ragazza per la sua infinita pazienza.