iOS 13 O compartilhamento de fotos somente no Instagram não funciona

8

Até o iOS 12.4, a implementação do compartilhamento de fotos no feed do Instagram (seguindo a documentação ) funcionava corretamente, mas desde o iOS 13 ele não funciona mais.

Com a implementação atual - UIDocumentInteractionControllera UTI está definida como "com.instagram.exclusivegram"e a extensão do arquivo como .igo- não há opção de compartilhamento do Instagram visível. Quando mudo a extensão do arquivo para .ig, vejo a opção de compartilhamento do Instagram entre as sugestões. Dessa forma, o compartilhamento para alimentação funciona, mas essa não é a solução esperada apenas para o Instagram.

Definir UTI para "com.instagram.photo"não altera nada.

O comportamento esperado é ver a visualização visível abaixo quando eu clico no botão "compartilhar", sem etapas adicionais. Poderia ser o bug do Instagram ou existe alguma outra maneira de implementá-lo no iOS 13?

insira a descrição da imagem aqui

Bastek
fonte
FWIW, estou lutando exatamente contra o mesmo problema. Eu tenho a versão 119.0 do Instagram instalada em dispositivos com iOS 11, 12 e 13, e o problema ocorre apenas no dispositivo com iOS 13. Acho que isso significa que é algo que foi quebrado no iOS 13 e não específico para o aplicativo Instagram.
Dave L

Respostas:

4

você deve adicionar sua imagem à biblioteca de fotos e compartilhá-la diretamente no instagram

Antes de tudo, não se esqueça de adicionar o NSPhotoLibraryAddUsageDescription e o esquema do instagram às suas informações.

<key>NSPhotoLibraryAddUsageDescription</key>
<string>$(PRODUCT_NAME) wants to save pictures to your library</string>

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>instagram</string>
</array>

Funciona corretamente para iOS 12.4 e 13

import UIKit
import Photos

class TestViewController: UIViewController, UIDocumentInteractionControllerDelegate {

override func viewDidLoad() {
    super.viewDidLoad()
    postImageToInstagram(UIImage(named: "bigImage")!)
}

func postImageToInstagram(_ image: UIImage) {
    // Check if we have instagarm app
    if UIApplication.shared.canOpenURL(URL(string: "instagram://app")!) {
        // Requesting authorization to photo library in order to save image there
        PHPhotoLibrary.requestAuthorization { status in
            if status == .authorized {
                UIImageWriteToSavedPhotosAlbum(image, self, #selector(self.image(_:didFinishSavingWithError:contextInfo:)), nil)
            } else { print("wrong status \(status)") }
        }
    } else { print("Please install the Instagram application") }
}

@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
    if let error = error {
        print(error)
        return
    }
    let fetchOptions = PHFetchOptions()
    // add sorting to take correct element from fetchResult
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
    fetchOptions.fetchLimit = 1
    // taking our image local Identifier in photo library to share it
    let fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions)
    if let lastAsset = fetchResult.firstObject {
        let url = URL(string: "instagram://library?LocalIdentifier=\(lastAsset.localIdentifier)")!
        if UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url) }
        else { print("Please install the Instagram application") }
    }
}
}

Resultado insira a descrição da imagem aqui

Nikita
fonte