在iOS通知中显示富媒体内容可以显著提升用户体验。通过UNNotificationAttachment,我们可以为本地和远程通知添加图片、音频、视频等内容。
基本实现方法
1. 创建带附件的通知
func scheduleNotificationWithImage() {
// 1. 创建通知内容
let content = UNMutableNotificationContent()
content.title = "图片通知"
content.body = "这是一条带图片的推送通知"
content.sound = UNNotificationSound.default
// 2. 准备图片附件
guard let imageURL = Bundle.main.url(forResource: "notification_image", withExtension: "jpg"),
let attachment = try? UNNotificationAttachment(
identifier: "imageAttachment",
url: imageURL,
options: nil
) else {
print("无法创建图片附件")
return
}
content.attachments = [attachment]
// 3. 设置触发器(5秒后)
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
// 4. 创建请求
let request = UNNotificationRequest(
identifier: "imageNotification",
content: content,
trigger: trigger
)
// 5. 添加到通知中心
UNUserNotificationCenter.current().add(request) {
error in
if let error = error {
print("添加图片通知失败: \(error.localizedDescription)")
} else {
print("图片通知已安排")
}
}
}
2. 支持的文件类型
iOS通知附件支持以下类型:
| 文件类型 | 扩展名 | 限制 |
|---|---|---|
| 图片 | .jpg, .png, .gif | 最大10MB |
| 音频 | .mp3, .aiff, .wav | 最大5MB |
| 视频 | .mp4, .mov | 最大50MB |
| 其他 | 见官方文档 | 需符合UTI规范 |
高级用法
1. 动态下载网络图片
func scheduleNotificationWithRemoteImage(imageURLString: String) {
// 1. 下载图片
guard let url = URL(string: imageURLString) else {
return }
URLSession.shared.downloadTask(with: url) {
tempURL, response, error in
guard let tempURL = tempURL, error == nil else {
print("图片下载失败: \(error?.localizedDescription ?? "未知错误")")
return
}
// 2. 保存到临时目录
let fileManager = FileManager.default
let filename = url.lastPathComponent
let tempDirectory = URL(fileURLWithPath: NSTemporaryDirectory())
let localURL = tempDirectory.appendingPathComponent(filename)
do {
// 移除已存在的文件
if fileManager.fileExists(atPath: localURL.path) {
try fileManager.removeItem(at

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



