gpt4 book ai didi

ios - 如何防止 Action 扩展出现在我自己的 iOS 应用程序中?

转载 作者:行者123 更新时间:2023-11-29 13:53:04 25 4
gpt4 key购买 nike

我有一个带有操作扩展的 iOS 应用程序,用于在其他应用程序中呈现 UIActivityViewController 时对图像执行操作。一切都按预期工作 - 如果我在另一个应用程序中显示事件表,我的操作扩展会出现在列表中以及系统操作(例如保存到文件创建表盘 等)。

但是,当我在图像上显示 UIActivityViewController 时,操作扩展也会出现在我自己的应用程序中,这是我不希望发生的。有什么方法可以防止我自己的操作扩展出现在我自己的应用程序内的 UIActivityViewController 中?

我试过在呈现 UIActivityViewController 时向 excludedActivityTypes 添加一个条目,如下所示,但这没有用:

let activity = UIActivityViewController(activityItems: [media], applicationActivities: nil)
activity.excludedActivityTypes = [UIActivity.ActivityType("com.example.ActionExtensionIdentifier")]
// other setup code
present(activity, animated: true)

最佳答案

这是我最终使用的解决方案,以防其他人需要它。 (代码取自这篇博客文章:https://pspdfkit.com/blog/2016/hiding-action-share-extensions-in-your-own-apps/ 所以也请查看它以了解更多详细信息,但我在此处提供的解决方案包含完成这项工作所需的一切。)

<强>1。首先,创建这个类

class ActionExtensionBlockerItem: NSObject, UIActivityItemSource {
func activityViewController(_ activityViewController: UIActivityViewController, dataTypeIdentifierForActivityType activityType: UIActivity.ActivityType?) -> String {
return String()
}

func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
return NSObject()
}

func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
return String()
}

func activityViewController(_ activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: UIActivity.ActivityType?, suggestedSize size: CGSize) -> UIImage? {
return nil
}

func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return String()
}
}

<强>2。应用该类的实例

当您呈现 UIActivityViewController 时,创建一个 ActionExtensionBlockerItem 实例并将其包含在 activityItems 数组中,如下所示:

func share(_ image: UIImage) {
let activity = UIActivityViewController(activityItems: [image, ActionExtensionBlockerItem()], applicationActivities: nil)
activity.popoverPresentationController?.sourceView = view // change to something appropriate for your app
activity.popoverPresentationController?.sourceRect = view.bounds // change to something appropriate for your app
present(activity, animated: true)
}

关于ios - 如何防止 Action 扩展出现在我自己的 iOS 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58511201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com