2017-12-04 6 views
0

Ich habe eine Android-App, Instant Messaging ist eine der wichtigsten Funktionen. Zur Implementierung der IM-Funktion verwenden wir unseren Push-Server basierend auf websocket.Wie kann man eine Internetverbindung aufrechterhalten?

Für meine App habe ich einen PushService, in diesem Dienst, ich eine websocket Verbindung, die mit dem Push-Server verbindet und Push-Nachricht erhalten.

Der Code funktioniert gut, wenn App im Vordergrund ist (z. B. funktioniert gut, während der Benutzer mit der App spielt), aber wenn die App nicht im Vordergrund ist, hört es nach einer Weile (etwa 1 Minute) auf, Push-Nachrichten zu empfangen. Gleiches Problem, wenn der Benutzer den Bildschirm ausschaltet.

Ich habe eine Wiederholungsaufgabe mit AlarmManager, die den websocket Verbindungsstatus überprüft, wenn es nicht im Status verbunden ist, dann versuchen Sie erneut zu verbinden, um wieder auf normal zu erhalten Push-Nachrichten.

Dies funktioniert gut unter Android M, zum Beispiel auf den Android 5-Handys, vermisst es selten Push-Nachrichten. Aber auf Android M/Android N funktioniert es nicht so gut wie auf Android 5.x. Ich kann bestätigen, dass der Dienst selbst läuft, überprüfen Sie die "laufenden Dienste".

Ich habe festgestellt, dass von Android M startet, stellt Android Doze und Standby-Modus, nicht sicher, ob sie verwandt sind, wenn ja, wie kann ich die App weiter arbeiten lassen? Auf meinem Telefon funktionieren die WeChat und Skype Android App gut, was ist der Mechanismus dahinter? Ich weiß, FCM ist die beste Lösung, aber ich kann das nicht für Kunden in China verwenden, also brauche ich eine Umgehungslösung.

Edit: Ich hatte vorgeschlagen, einen Vordergrund-Service zu verwenden, aber PM mag nicht das Benachrichtigungsfeld immer in der Statusleiste angezeigt wird, die er sauber halten will.

Alle Ratschläge werden geschätzt!

+0

Vielleicht brauchen Sie einen Vordergrund Dienst zu registrieren. Diese vorherige Frage kann Ihnen helfen: https://stackoverflow.com/q/46780547/2012017 –

+0

@JustinHeath, Vielen Dank für Ihren Kommentar. Ich hatte PM vorgeschlagen, den Vordergrunddienst zu verwenden, wurde aber abgelehnt, da er kein Benachrichtigungstray mag, um die Statusleiste sauber zu halten. (Ich bearbeite meine Frage, um den Vordergrund zu vermeiden) –

Antwort

0

Ich weiß nicht über WeChat oder Skype-Kommunikation, aber ich kenne die WhatsApp mit Ihrer eigenen Service-Benachrichtigung mit der gleichen Technologie von FCM. Sie mit dem Jaber Server mit Geräten der XMPP-Kommunikationsprotokolle

link

+0

Danke. Scheint das, was Sie erwähnt haben, mehr über die serverseitige Implementierung? –

Verwandte Themen