在 NotificationService 中禁用从 didReceive 接收推送
Posted
技术标签:
【中文标题】在 NotificationService 中禁用从 didReceive 接收推送【英文标题】:disable receive push from didReceive in NotificationService 【发布时间】:2019-05-12 14:06:58 【问题描述】:我想在特殊情况下禁用向用户发送推送通知。 我将我的第一个 Push 保存在 userDefault 中,第二个我检查它是否相同。 当我调试它进入返回而不是继续,但我仍然收到推送通知。从 firebase api 发送的推送
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void)
if let dict = request.content.userInfo["aps"] as? Dictionary<AnyHashable, AnyHashable>
if let did = dict["did"] as? String
if let message = dict["message"] as? String
let currentPush = did + "_" + message
if let lastPush = UserDefaults.standard.string(forKey: "lastPush"), currentPush == lastPush
print("enter")
return
else
UserDefaults.standard.setValue(currentPush, forKey: "lastPush")
【问题讨论】:
这是服务决定是否发送推送。您可以调用 Web API 来告诉服务我不想再收到某个推送。 【参考方案1】:与开发者有some control 是否显示通知的android 不同,ios 不提供该功能。将始终显示发送的通知。因此,您的 return
将不起作用。
您可以做的一个解决方法是发送silent push notification,处理数据,如果它符合您的逻辑,然后创建一个本地通知并显示它。
【讨论】:
但您随问题发布的代码并未显示该目的。它说您不想显示重复的通知。如果您甚至不想从服务器发送重复通知,那么逻辑需要在服务器端。 对不起,我删除了我的评论,没有很好地描述它。解决方法非常适合这种情况以上是关于在 NotificationService 中禁用从 didReceive 接收推送的主要内容,如果未能解决你的问题,请参考以下文章