【问题标题】:Swift: doesn't call didReceiveRemoteNotification()斯威夫特:不调用 didReceiveRemoteNotification()
【发布时间】:2017-05-28 13:45:09
【问题描述】:

这是我的示例应用程序

我在另一个应用程序中遇到了一些问题,我正试图找出我做错了什么;它的工作原理是这样的:

  1. 我按下一个安排通知的按钮
  2. 我退出应用并关闭它
  3. 我等待通知到达
  4. 我通过 Xcode 重新启动应用程序

问题是:即使应该调用 didReceiveRemoteNotification() 函数,但在启动显示我的应用程序时,我仍然得到错误值,无论出于何种原因,该方法都不会被调用。为什么?你能帮帮我吗?

【问题讨论】:

标签: ios swift notifications


【解决方案1】:

不应该为本地通知调用方法didReceiveRemoteNotification()...它仅用于远程通知(推送通知)。

使用UNUserNotificationCenterDelegate委托方法

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

在此处查看详细信息https://stackoverflow.com/a/44142742/1825618

获取已送达的通知(仅当前显示在通知中心的通知)

UNUserNotificationCenter.current().getDeliveredNotifications {
    (notifications) in
    // your code
}

【讨论】:

  • 已经尝试过了...我现在的问题是,如果我通过点击应用程序图标访问应用程序,该功能将无法正常工作。只有当我通过通知本身访问应用程序时它才有效。你知道我是否可以普遍检测到通知是否到达?
  • 如果您从应用程序图标启动应用程序,这是预期的行为,不会调用委托方法。可能对您有帮助,当您使用应用图标打开应用并且您的应用通知仍在通知中心显示时,您可以使用此功能获取所有已发送的通知getDeliveredNotificationRequests:completionHandler:
  • 谢谢!我在哪里可以调用该函数?
猜你喜欢
  • 1970-01-01
  • 2017-07-22
  • 2017-03-24
  • 1970-01-01
  • 2016-02-08
  • 2017-11-13
  • 2015-08-19
  • 2014-09-11
  • 1970-01-01
相关资源
最近更新 更多