无法在 iMessage 扩展中显示文档目录中的贴纸
Unable to display Stickers from Documents directory in iMessage extension
在我的应用程序中,用户可以创建图像,然后将它们用作 iMessages 中的贴纸。
我的问题是无法显示存储在文档目录中的已创建图像。
我的问题与这个问题非常相似 - 但就我而言,那里所述的解决方案没有帮助。
这是我获取图片的代码:
func getImages(finished: () -> Void) {
imageData.removeAll()
let imageNames = keyboardUserDefaults!.stringArray(forKey: "Created stickers")
for imageName in imageNames! {
// let imagePath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let filePath = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(imageName)
// imageData.append(imagePath + "/" + imageName)
imageData.append(filePath)
}
print("Image Data - ", imageData)
finished()
}
以下是我将其应用于 StickerView 的方式:
func configure(usingImageName imagePath: String) {
let urlToImage = URL(fileURLWithPath: imagePath)
do {
let description = NSLocalizedString("", comment: "")
let sticker = try MSSticker(contentsOfFileURL: urlToImage, localizedDescription: description)
print("Sicker is here - ", sticker)
stickerView.sticker = sticker
}
catch {
fatalError("Failed to create sticker: \(error)")
}
}
但我得到的是没有贴纸的空白视图。
单元格内打印显示:
Sicker is here - <MSSticker-<0x280393640> imageFileURL file:///var/mobile/Containers/Data/PluginKitPlugin/32AF9E44-F2F1-4FD1-80B5-E8E4B6C6E338/Documents/F54067B8-18DA-4737-8ED3-B716E368AF6E.png localizedDescription >
当我使用 Bundle.main.path
从我的 Xcode 项目中的文件夹设置图像时,图像会显示,而不是从文档目录中设置。
我找到问题的根源:
应用程序扩展无法访问默认的文档目录文件夹。
解决方案:
像这样保存和检索图像时使用应用程序组并为图像创建路径:
let url = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "YOUR_APP_GROUP_NAME")?.appendingPathComponent("image.png")
之后,您可以轻松地在应用程序扩展中访问您的图像。
希望这对以后的人有所帮助!
在我的应用程序中,用户可以创建图像,然后将它们用作 iMessages 中的贴纸。
我的问题是无法显示存储在文档目录中的已创建图像。
我的问题与这个问题非常相似 -
这是我获取图片的代码:
func getImages(finished: () -> Void) {
imageData.removeAll()
let imageNames = keyboardUserDefaults!.stringArray(forKey: "Created stickers")
for imageName in imageNames! {
// let imagePath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let filePath = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(imageName)
// imageData.append(imagePath + "/" + imageName)
imageData.append(filePath)
}
print("Image Data - ", imageData)
finished()
}
以下是我将其应用于 StickerView 的方式:
func configure(usingImageName imagePath: String) {
let urlToImage = URL(fileURLWithPath: imagePath)
do {
let description = NSLocalizedString("", comment: "")
let sticker = try MSSticker(contentsOfFileURL: urlToImage, localizedDescription: description)
print("Sicker is here - ", sticker)
stickerView.sticker = sticker
}
catch {
fatalError("Failed to create sticker: \(error)")
}
}
但我得到的是没有贴纸的空白视图。
单元格内打印显示:
Sicker is here - <MSSticker-<0x280393640> imageFileURL file:///var/mobile/Containers/Data/PluginKitPlugin/32AF9E44-F2F1-4FD1-80B5-E8E4B6C6E338/Documents/F54067B8-18DA-4737-8ED3-B716E368AF6E.png localizedDescription >
当我使用 Bundle.main.path
从我的 Xcode 项目中的文件夹设置图像时,图像会显示,而不是从文档目录中设置。
我找到问题的根源:
应用程序扩展无法访问默认的文档目录文件夹。
解决方案:
像这样保存和检索图像时使用应用程序组并为图像创建路径:
let url = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "YOUR_APP_GROUP_NAME")?.appendingPathComponent("image.png")
之后,您可以轻松地在应用程序扩展中访问您的图像。
希望这对以后的人有所帮助!