代码之家  ›  专栏  ›  技术社区  ›  Szymon W

如何在iOS10中关闭应用程序时响应本地通知?

  •  4
  • Szymon W  · 技术社区  · 8 年前

    当应用程序完全关闭(不在后台)时,如何响应本地通知?

    当应用程序在后台或前台运行时,一切正常。但当应用程序关闭时,我试图回复通知,只有 "application didFinishLaunchingWithOptions" 被调用, "userNotificationCenter didRecive response ”他没有回答。

    我发现了这个问题( How to handle UNNotificationAction when app is closed? )但在我的例子中,它既不能在真实设备上工作,也不能在模拟器中工作。

    我还注意到函数 "UNUserNotificationCenter.current().getDeliveredNotifications()" 返回 nil

    1 回复  |  直到 7 年前
        1
  •  6
  •   stevo.mit    8 年前

    对于 iOS 9及以下版本 在里面 application(_:didFinishLaunchingWithOptions:) 你可以检查一下 launchOptions 包含 localNotification: UIApplicationLaunchOptionsKey 如果是这样,您会知道应用程序刚刚启动,因为本地通知(即用户点击通知)。

    对于 iOS 10+ 必须 注册 UNUserNotificationCenterDelegate 在里面 application(_:willFinishLaunchingWithOptions:) 应用程序(_:didFinishLaunchingWithOptions:) .

    您代表的职能:

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

    如果您的应用程序刚启动或只是处于后台,则将调用。 这个新API的优点是只有一个地方可以处理本地通知操作。