2016-03-30 13 views
0

PusherまたはPubNub(ウェブソケット)を使用してiOSチャットアプリケーションを実装しようとしています。モバイルアプリがバックグラウンドにあるときのWebソケットメッセージ配信

質問:iOSアプリがバックグラウンドのときにメッセージ配信はどのように機能しますか?

私は、Websocket実装がリアルタイムメッセージングを提供し、メッセージをキャッシュしないことを理解します。 アプリケーションがバックグラウンドのときにソケット接続が切断されるため、メッセージが失われますか?

「はい」の場合、失われたメッセージはどのように回復されますか? 1つのアイデアは、アプリケーションがフォアグラウンドになるたびに状態リフレッシュプロトコルを実装することです。

答えて

0

回答:そうではありません。

iOSアプリがバックグラウンドの場合、あなたは不運です。アプリがバックグラウンドにあるときに接続を開いたままにする正式な(そしてAppleが認可した)方法はありません。フォアグラウンドでそれを保持するためにサイレントオーディオトラックを再生するようなハッキングがありますが、アップルはそのようなハッキングを承認しません。アプリをフォアグラウンドに戻して再接続できるようにするには、APNSを使用してオフラインメッセージを送信する必要があります。

WSスタンダードがキャッシュに対処していないことは100%正しいことです。それはあなたのアーキテクチャの別のサブシステムによって実行されなければなりません。

Kaazing Gateway(公開:私が働いている会社)には、送信された最後の値をキャッシュするメッセージングゲートウェイの機能があります。クライアントが再接続すると(クライアントの自動再接続)、その値が表示されます。

0

PubNubは、メッセージ・リカバリオプション]

あなたがPubNub(私が働いている会社)に言及した

を逃し、@FrankGが述べたように、あなたは(インターネットに接続され、そのため滞在、バックグラウンドでアプリケーションを実行するために、アップルからの許可がない限り、 PubNub)、あなたはリアルタイムでどんなメッセージも受け取りません。

アプリがバックグラウンドで(アイドル状態/実行中ではない)、完全に実行されていない状態(キル状態)の間は、PubNub's Mobile Push Gatewayを使用してAPNSプッシュメッセージを受信できます。

アプリを再度アクティブにすると、PubNubは購読していたチャンネルのconfigured to automatically retrieve missed messagesになる可能性がありますが、これは短時間の接続解除には適しています。

オフラインで長時間使用する場合は、Storage & Playbackを有効にして、必要なすべてのチャンネルのうちthe historyForChannel API to fetch all the missed messagesを使用できます。

関連する問題