通过在iOS10 +上打开本地通知来检测是否启动了应用程序

AXE*_*AXE 4 notifications ios ios10 usernotifications unusernotificationcenter

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

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

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

如何通过本地通知找到应用程序是否已启动?

我如何获得该通知?

yoo*_*ood 7

确保您指定的实施UNUserNotificationCenterDelegateUNUserNotificationCenter.current()之前,你的应用程序启动完毕,因为它在说文档.

然后,您应该使用包含原始通知的响应对象在应用程序启动时调用您UNUserNotificationCenterDelegateuserNotificationCenter(_:didReceive:withCompletionHandler:)应用程序.对我来说,这是在我application(_:didFinishLaunchingWithOptions:)被召唤之后的一段时间.

  • 我也想知道这个。我收到 UNUserNotificationCenterDelegate 的 didReceiveNotificationResponse 消息,但是....我如何检测是否由于启动应用程序而收到了 didReceiveNotificationResponse ,因为在应用程序未运行时在通知中心单击了通知?在 iOS8(已弃用的通知内容)中,我可以找到检测到这一点的示例,但在 iOS10 中却没有那么多。我应该比较 didFinishLaunchingWithOptions 和 didReceiveNotificationResponse 之间的时间差吗? (2认同)