Search code examples
iosswiftuiactivityviewcontroller

UIActivityViewController for Facebook, Twitter and Instagram ONLY


I am trying to get a UIActivityViewController for presenting only the options for Facebook, Twitter and Instagram. So far I have done:

    let shareText = "Hello, world!"

    let image = UIImage(named: "TheImage")
    let activityViewController = UIActivityViewController(activityItems: [shareText,image], applicationActivities: nil)
    activityViewController.excludedActivityTypes = [UIActivityType.addToReadingList,
                                                    UIActivityType.airDrop,
                                                    UIActivityType.assignToContact,
                                                    UIActivityType.copyToPasteboard,
                                                    UIActivityType.mail,
                                                    UIActivityType.message,
                                                    UIActivityType.openInIBooks,
                                                    UIActivityType.print,
                                                    UIActivityType.saveToCameraRoll
                                                    ]
    present(activityViewController, animated: true, completion: {})

But the UIActivityViewController is still giving me unwanted options.

I also thought to get and approach with NSExtensionItem but I am not sure about it.

Thank you


Solution

  • There are option available for Facebook and Twitter, You need to just add excludedActivityTypes. You have missing it.

    Instagram option still not available in activity types

    let image = UIImage(named: "TheImage")
    let activityViewController = UIActivityViewController(activityItems: [shareText,image], applicationActivities: nil)
    
    activityViewController.excludedActivityTypes = [.addToReadingList,
                                                   .airDrop,
                                                   .assignToContact,
                                                   .copyToPasteboard,
                                                   .mail,
                                                   .message,
                                                   .openInIBooks,
                                                   .print,
                                                   .saveToCameraRoll,
                                                   .postToWeibo,
                                                   .copyToPasteboard,
                                                   .saveToCameraRoll,
                                                   .postToFlickr,
                                                   .postToVimeo,
                                                   .postToTencentWeibo,
                                                   .markupAsPDF
    ]    
    
    present(activityViewController, animated: true, completion: {})
    

    I hope this will help you.

    There are following list of Activity types available.

    extension UIActivityType {
    
    
        @available(iOS 6.0, *)
        public static let postToFacebook: UIActivityType
    
        @available(iOS 6.0, *)
        public static let postToTwitter: UIActivityType
    
        @available(iOS 6.0, *)
        public static let postToWeibo: UIActivityType // SinaWeibo
    
        @available(iOS 6.0, *)
        public static let message: UIActivityType
    
        @available(iOS 6.0, *)
        public static let mail: UIActivityType
    
        @available(iOS 6.0, *)
        public static let print: UIActivityType
    
        @available(iOS 6.0, *)
        public static let copyToPasteboard: UIActivityType
    
        @available(iOS 6.0, *)
        public static let assignToContact: UIActivityType
    
        @available(iOS 6.0, *)
        public static let saveToCameraRoll: UIActivityType
    
        @available(iOS 7.0, *)
        public static let addToReadingList: UIActivityType
    
        @available(iOS 7.0, *)
        public static let postToFlickr: UIActivityType
    
        @available(iOS 7.0, *)
        public static let postToVimeo: UIActivityType
    
        @available(iOS 7.0, *)
        public static let postToTencentWeibo: UIActivityType
    
        @available(iOS 7.0, *)
        public static let airDrop: UIActivityType
    
        @available(iOS 9.0, *)
        public static let openInIBooks: UIActivityType
    
        @available(iOS 11.0, *)
        public static let markupAsPDF: UIActivityType
    }