2011-12-29 16 views
1

iOS 4を実行しているiOSデバイスがスリープ状態になると(ユーザーが右上のボタンを押したとき、または画面が右上のボタンを押したときのいずれかで)applicationWillResignActiveを呼び出していることがわかりますiOS 5を実行しているデバイスではapplicationDidEnterBackgroundが呼び出され、着信テキストメッセージ/電話などのアプリケーション呼び出しや、通知バーをプルダウンする(つまり、一時的な出来事)。デバイスがスリープ状態になると、iOSバージョンはapplicationWillResignActiveを呼び出し、applicationDidEnterBackgroundを呼び出します。

しかし、スリープ状態になるiOSデバイスは非常に短いイベントではありません(非常に長いイベントかもしれません)。その場合、現在のサーバーコールをキャンセルしたいと思います。非常に短い中断のために(したくない)してください。

私の質問は、アプリケーションが他のより短い中断(つまりテキストメッセージ)とは対照的に、スリープ状態になったことを通知する方法がありますか、その代わりに誰かがiOS彼らは睡眠に行くときに5デバイスの呼び出し対4実際には正しいですか?

これは私がapplicationWillResignActiveで、今持っているものです。

if ([[[UIDevice currentDevice]systemVersion] hasPrefix:@"4"]) { 
     //cancel server call 
    } 

これは、私の知る限り正常に動作しますが、私は、デバイス上のiOSバージョンを確認する方法について読んだすべてのスレッドがと言っています可能であれば、そのコードを使用すべきではありませんし、代わりにあなたがしようとしているものの正しいセレクターを呼び出す必要があります。しかし、私はそれがこの場合どのようになるか分かりません。

+0

IF([[[UIDevice currentDevice] systemVersion]に従ってFloatValue] <4.0)iOS4orLater = FALSE。 はOSのバージョンを確認するために使用します。 – amergin

+0

あなたの答えはありませんが、デバイスがスリープ状態になったときにiOS5がアプリをバックグラウンドに落としても問題があることを確認できます.ios4とios3では続けることができます。 – amergin

+0

バグとして提出されましたバグID#10699011 – amergin

答えて

0

この投稿には、Understanding iOS 4 Backgrounding and Delegate Messagingという名前のデリゲートメッセージが送信されたときの優れた説明があります。特に、iOSのバージョンによって、applicationWillResignActiveとapplicationDidEnterBackgroundが送信されるタイミングを説明しています。

私はそれがあなたを助けてくれることを願っています。

乾杯

+0

これは確かに良い記事ですが、実際には問題には触れません.iOS 4で何が起きているか説明しています。 iOS 5では更新されていません。 – Ginny

関連する問題