我正在尝试构建Native Messaging Test Project,但它总是无法使用Cannot find 'SFExtensionMessageKey' in scope构建。我该如何解决这个问题?
错误来自下面这段代码:
SafariWebExtensionHandler.swift
/*
See LICENSE folder for this sample’s licensing information.
Abstract:
Communicates with the extension running in Safari.
*/
import SafariServices
class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling {
// Receive a message from the JavaScript component of the Web Extension.
// Unpack the message, and then wrap in an object to send as the response.
func beginRequest(with context: NSExtensionContext) {
let item = context.inputItems[0] as? NSExtensionItem
let message = item?.userInfo?[SFExtensionMessageKey] // ERROR HERE
let response = NSExtensionItem()
response.userInfo = [ SFExtensionMessageKey: [ "Response to": message ] ] // AND ERROR HERE
context.completeRequest(returningItems: [response], completionHandler: nil)
}
}它失败是因为它在作用域中找不到SFExtensionMessageKey,但当我查找它时,我发现它应该包含在Safari Services中。
当我在Xcode中直接检查Safari Services文件时,我没有看到任何提到SFExtensionMessageKey的地方--这可能只是我的困惑。但它似乎被重新命名了,也许吧?
另一个想法是,我需要将SafariServices框架添加到各种应用程序目标的构建阶段(在“将二进制文件与库链接”部分下)。这也没有解决问题。
我在Xcode 12.1 & Swift 5上
发布于 2021-01-10 01:59:24
正如评论中所讨论的,SFExtensionMessageKey仅适用于macOS 11+,而不适用于iOS或更早的macOS版本。
https://stackoverflow.com/questions/65636377
复制相似问题