【问题标题】:UIActivityViewController for Facebook, Twitter and Instagram ONLY仅适用于 Facebook、Twitter 和 Instagram 的 UIActivityViewController
【发布时间】:2018-03-20 11:04:54
【问题描述】:

我正在尝试获取 UIActivityViewController 来仅显示 Facebook、Twitter 和 Instagram 的选项。到目前为止,我已经完成了:

    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: {})

但是 UIActivityViewController 仍然给了我不需要的选项。

我也想过使用 NSExtensionItem 获取和处理,但我不确定。

谢谢

【问题讨论】:

    标签: ios swift uiactivityviewcontroller


    【解决方案1】:

    Facebook 和 Twitter 有可用的选项,您只需添加 excludeActivityTypes。你错过了它。

    Instagram 选项在活动类型中仍然不可用

    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: {})
    

    希望对你有所帮助。

    有以下可用的活动类型列表。

    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
    }
    

    【讨论】:

    • 另外在扩展中我得到错误“'static var' declaration requires an initializer expression or getter/setter specifier”
    • 哦,是的。对不起..我的误解我会更新答案。
    • @ReimondHill,请立即查看。我已经更新了我的答案
    【解决方案2】:

    Apple 根据您的要求提供对某些默认 UIActivityTypes 的支持,包括 Facebook 和 Twitter。

    您可以在此处获取UIActivityTypes 的完整列表:https://developer.apple.com/documentation/uikit/uiactivitytype

    默认情况下,所有UIActivityTypes 都出现在UIActivityController 中。您不想出现在UIActivityController 中的活动可以添加到exclude list 中,即

    activityViewController.excludedActivityTypes = [.postToFlickr, .postToVimeo]
    

    此外,只要在设备上安装了包含 Share App Extension 的 App,它也会添加到 UIActivityController。

    示例:

    WhatsApp。每当您在设备上安装 WhatsApp 时,它都会在 UIActivityController 中显示为 Share App Extension。 您无法删除它们,只能在 UIActivityController's 更多 选项中隐藏它们。

    如果您仍然遇到任何问题,请告诉我。

    【讨论】:

      【解决方案3】:

      截至目前(2019 年 3 月),Instagram 分享选项仅在您设置图片且仅在 activityItems 上设置图片时才会出现。如果您还在那里添加 TEXT 或 URL 对象,Instagram 选项将不会显示。

      Twitter,通常会接受 TEXT 和 IMAGE,但如果您也传递 URL,它也不会显示为选项

      【讨论】:

      • 只是为了记录,这不再是这种情况(今天确认)
      猜你喜欢
      • 2017-06-06
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多