1

これが不可能かどうか、または私が間違って実装しているかどうかはわかりません。アクティブでないアプリケーション状態のローカル通知

私は(expirationHandlerbeginBackgroundTaskを使用して、バックグラウンドでタスクを完了しようとしているし、それがiOS10に完了するとLocalNotificationを投稿しています。問題は、Notificationが一貫して発射されないことです。breakpointpresentLocalNotificationNowを使用してスケジュールされた状態に設定することはできますが、ユーザーに表示されるとは限りません(ホーム画面からアプリを開くことによって、​​に戻る) didReceiveLocalNotificationが呼び出されます。

通知のスケジュールを設定しているときにアプリケーションの状態を確認すると、rawValueが2になっていると考えられますが、これは非アクティブなので、通知がユーザーに配信されていないと想定しています。

notificationをタスクの完了後5秒間スケジューリングしてからすぐにendBackgroundTaskを呼び出してみましたが、通知がユーザーに表示されません。 EndBackgroundTaskが呼び出されて、アプリケーションをバックグラウンドに移動して、非アクティブな場所からnotificationが表示されるはずですが、実際にはそれが起こったときにシステムの裁量で即時ではないと仮定しています。

私は間違っていますか?

関連するコードは次のとおりです。

let task = UIApplication.shared.beginBackgroundTask(expirationHandler: nil) 
// Long running task 
let notification = UILocalNotification() 
notification.soundName = UILocalNotificationDefaultSoundName 
notification.alertBody = "Message" 
let settings = UIUserNotificationSettings(types: [.alert, .sound], categories: nil) 
UIApplication.shared.registerUserNotificationSettings(settings) 
UIApplication.shared.presentLocalNotificationNow(notification) 
UIApplication.shared.endBackgroundTask(task) 

答えて

0

私が言うことができる最高の、問題はpresentLocalNotificationNowが非同期であることと、通知を登録するためのシステムのための十分な時間がなかったので、すぐに返すためでした。私は十分な時間があったので、事前に通知をスケジューリングすることで問題を解決しました。

関連する問題