2017-12-04 16 views
0

私はAndroidアプリを持っていますが、インスタントメッセージは重要な機能の1つです。 IM機能を実装するには、websocketに基づくプッシュサーバーを使用します。WebSocketの接続を維持するにはどうすればいいですか?

私のアプリでは、PushServiceがあります。このサービスでは、プッシュサーバーに接続しプッシュメッセージを受け取るwebsocket接続を確立します。

コードはフォアグラウンドでは効果的です(つまり、ユーザーがアプリを操作しているときにうまく機能します)が、フォアグラウンドでないとプッシュメッセージの受信を停止します(約1分)。ユーザーが画面をオフにすると同じ問題が発生します。

私はAlarmManagerでリピートタスクを設定しました。これは接続状態でない場合はwebsocketの接続状態をチェックしてからプッシュメッセージを受信するために接続を再試行します。

これは、Android携帯電話上で5例えば、うまくアンドロイドMの下に動作しますが、それはあまりプッシュメッセージを見逃しません。しかし、Android M/Android Nでは、Android 5.xほどうまく動作しません。私は、サービス自体が実行し続けていることを確認できます。「実行中のサービス」からチェックしてください。

私は、Android Mから始まることに気付きました、Androidのは、それらが関連しているかどうかわから、ドーズとスタンバイモードにしませ紹介し、そうならば、どのように私はアプリが再び作業を続けることができますか?私の電話では、WeChatとSkype Android Appはうまくいきますが、その背後にあるメカニズムは何ですか?私はFCMが最善の解決策だと知っていますが、私はそれを中国の顧客に使うことはできないので、回避策が必要です。

編集:私はフォアグラウンドサービスを利用することを提案していたが、PMはいつも、彼はきれいにしておきたい、ステータスバーに表示されている通知トレイが好きではありません。

アドバイスをいただければ幸いです!

+0

道具でXMPP通信プロトコルをジャベル・サーバを使用して。この前の質問はあなたを助けるかもしれません:https://stackoverflow.com/q/46780547/2012017 –

+0

@JustinHeath、あなたのコメントをありがとう。フォアグラウンドサービスを使用するPMを提案しましたが、ステータスバーをきれいに保つために通知トレイが気に入らないので、拒否されました。 (フォアグラウンドを使わないように質問を編集します) –

答えて

0

は私が微信またはSkypeの通信については知らないが、私はあなたがFCMの同じTECNOLOGYとサービス通知を所有して使用してのWhatsAppを知っています。 彼らはおそらく、あなたは、フォアグラウンドサービスを登録する必要があり

link

+0

ありがとうございました。しかし、あなたが言ったように、サーバー側の実装についての詳細は何ですか? –

関連する問題