バックグラウンドにあるとき周期的にタスクを動かす方法について


iOS8でアプリケーションがバックグラウンドモードに移行したあとも、周期的にタスクを動かしたいと思い、ドキュメントを見ながら以下のようなコードを書いてみました。しかし、思い通り動いてくれません。なにか見落としがあるのでしょうか。

以下、AppDelegate.swiftより抜粋。

[code]

    let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND,0)
    
    func applicationDidEnterBackground(application: UIApplication) {
        println("did enter background")
        dispatch_async(self.backgroundQueue, myBackgroundTask)
    }
    
    func myBackgroundTask() {
        NSThread.sleepForTimeInterval(0.5)
        println("this is back ground task")
        dispatch_async(self.backgroundQueue, myBackgroundTask)
    }
    
[/code]




iOS7以上であればBackground Fetchを使うのがいいのではないかと思います。  
参考：<http://www.gaprot.jp/pickup/ios7/vol1/>




`beginBackgroundTaskWithExpirationHandler`を使う必要があります。

参考: [Cocoaの日々: [iOS] バックグラウンド実行見本（Task
Completion）](http://cocoadays.blogspot.jp/2011/04/ios-task-completion.html)

