2017-06-12 10 views
0

私のアプリケーションでバックグラウンドフェッチ機能を実装しました。スウィフト - バックグラウンドフェッチと遅延

background fetchによって呼び出される関数には、遅延関数が含まれています。

ただし、この機能はトリガーしていないようです:しかし、すぐに私はアプリを覚ますようトリガするようだ

let when = DispatchTime.now() + 2 
DispatchQueue.main.asyncAfter(deadline: when) { 
    MyFunction() 
} 

バックグラウンドフェッチでこれが発生しないのはなぜですか?私はあなたがメインキューにバックグラウンドで実行することができるとは思わない

DispatchQueue.global().async { 
     let timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(self.MyFunction), userInfo: nil, repeats: false) 
     RunLoop.current.add(timer, forMode: .defaultRunLoopMode) 
     RunLoop.current.run() 
    } 
+0

を、それをしません。 – vadian

+0

期待される結果は何ですか? (遅延)を待ってから、 'MyFunction()'を実行するか、その逆ですか? –

+0

ああ私はそれが泥棒の練習であることを知っていたと述べていたはずですが、それでも私のケースでは十分です:) – lapin

答えて

1

は、このコードを試してみてください。この(global()mainを変更)してみてください。これは何かのための*待機*に遅延することになっている場合は終了しました

let when = DispatchTime.now() + 2 
DispatchQueue.global().asyncAfter(deadline: when) { 
    MyFunction() 
} 
+0

これはどちらもうまくいきません:( – lapin