iOS 13 Nur-Instagram-Foto-Sharing funktioniert nicht

8

Bis iOS 12.4 funktionierte die Implementierung der Fotofreigabe für Instagram-Feeds (gemäß der Dokumentation ) ordnungsgemäß, aber seit iOS 13 funktioniert sie nicht mehr.

Bei der aktuellen Implementierung - UIDocumentInteractionControllerUTI ist auf "com.instagram.exclusivegram"und Dateierweiterung auf eingestellt .igo- ist überhaupt keine Instagram-Freigabeoption sichtbar. Wenn ich die Dateierweiterung in ändere, wird .igunter den Vorschlägen die Option zum Teilen von Instagram angezeigt. Auf diese Weise funktioniert das Teilen für Feeds, aber das ist nicht die erwartete Lösung nur für Instagram.

Wenn Sie UTI auf setzen, "com.instagram.photo"ändert sich nichts.

Das erwartete Verhalten besteht darin, dass die Ansicht unten sichtbar ist, wenn ich auf die Schaltfläche "Teilen" klicke, ohne zusätzliche Schritte. Könnte das der Fehler von Instagram sein oder gibt es eine andere Möglichkeit, ihn für iOS 13 zu implementieren?

Geben Sie hier die Bildbeschreibung ein

Bastek
quelle
FWIW, ich kämpfe genau das gleiche Problem. Ich habe die 119.0-Version von Instagram auf Geräten mit iOS 11, 12 und 13 installiert, und das Problem tritt nur auf Geräten mit iOS 13 auf. Vermutlich bedeutet dies, dass es unter iOS 13 fehlerhaft und nicht spezifisch ist zur Instagram App.
Dave L

Antworten:

4

Sie sollten Ihr Bild zur Fotobibliothek hinzufügen und das Bild dann direkt für Instagram freigeben

Vergessen Sie zunächst nicht, Ihrer info.plist das Schema NSPhotoLibraryAddUsageDescription und instagram hinzuzufügen:

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

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

Funktioniert korrekt für 12.4 und 13 iOS

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") }
    }
}
}

Ergebnis Geben Sie hier die Bildbeschreibung ein

Nikita
quelle