ios 检查显示的本地通知

ios check for displayed local notifications

假设我安排了 3 个本地通知,当用户打开应用程序时,三个通知具有以下状态:

a) not displayed yet
b) displayed
c) displayed and user taps on this notification and come back to app.

如何检测每一个?

iOS 10 引入了 UIUserNotificationCenter,并弃用了通过 UIApplication 安排和发送本地通知,因此根据您使用的方法,存在一些差异。已弃用的方法仍然适用于 iOS 10,因此如果您的目标 iOS 早于 iOS10,那么您可以继续使用这些方法,但您会收到弃用警告。

对于案例 a,一个尚未发送的通知,可通过调用 [=10= 的实例上的 getPendingNotificationRequests 获得此通知的详细信息] (iOS 10) 或通过访问应用 UIApplication 实例上的 scheduledLocalNotifications 属性(在 iOS 10 之前)

对于案例 b,已发送但用户未与之交互的通知,没有可用信息。

对于案例 c,用户点击启动应用程序的通知取决于应用程序的状态以及用户与通知的交互方式。

  • 如果应用程序未 运行 在前台或挂起,则应用程序将启动并通过选项中的 localNotification 键将通知负载传送到 application:didFinishLaunchingWithOptions:字典
  • 如果应用程序被挂起,则通知会被传送到 didReceiveLocalNotification 委托方法被调用。
  • 如果通知有自定义操作并且用户点击其中之一,则调用 application:handleActionWithIdentifier:forLocalNotification:completionHandler: 应用委托方法