2012-02-07 3 views
6

私は現在開発されているアプリケーションで、バックグラウンドで実行できるように現在は「位置情報ベース」として設定されています。ユーザーが動いたときにそれをするために必要なことは、私が必要とするトリックではありません。 いくつかの検索の後、私はこのアプリケーションが場所変更のイベントでのみコードを実行することを知った、タイマーは10分後に任意のコードを実行することはできません。XMPPフレームワーク - バックグラウンドで接続された位置情報アプリケーション

私のアプリは、バックグラウンドではXMPPに50分間ほど接続したままで接続を切断します。私はアプリケーションが決して切断されないようにしたい、私はフレームワークを見たが、私はこの動作を修正する場所を見つけることができません。あなたは "indefinetly"に接続したままにすることが可能かどうか知っていますか?もしそうなら、どの設定をxmppframeworkで変更する必要がありますか?

おかげ

[EDIT] 50minsユーザがまだXMPPに接続されているが、それはconectedたXMPPRoomsの切断だ後。 別の実行では、3時間接続されていたが、iPhoneが接続されていない時間は一貫しているようだ。

+0

XMPPRoomsとの接続が切断されている場合は、バックエンドで維持されているセッションが50分持続するセッションと関連する可能性があります。 – tipycalFlow

+0

私は自分のサーバーを次のように設定しました:_アイドル状態のクライアントを切断しないでください._ どのような設定を意味していますか? – subharb

+0

私は部屋のセッションを、それらがユーザーセッションと異なる場合は意味しました。編集中にユーザーセッションは維持されていても、XMPPRoomsは切断されていると述べました。 – tipycalFlow

答えて

0

アプリケーションがキープアライブメッセージを送受信できるようにするには、VoIPアプリケーションであり、VoIPソケットを使用する必要があります。

  1. 、アプリケーションのInfo.plistファイルにUIBackgroundModesキーを追加しますApple's Documentationから。このキーの値をvoip値を含む配列に設定します。
  2. VoIP用にアプリのソケットの1つを設定します。
  3. バックグラウンドに移動する前に、setKeepAliveTimeout:handler:メソッドを呼び出して、定期的に実行されるハンドラをインストールします。あなたのアプリはこのハンドラを使ってサービス接続を維持することができます。ソケットとして

NSInputStreamとNSOutputStream:ストリームにNSStreamNetworkServiceTypeプロパティを追加する方法:forKey:ココアストリームについて、のsetPropertyを使用します。このプロパティの値はNSStreamNetworkServiceTypeVoIPに設定する必要があります。

関連する問題