从本地通知启动应用程序; VC实例化,但不显示

时间:2018-02-04 16:37:36

标签: ios swift appdelegate unusernotificationcenter

我想通过本地通知启动我的应用,该通知会在主屏幕被锁定时显示,或者当用户在基于相似讨论{@ 3}}和here的其他应用中时显示我有以下内容我的AppDelegate中的代码:

func userNotificationCenter(_: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

        switch response.actionIdentifier {

        case "play":
                var setAlarmVC = self.window?.rootViewController as? SettingAlarmViewController
                if setAlarmVC == nil {
                    let storyboard = UIStoryboard(name: "Main", bundle: nil)
                    setAlarmVC = storyboard.instantiateViewController(withIdentifier: "AlarmViewController") as? SettingAlarmViewController
                    self.window = UIWindow(frame: UIScreen.main.bounds)
                    self.window?.rootViewController = setAlarmVC
                    self.window?.makeKeyAndVisible()
                }

        case "snooze":
            print("I pressed pause")
        default:
            break
        }

        completionHandler()

    }

在我的SettingAlarmViewController的viewDidLoad中,我设置了一些简单的打印输出

override func viewDidLoad() {
    super.viewDidLoad()
    print("Setting Alarm View Controller was instantiated")
}

当我在应用程序处于后台时从本地通知中按播放时,我按预期打印出控制台:

Setting Alarm View Controller was instantiated

但该应用程序实际上并未启动,并且未显示“设置警报视图控制器”。如果我然后点击应用程序,新的设置警报视图控制器是第一个可见的东西。我觉得我必须遗漏一些明显的东西,但我无法弄清楚它是什么。

编辑:做更多测试。当锁定屏幕上显示通知并且用户从锁定屏幕按下“播放”时,密码/解锁屏幕不会出现,但应用程序仍然启动,我打印出“设置警报视图控制器已实例化”< / p>

1 个答案:

答案 0 :(得分:0)

好吧,我生命中的一天浪费在此,这是问题所以其他人没有同样的问题:developer.apple.com/documentation/usernotifications / ...你必须广告[.foreground]到你的通知行动,如在let playAction = UNNotificationAction(标识符:&#34;播放&#34;,标题:&#34;播放&#34;,选项:[.foreground])