Общий доступ к Instagram для iOS-канала не работает (UIDocumentInteractionController)

#ios #swift #facebook #instagram

#iOS #быстрый #Facebook #Instagram

Вопрос:

iOS 14.2, я не могу поделиться изображением, как описано в https://developers.facebook.com/docs/instagram/sharing-to-feed /

Я могу правильно поделиться тем же изображением с любым другим приложением из этого меню (например, telegram).

Код:

 func shareToInstagramFeed() {
    let instagramURL = NSURL(string: "instagram://")

    if UIApplication.shared.canOpenURL(instagramURL! as URL) {
        let jpgPath = (NSTemporaryDirectory() as NSString).appendingPathComponent("instagram.ig")
        do {
            try selectedImage.image?.jpegData(compressionQuality: 1)?.write(to: URL(fileURLWithPath: jpgPath), options: .atomic)
        } catch {
            print(error)
        }
        let rect = CGRect.zero
        
        documentInteractionController = UIDocumentInteractionController(url: URL(fileURLWithPath: jpgPath))
        documentInteractionController.delegate = self
        documentInteractionController.uti = "com.instagram.photo"
        documentInteractionController.presentOpenInMenu(from: rect, in: view, animated: true)
    }
}
 

Меню » Поделиться»:
введите описание изображения здесь

Ошибка Instagram: введите описание изображения здесь

Комментарии:

1. У меня точно такая же проблема, вы нашли какое-нибудь решение?

2. Здесь та же проблема. Очень неприятно. Все остальные варианты работают, за исключением Instagram

Ответ №1:

Я боролся с этим и в итоге использовал UIActivityViewController, и это сработало.

  let items = [image]
    let ac = UIActivityViewController(activityItems: items, applicationActivities: nil)
    present(ac, animated: true)
 

Ответ №2:

В версии Instagram 171.0 эта проблема исправлена. Это работает, но очень некрасиво, вы не можете выбрать историю или ленту, и вы не можете редактировать фотографию.

Я считаю, что в функции instagram улучшит эту функцию.

Если вам нужно поделиться только одним изображением, вы можете использовать этот обходной путь:

 let ac = UIActivityViewController(activityItems: [imageUrl, imageUrl], applicationActivities: nil)
present(ac, animated: true)
 

(ImageUrl намеренно набран 2 раза)
Затем вы получите следующий экран:
введите описание изображения здесь