ios - 通过在 iOS10+ 上打开本地通知来检测应用是否已启动

标签 ios notifications ios10 unusernotificationcenter usernotifications

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

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

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

我如何知道某个应用是否因本地通知而启动?

我如何获得该通知?

最佳答案

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

然后你应该在应用程序启动时使用响应对象调用你的 UNUserNotificationCenterDelegateuserNotificationCenter(_:didReceive:withCompletionHandler:),其中包含原始通知。对我来说,它发生在我的 application(_:didFinishLaunchingWithOptions:) 被调用之后的一段时间。

关于ios - 通过在 iOS10+ 上打开本地通知来检测应用是否已启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823936/

相关文章:

swift - ios swift 3 addObserver 如何在点击推送通知时从应用程序中的任何位置重定向到特定 View

ios10 - iOS 10 终止原因 : Namespace SPRINGBOARD, 代码 0xdead10cc

ios - 应用程序的 Info.plist 必须包含一个 NSMicrophoneUsageDescription 键和一个字符串值,向用户解释应用程序如何使用此数据

ios - 禁用 iOS 10 快速操作小部件

iphone - 是否可以通过 iPhone SDK 的 API 搜索附近的餐馆和酒吧?

ios - 如何在 SwiftUI 中访问安全区域大小?

iOS 9.3 无法使用在 iPad 上运行的 iPhone App 从照片库获取缩略图

c# - Xamarin.Android 中不推荐使用某些 NotificationBuilder 方法,我应该使用哪些方法?

android - 在没有 C2DM 的情况下通过本地网络将通知从设备推送到设备

iphone - 在 UILabel 中使用带有粗体文本的自定义字体