1

当应用程序处于后台状态时,我必须启动两个不同的实验,

  1. 当通知到达用户但尚未点击时。(这没有实现)
  2. 在所有通知中,用户点击通知警报并打开应用程序的次数。(这是实现的)

我使用了以下方法:当用户通过点击警报消息来响应通知时,系统会调用以下方法并返回结果。

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

如果您的应用程序在前台并且有通知到达,通知中心会调用以下方法将通知直接发送到您的应用程序。

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
4

1 回答 1

0

您可以为此使用application:didReceiveRemoteNotification:fetchCompletionHandler:方法。当推送通知到达时,系统会向用户显示通知并在后台启动应用程序(如果需要),以便它可以调用此方法。来自Apple 的文档

如果您的应用支持远程通知后台模式,请实施此方法。...当推送通知到达时,系统会向用户显示通知并在后台启动应用程序(如果需要),以便它可以调用此方法。使用此方法下载与推送通知相关的任何数据。当您的方法完成后,调用处理程序参数中的块。

与仅在您的应用程序运行时调用的 application:didReceiveRemoteNotification: 方法不同,系统会调用此方法而不管您的应用程序的状态如何。

关于上述方法的使用:

它告诉应用程序有一个远程通知到达,表明有数据要获取。

于 2018-07-02T10:42:51.713 回答