Swift: как обмениваться динамическими изображениями между основным проектом и расширением сообщений

Я пытаюсь добавить расширение наклейки в свое приложение, чтобы пользователи могли создавать наклейки в моем приложении, а затем использовать их в сообщениях. Однако пути к файлам кажутся разными, поэтому я не смог просто сохранить изображения в пути к файлам, а затем загрузить их в расширения сообщения. Каков наилучший способ обмена данными между приложением и его расширением? Особенно данные, которые слишком велики для NSUserDefaults.

2 ответа

Решение

Вы должны включить AppGroups, если вы хотите поделиться данными между вашим основным проектом и расширением приложения.

Полное руководство по его включению и обмену данными можно найти здесь ( http://www.theappguruz.com/blog/ios8-app-groups).

После включения AppGroupsВы можете сохранить созданную наклейку в общем контейнере следующим образом:

if let fileManager = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "") 
{
     let imageName = "imageName" // write your image name here
     let imageLocationUrl = fileManager.appendingPathComponent(imageName)

     // for saving image

     if let data:Data = UIImagePNGRepresentation(image) {
         do {
            try data.write(to: imageLocationUrl)
         }catch {
                // couldn't write
         }
     }
}

Для получения изображения,

if let fileManager = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "") 
{
     let imageName = "imageName" // write your image name here
     let imageLocationUrl = fileManager.appendingPathComponent(imageName)

     // for getting image

     if let data:Data = Data(contentsOfFile: imageLocationUrl.path) {
        let image = UIImage(data: data, scale: UIScreen.main.scale)
     }
}      

Я разобрался с ответом, собрал цели в группу, и вы можете получить доступ к одним и тем же путям fileManager

Другие вопросы по тегам