6

我目前正在将应用程序迁移到新的 UserNotifications 框架。由于用户打开本地通知,我一直无法检测应用程序是否已启动。测试用例是:

  1. 安排本地通知
  2. 手动关闭应用
  3. 设置 Xcode 以在应用程序启动时自动附加
  4. 等待通知显示并打开它(默认操作)

问题是在这种情况下userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:没有调用。其中application:didFinishLaunchingWithOptions:有一个键UIApplicationLaunchOptionsLocalNotificationKey,其中包含一个类型的对象,UIConcreteLocalNotification它是 的子类UILocalNotification。但是,作为旧通知系统的一部分,UILocalNotification它已被弃用,我们不应该使用它。我在文档和网络上进行了挖掘,但没有找到我的问题的答案:

如何查找应用程序是否因本地通知而启动?

我如何获得该通知?

4

1 回答 1

9

确保您在应用程序完成启动之前分配您的实现,如UNUserNotificationCenterDelegate文档所述。UNUserNotificationCenter.current()

然后,您应该在应用程序启动时使用包含原始通知的响应对象来调用您UNUserNotificationCenterDelegate的 's 。userNotificationCenter(_:didReceive:withCompletionHandler:)对我来说,这发生在我被叫到之后的一段时间application(_:didFinishLaunchingWithOptions:)

于 2018-01-10T19:08:03.370 回答