仅适用于 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
的支持,其中包括您需要的 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
更多 选项中隐藏。
如果您仍然遇到任何问题,请告诉我。
截至目前(2019 年 3 月),Instagram 共享选项只会在您设置图像并且仅在 activityItems 上设置该图像时出现。如果您在那里添加文本或 URL 对象,Instagram 选项也不会显示。
Twitter,另一方面会接受文本和图像,但如果你也传递 URL 它也不会显示为选项
我正在尝试获取一个 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
的支持,其中包括您需要的 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
更多 选项中隐藏。
如果您仍然遇到任何问题,请告诉我。
截至目前(2019 年 3 月),Instagram 共享选项只会在您设置图像并且仅在 activityItems 上设置该图像时出现。如果您在那里添加文本或 URL 对象,Instagram 选项也不会显示。
Twitter,另一方面会接受文本和图像,但如果你也传递 URL 它也不会显示为选项