You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取.xcassets文件中的图片URL用于UNNotificationAttachment?

解决方案

存放在.xcassets中的图片资源会被编译到统一的Assets.car文件中,没有独立的文件路径,无法直接获取对应URL,需要先导出到沙盒临时目录后再使用,具体实现步骤如下:

  • 从.xcassets中读取图片并转换为二进制数据
// 替换为你的xcassets内图片名
guard let image = UIImage(named: "notice_image"), 
      let imageData = image.pngData() else {
    return
}
  • 将二进制数据写入沙盒临时目录生成独立文件
let tempDir = FileManager.default.temporaryDirectory
// 自定义文件名,注意带对应后缀
let attachmentURL = tempDir.appendingPathComponent("notice_attachment.png")
do {
    try imageData.write(to: attachmentURL)
} catch {
    print("写入附件失败: \(error)")
    return
}
  • 用临时文件URL创建UNNotificationAttachment
do {
    let attachment = try UNNotificationAttachment(
        identifier: "notice_image_attachment", 
        url: attachmentURL, 
        options: nil
    )
    // 把attachment添加到你的UNMutableNotificationContent的attachments数组中
    // content.attachments = [attachment]
} catch {
    print("创建通知附件失败: \(error)")
}

优化提示:如果同一张图片需要多次作为通知附件使用,可以先判断临时目录下的对应文件是否存在,存在则直接复用URL,避免重复写入浪费性能。

内容的提问来源于stack exchange,提问作者cHorse1981

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 00:24:09