在范围内找不到类型“SFSafariExtensionHandler”

问题描述 投票:0回答:2

我正在创建一个 Safari 应用程序扩展。我下载了 Sea Creator 示例项目

我想在扩展程序和 JavaScript 之间发送消息。根据Apple提供的文档,我应该能够使用以下功能来做到这一点:

override func messageReceived(withName messageName: String, from page: SFSafariPage, userInfo: [String : AnyObject]!) {
    page.dispatchMessageToScript(withName: "simpleMessage", userInfo: nil)
    page.dispatchMessageToScript(withName: "complexMessage", userInfo: ["myKey": "myValue"])
}

在 Sea Creator 项目中,我将 SafariWebExtensionHandler 修改为

import SafariServices

class SafariWebExtensionHandler: SFSafariExtensionHandler {
  override func messageReceived(withName messageName: String, from page: SFSafariPage, userInfo: [String : AnyObject]!) {
    page.dispatchMessageToScript(withName: "simpleMessage", userInfo: nil)
    page.dispatchMessageToScript(withName: "complexMessage", userInfo: ["myKey": "myValue"])
  }
}

但是我收到构建时错误:无法在范围内找到类型“SFSafariExtensionHandler”

我在 Mac OS 版本 11.4 上运行 Xcode 13.0 beta (13A5154h)

我觉得奇怪的是,我从 github 下载了一个随机项目,它并没有给我带来同样的错误。我想知道是否缺少一些额外的配置。

ios swift xcode safari-extension safari-app-extension
2个回答
0
投票

尝试将

SFSafariExtensionHandler
更改为
SFSafariExtensionHandling


0
投票

今天我可能也遇到了类似的错误。 XCode 在范围内没有找到任何 SFSafari... 类或协议,除了 SFSafariExtensionViewController 。 “导入 SafariServices”在那里,但没有帮助。

经过一些头痛之后,解决方案很简单 - 只需从头开始创建一个新项目,然后将原始源代码复制到那里即可。仅此而已。

我不知道是什么导致了最初的问题,但解决方案很简单。

© www.soinside.com 2019 - 2024. All rights reserved.