これが不可能かどうか、または私が間違って実装しているかどうかはわかりません。アクティブでないアプリケーション状態のローカル通知
私は(expirationHandler
)beginBackgroundTask
を使用して、バックグラウンドでタスクを完了しようとしているし、それがiOS10
に完了するとLocalNotification
を投稿しています。問題は、Notification
が一貫して発射されないことです。breakpoint
をpresentLocalNotificationNow
を使用してスケジュールされた状態に設定することはできますが、ユーザーに表示されるとは限りません(ホーム画面からアプリを開くことによって、に戻る) 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)