创建 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 无用户界面 在 操作类型中 。
我正在尝试创建类似于 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 无用户界面 在 操作类型中 。