目次

バックグラウンドで処理を実行し続けることができるのは3種類だけ

マルチタスク対応といっても、バックグラウンドでなんでもかんでも実行できるわけではなく、ドキュメントにもあるとおり、バックグラウンドで処理を実行し続けることができるのは 音楽再生(audio)、位置情報取得(location)、VoIP この3種類だけです。

情報源

http://blog.mudaimemo.com/2011/01/ios.html

内容に関わらず特定のタスクが完了するまでシステムに一定の猶予の時間(最大10分程度)を与えてもらう

実行したいコードを UIApplication の

beginBackgroundTaskWithExpirationHandler?: endBackgroundTask?:

というメソッドでくるんであげるだけ

// UIBackgroundTaskIdentifier型の bgTask というプロパティが宣言されているとして

- (void)upload {
   UIApplication  *app = [UIApplication sharedApplication];

   // ここから「アプリがバックグラウンドに入っても実行し続けたい処理」が始まると通知
   bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
       // このブロック内は一定時間内 (10分程度)に処理が完了しなかった場合に実行される。
       [app endBackgroundTask:bgTask];
       bgTask = UIBackgroundTaskInvalid;
   }];

   // アップロード処理を適当に書く
   // アップロード中にアプリがバックグラウンドに入ってもアップロードは継続
}


// アップロード完了後に呼ばれるdelegateメソッド

- (void)uploadFinished {
   // 「アプリがバックグラウンドに入っても実行し続けたい処理」が終わったと通知
   [[UIApplication sharedApplication] endBackgroundTask:bgTask];
   bgTask = UIBackgroundTaskInvalid;
}

ドキュメント

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html

iOSアプリのバックグラウンド移行時にクラスごとに処理を分ける

http://d.akiroom.com/2012-01/ios-background-class-navigationcontroller/#more-255

[iOS] バックグラウンド実行見本(Task Completion)

http://cocoadays.blogspot.jp/2011/04/ios-task-completion.html

Task Completion は、iOS4 から導入されたマルチタスキングの機能の一つで、これを利用すると最大10分間を上限にバックグラウンドで処理を実行できる。

マルチタスク化したiOS

http://thinkit.co.jp/story/2011/01/14/1961?page=0,2

NSOperation 非並列実行モードと並列実行モードの使い分け

http://d.hatena.ne.jp/glass-_-onion/20110706/1309909082

バックグラウンドで定期実行

http://blog.rspepe.com/288

常時接続サンプル

iPhoneとsocket.ioサーバを常時接続させる1

http://growthfield.hatenablog.jp/entry/2012/01/29/060746

voipとして審査にとおるかどうかはべつとして、実機で常時接続する方法

iPhoneとsocket.ioサーバを常時接続させる2

http://growthfield.hatenablog.jp/entry/2012/01/30/060135 電波が途切れても再接続する方法

バックグランドタスク宣言による10分間の延命要求が10分毎に発行されるので結果的にRunLoop?は永続的に有効になる方法

http://growthfield.hatenablog.jp/entry/2012/01/31/063748

iPhoneの位置情報をsocket.ioでリアルタイムにGoogle Mapに表示する

http://growthfield.hatenablog.jp/entry/2012/02/28/082834

iOS Application Programming Guide」の「Executing Code in the Background」

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html

その他

iPhoneアプリをRubyOnRails?でつくる関連

http://www.killerstartups.com/mobile/iphoneonrails-com-your-iphone-working-better/

Xcode4でのiOS Frameworkの作り方

http://d.akiroom.com/2011-11/xcode4-ios-framework/#more-175

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-08-24 (金) 01:17:24 (4261d)