ユーザーがアプリケーションを起動したり、データの編集を終了したときにローカル通知を更新する必要がある場合、基本的に非同期で約2〜3秒かかります。私は、アプリケーションがフォアグラウンドを離れる場合でもこのコードが実行されることを確認する必要があります。swift ios 10コードを非同期に、またはバックグラウンドで実行する
func buildLocalNotifications()
let dq = DispatchQueue.global(qos: .userInteractive)
dq.async {
//recreate the notifications
}
}
そして私はdidFinishLaunchingWithOptions
からこのメソッドを呼び出すことができたり、ユーザーがフォームを保存するとき、アプリがもっとして3-4秒、そしてもちろんそのブロックしていないUIのためのアクティブなままにしながら、すべてが魔法のように動作します:私は今持っています..ユーザーが画面をロックしたりアプリを終了したりすると、このコードが勝って終了し、通知は作成されません。機密コードを安全に実行するには? 何が起こっているのか - この操作を実行中にローダーを表示しますが、ユーザーのやりとりをブロックします
最初にすべてのあなたに感謝し、 'applicationWillTe終わり。また、質問:f.e.私はいくつかのフォームを保存した後に通知を更新し始めましたが、ほとんど完了しましたが、ユーザーはアプリケーションを終了し、 'applicationWillTerminate'からアップデートを開始しました。それは 'applicationWillTerminate'の前に止められますか? –
確かにテストする必要がありますが、applicationWillTerminateを呼び出す前にシステムがプロセスを閉じるかどうか、またはコードがapplicationWillTerminateで実行されている間にプロセスを実行し続けるかどうかはわかりません。しかし、DispatchQueueに追加された作業項目を手動で取り消すことができます。[this](https://stackoverflow.com/a/38372384/4667835)の回答を参照してください。 –