L'applicazione è in PhoneGap. Sto usando la funzionalità di notifica push con https://github.com/marknutter/GCM-CordovaGCM Cordova Push Notification non funziona quando l'app non è in esecuzione
Ho implementato l'intera funzionalità e ha funzionato fino a ieri. Quando ho controllato l'app lo scorso giorno, la notifica push non funziona quando l'app non è in esecuzione. Tutte le notifiche vengono ricevute sul mio dispositivo, facendo clic sul messaggio si apre l'app.
Ma i controlli non vengono ricevuti nella parte javascript dove viene gestita la notifica del messaggio.
codice dal file GCMIntentService.java:
JSONObject json;
json = new JSONObject().put("event", "message");
json.put("message", extras.getString("message"));
json.put("link", extras.getString("link"));
Log.v(ME + ":onMessage ", json.toString());
GCMPlugin.sendJavascript(json);
// Send the MESSAGE to the Javascript application
Questo codice funziona quando il messaggio ricevuto. Ma a quel tempo, l'App non è in esecuzione.
Quando faccio clic sul messaggio di notifica, l'app si apre come al solito, non registrando l'evento del messaggio; quindi non ottenere il controllo in JavaScript per gestire la notifica push.
Codice in CORDOVA_GCM_script.js è disponibile all'indirizzo:
https://github.com/marknutter/GCM-Cordova/blob/master/assets/www/CORDOVA_GCM_script.js
Nota: Funziona bene quando l'applicazione è in esecuzione.
EDIT: La notifica corre a volte. JavaScript sta ottenendo l'evento del messaggio in modo casuale.
EDIT 2:
ho sicuramente conoscono il problema.
Dal file java, attiva il codice javascript quando si apre l'app facendo clic sul messaggio di notifica push. Ma a quel tempo, la WebView non è caricata, quindi non è in grado di eseguire lo script (che è un trigger di evento). Questa è la condizione, chiunque utilizzi il plug-in sperimenterà lo stesso. C'è qualche soluzione o una soluzione per questo?
Sto facendo qualcosa di sbagliato?
il punto di notifica push è che venga eseguito in background quando la vostra applicazione non è in esecuzione. Quindi, se la tua app non è in esecuzione e in questo caso, essendo una WebView, non penso che riceverà nulla dal lato nativo dal momento che la JVM non esegue WebView in background che spiega perché la tua parte JS non lo fa t eseguire quando l'app non è in esecuzione. È necessario considerare l'archiviazione dei dati di notifica in preferenze condivise o qualcosa del genere quando si riceve la notifica push; esamina ogni volta che la tua app viene avviata in modo da poter reagire. – praneetloke
Questa è un'implementazione comune e non ho riscontrato problemi segnalati da altri, che mi confondono .. – IvenMS