gpt4 book ai didi

ios - 通知服务扩展 - 有关在推送通知上显示图像的问题

转载 作者:行者123 更新时间:2023-11-29 05:38:38 25 4
gpt4 key购买 nike

我在项目中添加了“通知服务扩展”,并希望在推送通知上显示图像。

在代码中,首先我使用 URLSessionDownloadTask 的“downloadTask”方法从 url 下载图像。
并且它已成功保存在 url 中,如

'file://private/var/mobile/Containers/Data/..../tmp/CFNetworkDownload_fads.tmp'

我不知道保存图像后要做什么。

成功下载图像并将其保存在 tmp 目录中后,我尝试了一些选项。

首先,我创建了一个没有任何选项的 UNNotificationAttachment 实例。

结果失败,我认为它无法知道附件的类型。所以它无法做正确的事情。

其次,我使用选项创建了一个相同的实例,我选择了 Uniform Type Identifier将值“public.jpeg”设置为键“UNNotificationAttachmentOptionsTypeHintKey”。

这是成功的,但我有一些好奇的事情。我在解释第三次尝试后写了它。

第三,我尝试仅将值从“public.jpeg”更改为“public.png”

这也很成功。

我想知道为什么第二次和第三次尝试都成功了。

无论实际图像格式类型如何,它们都会显示图像。(jpeg、png)

我选择了“public.jpeg”选项,并发送了一个以“.png”扩展名结尾的网址,但它成功显示了该图像。

相反也是成功。

我不了解图像格式类型,所以我无法理解它为什么起作用。

非常感谢您的解释。

// Download image
guard let url = URL(string: urlString) else {
completion(nil, NSError(domain: "error", code: -1, userInfo: nil))
return
}

let task = URLSession.shared.downloadTask(with: url, completionHandler: { url, _, error in
completion(url, error)
})

task.resume()

// Make UNNotificationAttachment with option (TypeHintKey: "public.png")
if let imageAttachment = try? UNNotificationAttachment(identifier: "image", url: url, options: [UNNotificationAttachmentOptionsTypeHintKey: "public.png"]) {
mutableContent.attachments = [imageAttachment]
contentHandler(mutableContent)
} else {
contentHandler(mutableContent)
}

// Make UNNotificationAttachment with option (TypeHintKey: "public.jpeg")
if let imageAttachment = try? UNNotificationAttachment(identifier: "image", url: url, options: [UNNotificationAttachmentOptionsTypeHintKey: "public.jpeg"]) {
mutableContent.attachments = [imageAttachment]
contentHandler(mutableContent)
} else {
contentHandler(mutableContent)
}

// Make UNNotificationAttachment without option
if let imageAttachment = try? UNNotificationAttachment(identifier: "image", url: url, options: nil) {
mutableContent.attachments = [imageAttachment]
contentHandler(mutableContent)
} else {
contentHandler(mutableContent)
}

最佳答案

欢迎孙,

func currentUserImage(){

let headers = ["Authorization":"Bearer \(UserDefaults.standard.string(forKey: "token")!)"]
Alamofire.request(Constants.currentUserImageURL,method: .get, encoding: JSONEncoding.default, headers: headers).responseJSON { response in
if response.result.isSuccess{
let currentUserResponce : JSON = JSON(response.result.value!)

let first_name = currentUserResponce["data"]["first_name"].stringValue
let last_name = currentUserResponce["data"]["last_name"].stringValue
let username = "\(first_name) \(last_name)"
let url = URL(string: "\(currentUserResponce["data"]["photo_thumb"].stringValue)")
let currentUserId = currentUserResponce["data"]["id"].intValue

UserDefaults.standard.set(currentUserId, forKey: "currentUserID")
self.listenForChanges()

DispatchQueue.global().async {
if let data = try? Data( contentsOf:url!)
{
DispatchQueue.main.async {
self.currentUser.image = UIImage( data:data)
}
}
}
}
}
}

这是如何从服务器获取图像 URL 并将其显示在 ImageView 中的方法。

希望您能从这段代码中明白您的意思。

关于ios - 通知服务扩展 - 有关在推送通知上显示图像的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56787418/

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