【问题标题】:How get notify when push notification arrive only, before tap仅在推送通知到达时如何在点击之前获取通知
【发布时间】:2018-12-10 13:33:22
【问题描述】:

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

  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)

【问题讨论】:

  • 尝试静默推送来满足此类需求。 stackoverflow.com/questions/36694963/…
  • 无声推送不是必需的,因为企业希望用户在每次推送时都采取行动,并且希望在一个用户选择并点击的所有通知中计数。
  • 静默推送后,您可以生成本地通知,告知哪些用户点击了,您将获得点击次数。

标签: ios swift push-notification nsusernotificationcenter


【解决方案1】:

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

如果您的应用支持远程通知,请实现此方法 背景模式。 ...当推送通知到达时,系统 向用户显示通知并在 背景(如果需要),以便它可以调用此方法。用这个 方法来下载与推送通知相关的任何数据。什么时候 你的方法完成了,调用 handler 参数中的块。

与 application:didReceiveRemoteNotification: 方法不同,它是 仅在您的应用程序运行时调用,系统调用此方法 无论您的应用处于何种状态。

关于above方法的使用:

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

【讨论】:

  • 此方法也仅在用户点击通知消息时触发,但我的要求是在用户点击警报消息之前第一次收到通知时触发
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多