Невозможно отобразить наклейки из каталога «Документы» в расширении iMessage - PullRequest
0 голосов
/ 26 апреля 2019

В моем приложении пользователи могут создавать изображения, а затем использовать их в качестве стикеров в 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 >

Изображения отображаются, когда я устанавливаю их из папки внутри проекта Xcode, используя Bundle.main.path, но не из каталога документов.

1 Ответ

0 голосов
/ 27 апреля 2019

Я нашел источник моей проблемы:

Расширения приложений не могут получить доступ к папке каталога документов по умолчанию.

Решение:

Используйте группы приложений и укажите путь к изображению при сохранении и получении его следующим образом:

let url = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "YOUR_APP_GROUP_NAME")?.appendingPathComponent("image.png")

После этого вы можете легко получить доступ к вашим изображениям в приложениях расширений.

Надеюсь, это поможет кому-то в будущем!

...