Abbiamo appena iniziato a creare il nostro sistema di notifica push (per esigenze del cliente) per Android e trovato Eclipse Paho (http://www.eclipse.org/paho/). Inutile dire che questo progetto è davvero eccitante.Come inviare il ping utilizzando il client Eclipse Paho MQTT?
Il problema con Android è, se la CPU è in stato di sospensione, il client MQTT potrebbe non avere la possibilità di inviare ping al suo intervallo impostato. La soluzione alternativa è usare AlarmManager per riattivarlo e portare a termine il lavoro. La documentazione Android dice:
Il Gestore allarme contiene un blocco scia CPU finché il metodo OnReceive() del destinatario dell'allarme è in esecuzione. Ciò garantisce che il telefono non si addormenta fino al termine della gestione della trasmissione. Una volta che onReceive() ritorna, Alarm Manager rilascia questo wake lock. Ciò significa che il telefono in alcuni casi verrà interrotto non appena viene completato il metodo onReceive().
http://developer.android.com/reference/android/app/AlarmManager.html
ho bisogno di essere sicuro che ho potuto inviare il comando ping all'interno di tale metodo OnReceive() mentre la CPU ha PARTIAL_WAKE_LOCK, quindi stavo cercando un modo per inviare manualmente ping al server, ma sembra il client non espone alcun metodo di questo tipo. Mi sto perdendo qualcosa? Oppure, qual è la soluzione qui tranne la pubblicazione del mio "messaggio ping"? Voglio evitare che a causa di:
- ingrandita della testa
- Ci assicuriamo che i client Android sono abbonati solo, può essere con ACL mosquitto. Non saranno autorizzati a pubblicare messaggi.
Durante questa operazione, hai notato che il servizio MqttService si interrompe se si allontana l'app dalle app recenti? Dopodiché, non vengono ricevuti messaggi e si è disconnessi dal broker. Come (se lo hai) hai risolto questo problema? –