• ベストアンサー

バックグラウンドでNSTimerを動作させる方法

Xcode 4.5.1 表題通りの質問ですが、iPhoneのホームボタンを押下後のバックグラウンド上で NSTimerを停止させず動作させるにはどうすればいいのでしょうか? カウントダウンタイマーを作成しており、バックグラウンドへ移行後も 継続してカウントダウンタイマーを動作させたいと考えております。 ご教授よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#177743
noname#177743
回答No.1

バックグラウンドでの処理は、UIApplicationのapplicationDidEnterBackground:メソッドで行います。これはアプリがバックグラウンドに遷移する際に呼び出されるものです。この中で、beginBackgroundTaskWithxpirationHandler:メソッドを実行します。これはバックグラウンドタスクを実行するもので、引数には実行する処理をブロックとして用意します。ここで実際の処理が記述されます。整理すると、 -(void)applicationDidEnterBackground:(UIApplication*)application { UIApplication* app = [UIApplication sharedApplication]; [app beginBackgroundTaskWithxpirationHandler:^{ // ここにバックグラウンドの処理を書く }]; ところで、ご質問の「カウントダウンタイマー」をバックグラウンドで走らせるというのは、ちょっと現実味がないでしょう。なぜなら、iOSのバックグラウンドタスクは、最大10分しか実行できないからです。それ以上、ずっと動かし続けることができるのは、オーディオ再生、VoIP、GPS処理のみだったと思います。ですので、タイマーとして使えても最大10分まででしょう。

chocolat0
質問者

お礼

ご回答ありがとうございます。 実は、再生中の音楽をタイマーで停止させるようにしたかったのですが、 最大で10分までしか実行できないのであれば、バックグラウンド上でこれの実用化は難しいですね。 アクティブな状態でのみ動作するタイマーへと切り替えることにします。 最後になりましたが、回答の内容がとてもわかりやすかったです。 今後、どこかで頂いた情報を役に立てられればと思います。