【问题标题】:Prevent my own app's share extension from appearing in the share sheet防止我自己的应用程序的共享扩展出现在共享表中
【发布时间】:2018-01-15 07:57:17
【问题描述】:

我正在构建一个管理音频文件的 iOS 应用。它包括一个共享扩展程序,用于接收来自其他应用程序的音频文件。它还可以与其他应用共享其音频文件。

当从我的应用发起共享时,我不希望我自己的应用出现在共享表中。换句话说,我不希望用户将我自己的音频文件发送回我的应用程序。

我找不到使用 NSExtensionActivationRule 排除我自己的应用程序的方法。

【问题讨论】:

  • 如果你找到答案,请告诉我!
  • 史蒂夫,您对此有何发现?
  • 很抱歉,我们从未找到解决此问题的方法。
  • @thibautnoah 你得到答案了吗?
  • @ilesh 不幸的是没有

标签: ios ios-extensions ios-sharesheet


【解决方案1】:

首先在您的代码中定义以下行:

class ActionExtensionBlockerItem: NSObject, UIActivityItemSource {
    func activityViewController(_ activityViewController: UIActivityViewController, dataTypeIdentifierForActivityType activityType: UIActivityType?) -> String {
        return "com.your.unique.uti";
    }
    func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? {
        // Returning an NSObject here is safest, because otherwise it is possible for the activity item to actually be shared!
        return NSObject()
    }
    func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivityType?) -> String {
        return ""
    }
    func activityViewController(_ activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: UIActivityType?, suggestedSize size: CGSize) -> UIImage? {
        return nil
    }
    func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
        return ""
    }
}

这里com.your.unique.uti 是您的应用程序组标识符:

然后在展示 activityViewController 时使用下面的代码:

let activityViewController = UIActivityViewController(activityItems: [/* Other Items To Share, */ ActionExtensionBlockerItem()], applicationActivities: nil)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2018-06-25
    • 2018-07-12
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多