首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UNNotificationServiceExtension有时无法更新通知

UNNotificationServiceExtension有时无法更新通知
EN

Stack Overflow用户
提问于 2016-10-20 19:27:04
回答 1查看 1.1K关注 0票数 8

我用Swift写了一个UNNotificationServiceExtension。它所做的一切:

  • 设置通知标题
  • 设置通知体
  • 加载映像&调用contentHandler ()

下面是我正在做的事情的一个简短的版本:

代码语言:javascript
复制
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
    self.contentHandler = contentHandler
    self.bestAttemptContent = request.content.mutableCopy() as? UNMutableNotificationContent

    bestAttemptContent!.title = GetNotificationTitle(userInfo)
    bestAttemptContent!.body = GetNotificationBody(userInfo)

    if let imageUrl = <get image url> {
        let imageLoaderTask = URLSession.shared.dataTask(with: URL.init(string: imageUrl)!) { (newsImageData, newsImageUrl, newsImageError) -> Void in
            if newsImageError == nil && newsImageData != nil {
                let documentDirectory = self.GetDocumentDirectory()
                if documentDirectory != nil {
                    let newsFileURL = documentDirectory?.appendingPathComponent("news_image").appendingPathExtension("png")
                    do {
                        try newsImageData?.write(to: newsFileURL!)
                        let attachment = try UNNotificationAttachment(identifier: "newsImage",
                                                                      url: newsFileURL!,
                                                                      options: nil)
                        self.bestAttemptContent?.attachments = [ attachment, ]
                        self.contentHandler!(self.bestAttemptContent!)
                        return
                    } catch {}
                }
            }
            self.contentHandler!(self.bestAttemptContent!)
        }
        imageLoaderTask.resume()
    } else {
        self.contentHandler!(self.bestAttemptContent!)
    }
}

中,95%的情况下-它的工作非常好的。但是,occasionally通知到达时没有任何更改(即标题、正文保持不变、未附加图像)。

我知道:

  • 这不是超时:serviceExtensionTimeWillExpire没有被调用
  • 它看起来不像UNNotificationServiceExtension崩溃:我添加了大量的NSLog()调用来检查设备日志--UNNotificationServiceExtension fires
  • 它更多地发生在我的iPhone上而不是iPad上
  • 我还没有在设备日志中找到任何关于这个问题的线索

有人面对这个问题吗?有什么解决办法吗?有什么想法?

EN

回答 1

Stack Overflow用户

发布于 2018-09-10 02:01:40

当这个特性第一次被宣布时,我构建了一个UNNotificationServiceExtension。有两个想法:

  1. 由于系统问题,底层URLSession数据任务无法获取远程媒体。获取系统诊断并查找libnetwork.dylib中的错误。
  2. 服务扩展是它自己独立的二进制和进程。系统可能没有启动进程,或者无法打开应用程序进程和服务扩展之间的链接。我还会检查sysdaig体是否显示进程的mach端口是nil
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40162926

复制
相关文章

相似问题

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