iOSチャットアプリケーションの設計、エンドユーザーへのメッセージの送信/中継

デザインの質問があります。特にiOS(iOS Chat Application)用のチャットアプリケーションの作成を担当していたとしましょう。話を簡単にするために、一度に1人の人としかチャットできないとします(グループチャット機能はありません)。

それでは、電話機Aから電話機Bにエンドユーザに直接メッセージを送信するにはどうすればよいでしょうか。

明らかに、いくつかのAPI呼び出しを含むWebサービス層があります。利用可能なAPI呼び出しの1つは startChat()です。チャットを開始した後、メッセージを送信するときは、もう一度非同期呼び出しを行います。それを sendMessage()とし、メッセージと一緒に文字列を渡します。 Webサービス層に送信されると、メッセージはデータベースに保存されます。

これが私が現在立ち往生している場所です。メッセージがWebサービス層に送信された後、メッセージをエンドユーザーに送信/中継するにはどうすればよいでしょうか。 Webサーバーがエンドユーザーにメッセージを送信して通知するか、または各クライアントが receiveMessage()メソッドを定期的に呼び出す必要があります。その情報?

最後に、メッセージを送信しようとしているユーザーがオフラインの場合をどのように処理できますか。エンドユーザーが信号のあるエリアに戻ったときに、パケットを確実に受信するにはどうすればよいでしょうか。

3
nl ru de

4 答え

Other users have suggested APNS but you should be aware that if you late r decide to port your application to Android and/or Windows Phone, this will be harder to achieve if you are tied to a platform-specific push API. There are several alternatives that are suitable for use on all 3 platforms listed in this stack overflow question: https://stackoverflow.com/questions/9801720/push-notifications-on-all-3-platforms-android-ios-windows-phone

2
追加された

APNSはこれを行うための最も明白な方法です。それはあなたが中央サーバーを必要とすることを意味します、そしてそれはあなたが期限切れのトークンを片付けることが期待されているようにそれはまたあるメンテナンスがあることを意味します。証明書の発行に関してはAppleへの登録もありますが、それほどストレスがありません。注意すべきことの1つは、比較的低い文字数制限です。

0
追加された

I've done something similar. iOS --(Sends request with message and id of recipient)--> Server --- Sends message over to recipient --> iOS

しかし、私は最終配信をするために通知を使いました。これは、誰がAPNSにリクエストを送信したのかを判断すると、サーバにデバイスのトークンが格納されていることを意味します。

0
追加された
私が言うことができる限り、それは基本的にIBM MQに似たキューマネージャです
追加された 著者 Aafaq Ahmad,
ええ、私はAPNSとその素晴らしいを調べました。基本的にあなたのためにパケットのキューイングと送信を行います。メッセージ配信用のTCP/IPのようなKinda
追加された 著者 WillyWonka,
確かにそれはちょうどUDPプロトコルの上に構築されており、そしてそれの派手なバージョンです
追加された 著者 WillyWonka,

このソリューションには何らかのクライアントIDが関係していると思います。それは簡単です、クライアントAはクライアントBのIDでメッセージをサーバーに送信し、サーバーはメッセージ(おそらくそれが読まれていないことを示すフラグ)を保存します。クライアントBが接続するたびに、未読メッセージがあるかどうかをサーバーに確認し、ある場合はポーリングします。

クライアントAがメッセージを送信している間にクライアントBが接続されている場合、サーバーはメッセージをクライアントBに直接配布する必要があります。

運の良さ

0
追加された