0

次のように、アプリ用にいくつかのWebサービスを作成しました。1.ホストデバイスがその情報をWebサービスに送信できるようにし、SQLデータベースに保存します。2.クライアントデバイスがSQLデータベースの情報に基づいて近くのすべてのデバイスを表示できるようにします。

クライアントが接続するデバイスの1つをクリックできるようにしたいと思います。これにより、2つが何らかの形でリンクされます。私が持っている質問は、現在、私のWebサービスはデバイスの要求に対する応答のみを送信できるということです。私が欲しいのは、ホストデバイスがボタンを押すと、その情報がWebサービスに送信され、Webサービスが以前に接続したクライアントに情報を送信することです。

Webサービスから何も要求していないデバイスに情報を送信するにはどうすればよいですか?

背景情報:iphone側で情報を送受信するためにphpベースのWebサービスとASIHTTPRequestを使用しています。

4

2 に答える 2

1

99%の場合、ポーリングを使用することになります。メッセージを受け取るアプリケーション(電子メール、Words with Friendsなど)を考えてみてください。彼らは全員サーバーに電話して、「私に新しいメッセージはありますか?」と尋ねます。アプリケーションに適した頻度を把握する必要があります。

ほぼリアルタイムの通信が必要なまれなケースでは、サーバーとして実行するようにアプリを設定する必要があります。ここを参照してください:iPhoneをサーバーとして機能させるためにどのクラスを使用しますか?。明らかに、これのバッテリーと帯域幅のコストははるかに高くなります。

于 2012-04-18T02:41:38.460 に答える
0

持続的接続を開いたままにしておくこともできますが、ネットワークの状態が変化すると(ネットワークからネットワークへの移動、セルラーのオン/オフなど)、これは機能しなくなります。

クライアントはサーバーを高速な間隔でポーリングできますが、これによりサーバーに望ましい負荷よりも高い負荷がかかるだけでなく、さらに重要なことに、クライアントデバイスのバッテリーが消費されます。(セルラー無線の最小電源投入間隔は、ネットワークトランザクションがどれほど小さいかに関係なく、かなり長いため、3Gでは2倍になります。)

かなり散発的な更新について話している場合(リアルタイム更新では、TCPセッションが強制終了された場合に適切なエラー処理と再接続を伴う、上記の最初のオプションが実際に必要になります)、通知ペイロードが一貫している場合は、Appleプッシュ通知を検討することができますAPNSガイドラインを使用します。彼らはあなたが説明するのとほぼ同じように振る舞うでしょう。

于 2012-04-17T22:38:47.860 に答える