web-dev-qa-db-ja.com

プッシュ通知またはSocket.io ?、または両方?

AndroidおよびiOS。Webのチャットシステムを開発しています。調査を行うと、GCMとAPNSがプッシュ通知を処理する方法に違いがあることがわかりました。

GCMを介してプッシュ通知をAndroidデバイスに送信した場合、デバイスはユーザーに通知するかどうか、または必要でない場合はユーザーに通知しません。ユーザーに通知する必要のないデータの更新である可能性があります一方、APNSを介してiOSデバイスにプッシュ通知を送信した場合、デバイスは通知を表示するかどうかを決定できませんまた、iOSデバイスが通知を受信する場合、通知データにはユーザーに表示される文字列が含まれている必要がありますAndroidでは、デバイスはその文字列を生成できます。

そのため、iOSとAndroidの両方、およびWebサイト(APIベース)でも同じように機能するシステムを作成したかったのです。 Socket.ioを見つけたときのことです。 Socket.ioは、デバイスに変更を表示するかどうか(ユーザーの更新、新しいメッセージ、招待状など)を決定するように、デバイスにデータを送信する自由を与えます(iOSまたはAndroidに関係なく) 、または他の多くの「イベント」)。しかし、調査を行ったところ、Socket.ioの使用に関していくつかの短所が見つかりました。クライアントとサーバーの間で情報が流れるようにデバイスをソケットに接続する必要がありますが、実世界のスマートフォンは常に異なるネットワークに接続および切断し、ソケット接続を切断します。また、接続を開いておくと、バックグラウンドでサーバーとクライアントの間にピンポンがあり、接続がまだ開いていることを確認し、最終的にメガを消費します(私の国では、使用するメガごとに支払います、まだ定額ではありません)、そしてバタリーライフもあります。その消費が重要であるかどうかは定かではありません。

Web側では、Socket.ioで動作する必要があるため、まったく問題ありません。

最後に、両方の選択肢の長所と短所を知って、私は両方のオプションを混ぜることができ、それが私の最良のオプションになるかもしれないことを発見しました。たとえば、アプリが開いているときはSocket.ioを使用し、閉じているときはAPNSまたはGCM(デバイスのOSに応じて)を使用します。しかし、それは良い習慣ですか?それとも、両方を混合するのではなく、1つのソリューションだけで固執する方が良いでしょうか?

これを読んでお時間を割いてくださり、お返事ありがとうございます。

41
PDK

長所と短所を正確にリストしました。両方を使用すると、メンテナンスに関してより多くの作業が可能になり、より複雑になりますが、必要な柔軟性が得られます。必要に応じて煮詰めます。

また、iOSバックグラウンドプロセスでsocket.io接続を開くのは面倒です。 iOSは、Androidよりもバックグラウンドで実行できるタスクがはるかに制限されています。

12
bolav