web-dev-qa-db-ja.com

リアルタイムチャットアプリを実装するためのプッシュ通知とWebソケットの違い

IPhone用のリアルタイムチャットアプリの作成を検討しています(ただし、この質問はAndroidおよびその他のデバイスにも適用されます)基本的に、アプリが開いている間もアプリがリアルタイムメッセージを受信できるようにしたいiPhoneの「メッセージ」アプリのように、閉じている間と同じです。

それが閉じているときは、APNSなどのネイティブプッシュ通知サービスを使用できます。また、アプリが開いているときは、独自のWebSocketサーバーを実行したり、PubNubやPusherなどのサードパーティプロバイダーを使用したりできます。

それから私は疑問に思いました:アプリが開いている間も閉じている間も、リアルタイムメッセージングをAPNSに完全に依存できないのはなぜですか?これは1つのプッシュサーバーによって駆動されるため、よりクリーンなソリューションのように感じられます。誰かが私を啓発できますか?ありがとう。

30
Vlad

APNSは100%信頼できません。ほとんどの場合ですが、100%ではありません。また、提供する専用サービスほど迅速ではありません。場合によっては、プッシュメッセージが到着するまでに1分以上かかることがあります。あなたはこれらを考慮し、あなたが思いつくどんなデザインでもそれを考慮に入れる必要があります。これらの制限に耐えられる場合は、APNSを使用してクライアントを更新できます。さらに、iOS7では、アプリがバックグラウンドで起動し、データを取得してそのUIを更新し、ユーザーに最新のアプリを表示できます。

パフォーマンスについて言えば、多数のオープン接続を処理し、それらに同時にサービスを提供することは、思ったほど簡単ではないため、リソースによっては、AppleのAPNSよりも優れたサービスアップタイムを提供できない場合があります。上記の制限は、真実ではありますが、実際に聞こえるほど悪くはありません。

とにかくプッシュサポートを実装する必要があるため、APNSのみを実装し、これがあなたとあなたのクライアントを満足させるかどうかを確認するのが最善だと思います。サンドボックス(デバッグ)APNSサーバーは通常の実稼働APNSサーバーよりも低速であることを忘れないでください。リリースバージョンでテストして、APNSのみに移行することによる実際のパフォーマンスへの影響を確認してください。将来、提供されたサービスでは不十分であることに気付いた場合は、追加のサービスのみを実装できます。

25
Leo Natan