1

XMPPに基づいてiOSアプリを構築しています。XMPPFrameworkを介してクライアントからXMPPメッセージを送信すると、デリゲートのメッセージが即座に呼び出されていることがわかりました。

- (void)xmppStream:(XMPPStream *)sender didSendMessage:(XMPPMessage *)message

しかし、私のメッセージにはたくさんのデータが含まれているので、それほど速く送信することはできないと確信しています。次に、ユーザーはアプリをバックグラウンドに置き、メッセージは失われます。どうすればこの問題を解決できますか?

4

1 に答える 1

0

のようだ

- (void)xmppStream:(XMPPStream *)sender didSendMessage:(XMPPMessage *)message;

すぐに呼び出されます、本当ですが:

アプリケーションがバックグラウンド状態になっている場合は、最大10分の時間をリクエストして、リクエストが確実に終了するようにすることができます。

背景の状態に関する記事:http://www.macworld.com/article/1164616/how_ios_multitasking_really_works.html

Apple Docs:http ://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

XMPPStreamには、YESに設定できるenableBackgroundingOnSocketプロパティがあります。

/**
 * If set, the kCFStreamNetworkServiceTypeVoIP flags will be set on the underlying CFRead/Write streams.
 * 
 * The default value is NO.
**/
@property (readwrite, assign) BOOL enableBackgroundingOnSocket;

ここで説明するように、このトリックを使用してVoIPバックグラウンドモードを「偽造」すると、AppStoreで問題が発生する可能性があることに注意してください。

iphoneXMPPアプリの実行バックグラウンド

于 2012-08-22T09:55:08.680 に答える