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