Lena Verhoev
Lena Verhoev

Reputation: 259

Swift UIActivityViewController - crashing on sharing to instagram "You can only share multiple photos and videos on the Instagram app"

[![Screenshot of Instagram sharing error on iPhone][1]][1]I have an UIActivityViewController. It creates posts nicely for Mail and Twitter and includes the image as expected, but when selecting the Instagram icon, I get the alert "Couldn't share to Instagram. You can only share multiple photos and videos in the Instagram app" and then it hangs after clicking okay (with no errors in Xcode).

I'm a bit confused by the error message? I am testing on my iPhone.


let activityItem1 = ShareableText(title: name)
       
var activities:[Any] = [ activityItem1 ]
        
if let aScreenShot = myScreenshot() {
           
let activityItem2 = ShareableImage(image: aScreenShot)
activities.append(activityItem2)
}
        
let shareVC = UIActivityViewController(activityItems: activities, applicationActivities: nil)
shareVC.excludedActivityTypes = [ .assignToContact, .airDrop, .addToReadingList ]

self.present(shareVC, animated: true)


class ShareableImage:NSObject, UIActivityItemSource {

    let image:UIImage
    
    init(image:UIImage) {
        self.image = image
    }
    
    func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
        return image
    }
    
    func activityViewController(_ activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: UIActivity.ActivityType?, suggestedSize size: CGSize) -> UIImage? {
        let image = UIImage(named: "Icon_CompletedShare")
        return image
    }
    
    func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
        return image
    }
    
    
}


class ShareableText:NSObject, UIActivityItemSource {
    
    let title:String
    
    init(title:String) {
        self.title = title
    }
    
    func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
        return title
    }
    
    func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
        return title
    }
    
    func activityViewController(_ activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: UIActivity.ActivityType?, suggestedSize size: CGSize) -> UIImage? {
        let image = UIImage(named: "Icon_CompletedShare")
        return image
    }
    
    func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
        return title
    }
    
    
}```


  [1]: https://i.sstatic.net/mfgj0.jpg

Upvotes: 5

Views: 727

Answers (0)

Related Questions