如何在UIActivityViewController中识别和排除第三方ActivityType(例如,“发送到Kindle”,“ Chrome”)?

时间:2019-05-17 17:32:04

标签: ios swift uiactivityviewcontroller

herehere所述,可以使用ActivityType的{​​{1}}排除其他UIActivityViewController选项,而不仅仅是预先定义的选项

但是,如何找出任何给定excludedActivityTypes的标识符(如果可能,最好以编程方式在构建时/运行时),以便随后将其排除在外?

例如,我要禁用发送到Kindle Chrome

2 个答案:

答案 0 :(得分:1)

要找出第三方活动的ActivityType,请在显示您的UIActivityViewController后选择该活动。

调用完成处理程序时,您提供给活动控制器的完成关闭/阻止具有一个类型为ActivityType的参数,告诉您选择了哪个。

例如:

activityVC.completionWithItemsHandler = { activity, success, items, error in
    print("activity: \(activity), success: \(success), items: \(items), error: \(error)")
}

现在您知道该活动的ActivityType。更新代码以将该值添加到传递给excludedActivityTypes的列表中。

答案 1 :(得分:0)

FYI,由@ rmaddy的最佳答案决定,如果有兴趣,这些是发送到Kindle Chrome 的特定标识符:< / p>

let kindleActivity = UIActivity.ActivityType(rawValue: "com.amazon.Lassen.SendToKindleExtension")
let chromeActivity = UIActivity.ActivityType(rawValue: "com.google.chrome.ios.ShareExtension")

this answer to a related question中已经定义了许多其他示例。

不幸的是,即使将它们添加到excludedActivityTypes的数组中,它们似乎仍然显示在UIActivityViewController中。非常欢迎提供任何关于为什么以及如何解决此问题的意见!