阻止我自己的应用程序的共享扩展程序出现在共享表中

时间:2017-08-07 22:26:50

标签: ios ios-extensions ios-sharesheet

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

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

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

1 个答案:

答案 0 :(得分:0)

很抱歉,但是希望这个回答能对您有所帮助。

首先在代码中定义以下行

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 是您的应用程序组标识符see this image for refrence 然后在显示activityViewController时使用下面的代码

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