仅适用于Facebook,Twitter和Instangram的UIActivityViewController

时间:2018-03-20 11:04:55

标签: ios swift uiactivityviewcontroller

我正在尝试使用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来接近并接近,但我不确定。

谢谢

3 个答案:

答案 0 :(得分:2)

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

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
}

答案 1 :(得分:1)

Apple 支持部分默认UIActivityTypes,其中包含您FacebookTwitter

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

默认情况下,所有UIActivityTypes都会显示在UIActivityController中。您不希望在UIActivityController中显示的活动会添加到exclude list中,即

activityViewController.excludedActivityTypes = [.postToFlickr, .postToVimeo]

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

示例

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

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

答案 2 :(得分:1)

截至目前(2019年3月),仅当您在activityItems上设置图像且仅设置该图像时,Instagram共享选项才会出现。如果您在其中添加TEXT或URL对象,Instagram选项也不会显示。

Twitter在其他方面会接受TEXT和IMAGE,但是如果您也传递URL,它也不会显示为选项