私はLaunch a local notification at a specific time in iOS従っている10.起動アプリ10
のiOSでローカル通知からのアクションで(非アクティブ状態から)アプリの起動を実装しようとしていますし、アプリがに応じて微起動ローカル通知。しかし、私がここから望むのは、通知内のデータに応じてアクションを実行することです。 iOSの8と9では
私はAppDelegate
func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
if (application.applicationState == UIApplicationState.inactive || application.applicationState == UIApplicationState.background) {
NotificationCenter.default.post(name: Notification.Name(rawValue: "noteName", object: notification.alertBody)
とAppDelegateで、今のViewController
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.txtFromNotifier), name: NSNotification.Name(rawValue: "noteName", object: nil)
とiOS 10内でそれをキャッチオブザーバーでセットアップを持っていた:
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) {
// Determine the user action
switch response.actionIdentifier {
case UNNotificationDismissActionIdentifier:
print("Dismiss Action")
case UNNotificationDefaultActionIdentifier:
print("Default")
// do something here
私はUNNotification Defaultアクションから取得する方法を見つけることができませんでした( "Default"はt彼は起動後にコンソールを起動する)、パラメータを渡して、ViewControllerでtxtFromNotifier関数を実行します。 NotificationCenter post/addObserverの組み合わせを使用しようとすると、アプリがバックグラウンドにあるときに機能しますが、アプリが非アクティブになってもそこには入りません。
アイデア?
私はそれを理解しましたが、私自身の質問にも答えることができません。 – Mick
私は同様の問題を抱えています。あなたのソリューションは、受信ビューコントローラでaddObserverが呼び出される前に通知をブロードキャストすることと関係がありましたか? –
@IanLeatherburyはい、そうでした。 IIRC ViewControllerにオブザーバがロードされる前にAppDelegateでユーザー通知が発生していました。私はいくつかのアイデアを見つけましたが、それはずっとずっとずっとどこを忘れています。基本的に、私はAppDelegateの通知ポストを遅れてラップしました。 – Mick