Опубликуйте в Instagram, открыв приложение Instagram – iOS, Swift

#ios #swift #instagram #instagram-api

Вопрос:

У меня есть приложение для планирования Instagram, и я пытаюсь открыть его (см. Изображение ниже) в Swift 5.x. Цель проста: сохраните изображение в Firebase, как только придет время опубликовать уведомление!, пользователь нажимает на уведомление, и это (изображение ниже) открывается с соответствующим изображением/видео для публикации. Все работает, за исключением открытия Instagram с соответствующим фото/видео. Я уже пробовал это:

     func postToInstagram(image: URL) {
        let videoFileUrl: URL = image
        var localId: String?
        PHPhotoLibrary.shared().performChanges({
            let request = PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: videoFileUrl)
            localId = request?.placeholderForCreatedAsset?.localIdentifier
        }, completionHandler: { success, error in
            // completion handler is called on an arbitrary thread
            // but since you (most likely) will perform some UI stuff
            // you better move everything to the main thread.
            DispatchQueue.main.async {
                guard error == nil else {
                    // handle error
                    print(error)
                    return
                }
                guard let localId = localId else {
                    // highly unlikely that it'll be nil,
                    // but you should handle this error just in case
                    return
                }

                let url = URL(string: "instagram://library?LocalIdentifier=(localId)")!
                guard UIApplication.shared.canOpenURL(url) else {
                    // handle this error
                    return
                }
                UIApplication.shared.open(url, options: [:], completionHandler: nil)
            }
        })
    }
 

и это:

     func postToInstagram(image: URL, igURL: String) {
        let urlStr: String = "instagram://app"
        let url = URL(string: igURL)
        if UIApplication.shared.canOpenURL(url!) {
            print("can open")
                UIApplication.shared.open(url!, options: [:], completionHandler: nil)
        }
    }
 

Безрезультатно. Последний код работает, но открывает только само приложение Instagram, что нормально, но я хотел бы открыть представление на изображении ниже, а не на главном экране Instagram. Я также попытался изменить URL-адрес на «instagram://поделиться», и это работает, но переходит к публикации обычного поста, в то время как я хочу, чтобы пользователь сам решал, что он хочет делать со своим изображением.

Вот куда я хочу пойти: Опубликовать в Instagram

Примечание: Для всех, кто будет мне это рассказывать и кто будет задаваться вопросом: Да, мои схемы URL-адресов (LSApplicationQueriesSchemes) в порядке. И, просто чтобы уточнить, мне нужно получить изображение/видео с Firebase, прежде чем публиковать его.

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

1. вы обновили Info.plist информацию с LSApplicationQueriesSchemes

2. Да! Вот что я имел в виду под схемами URL-адресов

3. Если я не ошибаюсь, вам, возможно, придется использовать API Instagram Graph с разрешением «instagram_content_publish».