gpt4 book ai didi

ios - 如何在通知内容扩展的通知服务扩展中预加载资源

转载 作者:行者123 更新时间:2023-11-30 11:37:50 25 4
gpt4 key购买 nike

我有一个非常简单的任务。我已经实现了通知服务扩展和通知内容扩展来实现丰富的通知。现在在扩展 View (通知内容扩展)中,我需要呈现一张图像。为了使用户体验更流畅,我想将其预加载到通知服务扩展中,然后将其呈现在通知内容扩展中(我相信通知服务扩展就是为此设计的)。

现在我知道了 UNNotificationAttachment我可以用它来下载图像并将其添加到通知中。但图像附件会在通知的简短预览中显示。我需要简短的预览来保持“干净”并且不显示此图像。

我知道我可以尝试使用 Core Data ( SO question ) 或其他共享存储 (UserDefaults)。但是使用这个我必须在处理通知后管理删除资源。这意味着我必须以某种方式找到一种方法来检测特定通知何时被处理(取消/处理),这不是一件容易的任务(例如,如果用户不会展开简短预览而是直接取消它,我需要删除该资源 - 我如何检测到它?)。

有一些标准方法可以解决这个问题吗?或者是系统根据需要清理一些临时存储?或者有没有办法添加 UNNotificationAttachment 并将其配置为不在预览中显示?我更喜欢第一种方式,因为附件仅支持媒体类型,并且通常我们可能需要预加载不同类型的资源(我知道这是一种边缘情况,但它可能会发生)。

最佳答案

我找到了解决我当前问题的解决方法。如果附件链接了有效的图像文件,但使用不带文件扩展名的标识符(因此没有“.png”、“.jpg”或“.gif”),则简短预览不会显示图像的预览:

let imageFileIdentifier = "image" // instead of "image.png"
let imageAttachment = try UNNotificationAttachment.init(identifier: imageFileIdentifier, url: fileURL!, options: options)

这可能不是通用解决方案,因为正如文档所述:

If an attached file is corrupted, invalid, or of an unsupported file type, the notification request is not scheduled for delivery.

因此,我希望如果文件不是媒体文件,而是 JSON 中的序列化对象,则不会发送通知。

关于ios - 如何在通知内容扩展的通知服务扩展中预加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49550616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com