首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示前迅速取消推送通知

显示前迅速取消推送通知
EN

Stack Overflow用户
提问于 2017-02-06 07:11:36
回答 2查看 1.9K关注 0票数 0

我用Swift为IOS 10.2开发了一个应用程序。我使用来自服务器的苹果推送通知。在这个应用程序中,我使用UserDefaults作为用户设置。

我希望,如果用户希望收到当天的新闻,我的应用程序允许显示新闻类别的推送通知。因此,在向用户显示之前,我可以管理推送通知吗?

我必须将设置保存在服务器上吗?有什么建议吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-06 07:22:14

苹果在iOS 10中引入了通知服务扩展。您可以使用这个扩展来修改APNS发送的通知的内容。此扩展允许您在向用户显示或修改通知的内容(如标题、字幕、描述)之前下载图像/视频/gif内容。但是,您将不被允许完全取消通知。

虽然如果您将通知设置保存在Suite UserDefaults中(通过使用AppGroups),但您可以访问Notification扩展中的这些设置,并且在读取这些设置之后,可以将通知的内容更改为一般通知,并使用API将通知设置发送到外部服务器,并停止向客户端发送该特定通知。但是是的,取消/停止特定通知的逻辑必须写在服务器上。

希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2020-11-11 03:02:25

苹果的通知团队有时(几乎每次)都会做出一些非常愚蠢的决定--,如:

  • 具有动作按钮和通知内容扩展的高强度类别标识符,导致系统上注册类别标识符的庞大和不必要的笛卡儿产品。
  • 初始火灾日期从iOS 10或更高版本的新UNNotificationTrigger中移除。
  • 创建UNPushNotificationTrigger并失去所有其他 推送的UNNotificationTrigger功能 通知。

...and 无法使用NotificationServiceExtension取消推送通知,这是一个很好的例子。为什么不取消无效或损坏的推送通知,然后使用notification扩展显示给用户?

除了开发团队痴呆症或恶意之外,没有其他有效的解释。

但是你可以“巨魔系统”!太棒了!

构建一个无效的、空的通知内容,并将其发送回notification以消化和阻塞。在您的UNNotificationServiceExtension中:

代码语言:javascript
复制
public override func didReceive(
    _ request: UNNotificationRequest,
    withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void
){
    self.contentHandler = contentHandler
    self.content = (request.content.mutableCopy() as? UNMutableNotificationContent)
    
    if let content = content {
        
        print("Valid FCM received")
        contentHandler(content)
    }
    else {
    
        // Invalidates the notification
        print("Invalid FCM received")
        contentHandler(UNNotificationContent())
    }
}

拿着,大哥。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42062159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档