5

この質問は、このフォーラムの他のいくつかの本質のようです。アクティブな iPhone アプリケーションが非アクティブ状態になった後も (画面ロックでアイドル タイマーがキックするか、ユーザーがハードウェア ロック ボタン)。

ドキュメントには、アプリケーションが非アクティブである間は実行されているが、着信イベントはディスパッチされていないことが明確に記載されています (NDA について心配しているので、リンクを提供していません。それについてリラックスする必要がありますか? この投稿全体が違反ですか?ため息をつきます) )。

また、ユーザー「Ambr Str」による2つの回答は、タイマーコールバックを引き続き受信できることを直接述べており、それを実現するためのコードの断片を提供しています(私は新しいユーザーであるため、これにリンクできません.申し訳ありませんが、「iPhone がスタンバイ モードになると、iPhone アプリはどうなりますか?」という質問を検索して、答えを見つけてください)。

彼が提案するようにコールバックを作成しようとしましたが、アプリケーションが非アクティブになると、コールバックは起動しなくなります。

iPhone が接続されている間、アプリケーションが非アクティブになった場合 (アイドル タイムアウトまたはスリープ ボタンを押したために)、コールバックが引き続き発生することに気付きました - おそらくユーザーにバッテリーを携帯してもらう必要があります。それらと一緒に詰めてください;-)

4

2 に答える 2

2

この質問に対する適切な回答が Apple のフォーラムにあります。"Timer" と "Eskimo" (答えを教えてくれる親切な人) を検索してください。

簡単に言えば、アプリケーションが非アクティブになった直後に、電話機は実際にスリープ状態になります。これを防ぐ唯一の方法は、オーディオを再生する (またはバックグラウンド アプリケーションでオーディオを再生する) ことです。オーディオの再生中、電話はスリープ状態にならず、アプリケーションは引き続き実行されます。

ステイ アウェイク オーディオを再生することはハックであり、可能であれば実行しないことをお勧めします。私のアプリケーション(サイレント期間が散在するオーディオ再生を実行する)では、理想的ではないにしても、このアプローチは有効だと思います!

于 2009-05-22T11:31:22.527 に答える
0

アプリがあります。これには、組み込みの Web サーバーが含まれます。サーバーの電源が入っていて、デバイスの電源が入っている場合、自動スリープIFFを無効にするオプションを提供する予定です。そのため、UIDevice の batteryState プロパティを確認することを検討してください。したがって、 batteryState != UIDeviceBatteryStateUnplugged の場合は、アイドル タイマーを無効にしてください。(注: ドキュメントでは、シミュレーターでは UIDeviceBatteryStateUnknown が返されると書かれています。)

また、UIDeviceBatteryStateUnplugged 通知をリッスンし、batteryMonitoringEnabled を適切に設定する必要があります。

于 2009-09-23T19:06:17.613 に答える