2012-02-08 16 views
4

(以下の質問は一般的なモバイルプラットフォーム(iPhone、Android、Blackberry))プッシュ通知を使用するモバイルチャット機能、何かをプッシュする必要がある場合

私たちは既存のアプリケーションにチャット機能を統合しています。私はチャットメッセージを追跡するために、.Net WebサービスとSqlデータベースを使ってシステムを設計しました。チャットウィンドウが開いているときは、これまでのところうまく動作しています。

現在、チャット画面を表示していないときに新しいメッセージを通知する方法が必要です(アプリがフォアグラウンドにないか、アプリの別のセクションにある(チャットではない画面)。明らかに

、プッシュ通知は、ここで完璧になるが、私はプッシュを送信する必要があるとき、私はよく分からない。

メッセージを送信するクライアントは、他の男が見ているかどうかを知っているだろうかチャット画面?メッセージを1つずつ送信するだけで、受信デバイスがウィンドウをポップアップするか、noficationバーに何かを表示する必要があるかどうかを判断する必要がありますか?

メッセージが送信されるたびに押すことは過度のようです。これはどのようにして正常に行われますか?

すべてのアイデアは非常に高く評価されます。

ありがとうございました。

+0

答えはプラットフォームによって大きく異なります。アンドロイド、iPhone、およびブラックベリーをカバーするソリューションはありません。クライアントコードにはそれぞれ異なる制約があるためです。 –

答えて

4

まず、サーバは、さまざまなチャットクライアント間でやりとりされるすべてのメッセージのブローカとして機能することに注意してください。ここでは、これは仕事ができる方法は次のとおりです。

  • ユーザーAB
  • メッセージがサーバーに送信されます、ユーザーへのメッセージを開始します。
  • サーバーは、このメッセージがユーザーB用であると判断します。
  • サーバーはプッシュ通知を開始し、ユーザーBにメッセージを配信します。

なぜ今すぐチャットメッセージをプッシュする必要がありますか?あなたのユーザーが通知を受ける唯一の方法は、新しいメッセージのためにサーバーにポーリングすることです。(あなたが決める任意のレートで)一定のポーリングが原因限られたリソース(バッテリー、ネットワーキングなど)プッシュ通知シナリオで

にモバイル分野における非常に悪いです、それが処理するアプリケーション次第ですユーザーがであるかどうかのロジックは、新しいメッセージを受信するとに通知されます。これは、ユーザーBがユーザーAから新しいメッセージを受信したときに、Bに通知するかどうか(つまり、アプリをフォアグラウンドにするかどうか)を決定することになります。どちらのシナリオでも、には、ポーリングの代わりにプッシュ通知を使用することがになります。

ユーザーBは、ユーザーAのアプリケーション(アプリケーション)がバックグラウンドにあることを必ずしも知っている必要はないため、そのロジックを適切に(アプリケーション内で)処理する必要があります。

+0

返事をありがとう。だから私はそれを取ることは、新しいメッセージがユーザに利用可能になるたびに必要であり、デバイスはそれがどのように処理されたかを分類する必要がある。それは私が知る必要があったすべてです、ありがとう。 – PaulG

+0

@PaulGよろしくお願いします! (将来の読者のために)それは必要ではありませんが、あなたのユーザはそれを感謝します(バッテリ寿命など)。 –

+1

すべての単一メッセージで通知を押すことはお勧めできません。 Apple docsから:「通知を送信すると、デバイスが通知を受け取るためにネットワークにアクセスする必要があるため、デバイスのバッテリ寿命に負の影響を与えます。」 – heroandtn3

0

アプリケーションがフォアグラウンドでない場合、プッシュ通知は通常、アプリケーションに適用されます。これは、サーバーから新しいトランザクションを処理するためにアプリケーションを起動する方法です。基本的には、クライアントがバックグラウンドで実行されており、新しいメッセージがサーバーからフェッチされる準備ができている場合、プッシュ通知が行われます。新しいメッセージが取得されない限り、他のメッセージがサーバーに到着した場合、プッシュ通知をアプリケーションに送信する必要があります。

ユーザーがアプリケーションの他の画面を表示していてもアプリケーションがまだ実行されている場合、プッシュ通知は必要ありません。ただし、スレッドがサーバーへの接続を処理していることが重要です。これはサーバーからのトランザクションを「辛抱強く」待っています。

1つの質問、メッセージングにはどのプロトコルを使用していますか?.. OMA IMPSプロトコルですか?

関連する問題