22

私は、Web、Android、およびiOS用のチャットシステムを開発しています。私の研究を行うと、GCMとAPNSがプッシュ通知をどのように処理するかについての違いが見つかりました。プッシュ通知またはSocket.io ?,または両方?

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

私は、iOSとAndroidの両方で同じ方法で動作するシステムを作成したいと思っていました。それはSocket.ioを見つけたときのことです。 Socket.ioは、私のデバイスにデータを送信する自由を(iOSかAndroidかにかかわらず)デバイスが表示するかどうかを決定するようにします(ユーザーの更新、新しいメッセージ、招待状、または他の多くの「イベント」)。しかし、私の研究をして、私はSocket.ioの使用についていくつかの問題を見つけました。デバイスはソケットに接続して情報がクライアントとサーバーの間に流れるようにする必要がありますが、現実世界のスマートフォンはいつも異なるネットワークに接続して切断し、ソケット接続を切断します。また、バックグラウンドで接続を開くことによって、サーバとクライアントの間にピンポンが存在し、接続がまだ開いていることを確認し、それがメガを消費することになります(私の国では、私たちはまだ定額制ではありません)、またベテリの生活をしています。その消費が重要かどうかはわかりません。

ウェブ側では、Socket.ioで動作する必要がありますので、問題ありません。

最後に、両方の選択肢の賛否両論を知って、私は両方のオプションを混在させることができ、それが最良の選択肢になる可能性があることを発見しました。たとえば、アプリが開いているときはSocket.ioを使用し、終了したときはAPNSまたはGCMを使用します(デバイスのOSによって異なります)。しかし、それはよい習慣ですか?あるいは、両方を混合するのではなく、なぜ1つの解決策をとるのが良いでしょうか?

お読みいただきありがとうございました。

+2

ここではバランスが取れなければならないので、これは大きな疑問です。私は実際にアプリで通知を作成しているので、これを読んだ後に実際に触発されています。最初にnode.js socket.ioを使ってオンラインになっているかどうかを検出します。その場合は、socket.ioを使用して通知し、そうでなければandroid/iosの通知を使用します。ありがとう! –

+0

@PDKは両方を使用して終了しましたか? – ralphgabb

+1

@ralphspoon私は両方を使用しなければならなかった、あなたが正しいことをしたい場合は最善の方法です。しかし最終的には、システムを扱うのが面倒だったので、私はFirebaseに移りました。 – PDK

答えて

8

賛否両論を正確に記載しました。両方を使用すると、メンテナンスの面でより多くの作業が可能になり、複雑さも増しますが、柔軟性が向上します。それはあなたの要件に沸騰します。

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

+0

あなたの答えをありがとう、私は正しい方向に向かっていると聞いて良いです。 – PDK

関連する問題