2

現在、アプリをASIHTTPRequestの使用からAFNetworkingに移行しています。同期リクエストは可能であれば回避する必要があることはわかっていますが、私のアプリでは、同期リクエストを使用する場所が1つしかありません。アプリデリゲートapplicationDidEnterBackground()メソッドでは、HTTPリクエストを実行してデータをクエリし、アプリがバックグラウンドに移行したときにアプリケーションバッジ番号を設定する必要があります。非同期で実行する場合、メソッドがドロップアウトし、HTTPリクエストが完了する前にアプリケーションが一時停止されるため、これが機能することはめったにありません。ASIHTTPRequestでは、[request startSynchronous]メソッドを使用しました。これは、HTTPリクエストが毎回100%完了し、バッジが正しく更新されたことを意味します。AFNetworkingには明確な同期オプションがないことがわかりました。それで、同期的に使用できる方法、または代替ソリューションを誰かが提案できますか?

4

1 に答える 1

6

これを行う方法を見つけました-AFHTTPRequestOperation派生物の1つを使用してメソッドがあります-setShouldExecuteAsBackgroundTaskWithExpirationHandler:OSがアプリを一時停止する前に操作を完了するための余分な時間を与えます。だから私のコードは:

[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:nil];
[operation start];

これはまさに私が必要としていたものであり、私の問題を解決しました。

ジョナサン

更新:ボブが指摘したように、このメソッドを使用すると、実際には同期的に操作が実行されませんが、同期メソッドがない場合の私の場合は理想的なソリューションでした。

于 2012-10-29T17:05:02.100 に答える