仅适用于 Facebook、Twitter 和 Instagram 的 UIActivityViewController

UIActivityViewController for Facebook, Twitter and Instagram ONLY

我正在尝试获取一个 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,但我不确定。

谢谢

有适用于 Facebook 和 Twitter 的选项,您只需添加排除的Activity类型即可。你错过了。

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

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

希望对您有所帮助。

下面列出了 Activity 种类型。

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
}

Apple 提供对某些默认 UIActivityTypes 的支持,其中包括您需要的 FacebookTwitter

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

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

activityViewController.excludedActivityTypes = [.postToFlickr, .postToVimeo]

此外,每当在设备上安装包含 Share App ExtensionApp 时,它也会添加到 UIActivityController

示例

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

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

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

Twitter,另一方面会接受文本和图像,但如果你也传递 URL 它也不会显示为选项