0

私はこれが数回出てくるのを見ましたが、私は本当に明確な答えを見ていません...

iOS 5以降、私のアプリケーションでは、ユーザーが画面をロックすると、ロック画面で約20秒後にNSTimerの起動が停止するという問題が発生しているようです。これにより、ユーザーが画面をロックした場合にタイマーが起動するたびに音を鳴らす私のアプリは無意味になります。

これは、デバイスをiOS5にアップデートしてからのみ発生しました。

私の質問は、1。更新されたデバイスでこれと同じ機能を動作させるための回避策はありますか?2。ロックされている間にアプリが実行されない場合に悪いレビューを受け取らないための推奨されるアプローチは何ですか。

4

2 に答える 2

1

iOS5では、Appleは、「audio」、「location」、「voip」、「newsstand-content」、「external-accessory」、「bluetooth-central」など、より多くのバックグラウンドタスクモードを導入しました。アプリで使用できるモードを決定できると思います。リンクはhttp://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW24です。

于 2012-07-27T06:06:06.720 に答える
1

ユーザーが画面をロックすると、アプリは「非アクティブ」状態になります。これは、アプリをバックグラウンドに置くことと似ていますが、同じではありません。Appleのドキュメントには、「アプリはフォアグラウンドで実行されていますが、現在イベントを受信して​​いません。(ただし、他のコードを実行している可能性があります)」と記載されています。

ただし、非アクティブ状態に入った後、iPhoneをアクティブに保つために何かが実行されていない限り、iPhoneは完全にスリープ状態になります... NSTimerが起動するのを待つことは、明らかにこの基準を満たしていません。この前の質問には議論があります。解決策の1つは、タイマーが作動したときにサウンドを再生し、その間、iPhoneがスリープ状態にならないように、無音のサウンドを継続的に再生することです。ハックですが、少なくともこの場合、完全に醜いハックではありません。サウンドを再生するためにiPhoneをスリープ状態に保つためにサウンドを使用することには、一種の対称性があるからです。

以前にリンクされたコンテンツ長時間実行されるバックグラウンドタスクの実装に関するAppleのガイドライン
から:

バックグラウンドオーディオ
の再生オーディオを継続的に再生するアプリは(アプリがバックグラウンドで実行されている場合でも)、Info.plistファイルにUIBackgroundModesキー(値audioを含む)を含めることにより、バックグラウンドオーディオアプリとして登録できます。このキーを含むアプリは、バックグラウンドでユーザーに音声コンテンツを再生する必要があります。

これをアプリに実装していますか?そうでない場合は、それがあなたの問題です。

#2について:アプリの説明を更新して、画面がロックされた状態では機能しないことを示すことができますが、ユーザーが期待どおりに機能するようにすることをお勧めします。:)

于 2011-11-20T00:50:41.747 に答える