创建 iOS 没有 UI 的操作扩展

Create iOS Action Extension with no UI

我正在尝试创建类似于 iOS 中可用的系统 "Copy" 操作的操作扩展。
我发现不同的答案说不可能有非全屏 UI,但根据 Apple Official Documentation 可能没有 UI(我想就像在复制操作中一样)。

Action (iOS and macOS; UI and non-UI variants)

我试过创建透明视图,但结果总是全屏黑色覆盖。
我已经在 Info.plist 中将 NSExtensionActionWantsFullScreenPresentation 指定为 NO,但没有任何变化。

知道怎么做吗?

In iOS, an Action extension:

  • Helps users view the current document in a different way

  • Always appears in an action sheet or full-screen modal view

  • Receives selected content only if explicitly provided by the host app

回答我自己的问题:实际上可以通过分配 属性 NSExtensionPrincipalClass to a class implementing a NSExtensionRequestHandling 协议在 iOS 上创建非 UI 操作扩展。

示例:

class ActionRequestHandler: NSObject, NSExtensionRequestHandling {

    var extensionContext: NSExtensionContext?

    func beginRequest(with context: NSExtensionContext) {
        // Do not call super in an Action extension with no user interface
        self.extensionContext = context

        // Do stuff with the context

    }
}

创建这样的扩展的最简单方法是添加一个新目标(文件 > 新建 > 目标),select 操作扩展,然后 select 无用户界面 操作类型中