Задача довольно старая и решаемая, но я не могу решить даже после прочтения всех других ответов на SO.
Я хочу создать изображение и открыть Instagram с моим изображением, загруженным в экран фильтра. Нет открытого меню. Я хочу сразу перейти к приложению Instagram.
Вот код:
@objc func share() {
let fileManager = FileManager.default
do {
let documentDirectory =
try fileManager.url(
for: .documentDirectory, in: .userDomainMask,
appropriateFor: nil, create: true)
let fileURL = documentDirectory.appendingPathComponent("challenge.igo")
if let imageData = theImage.jpegData(compressionQuality: 0.5) {
try imageData.write(to: fileURL)
DLog(message: "file written to \(fileURL)")
let dic = UIDocumentInteractionController(url: fileURL)
dic.delegate = self
dic.uti = "com.instagram.exclusivegram"
let res = dic.presentPreview(animated: false)
DLog(message: "presentPreview result \(res)")
}
} catch {
DLog(message: "\(error)")
}
}
Я также реализую протокол UIDocumentInteractionControllerDelegate
:
extension ICShareController: UIDocumentInteractionControllerDelegate {
func documentInteractionControllerViewControllerForPreview() -> UIViewController {
return self
}
}
Но, увы, функция presentPreview
всегда возвращает false
, и предварительный просмотр не открывается.
Что я могу сделать не так?