Safari WebExtension

开发者账户注册 // 600+ 一年

扩展被包含在宿主 App 中,宿主 App 作为插件嵌入父应用,发行父应用以发行扩展

开发注意;
  • Develop > Allow Unsigned Extensions
  • Enable Extensions

调试:XCode 重新构建,再刷新 WebPage(需要的话)

  1. browser.runtime.sendNativeMessage/runtime.Port.postMessage // Safari 忽略应用 id,只发送给包含扩展的应有(非父应用)
  2. SafariWebExtensionHandler beginRequest 接收到请求,处理完可以返回消息到扩展 // 如果用 sendNativeMessage 发送的消息,则 context.completeRequest 返回消息作为其 Promise 解决值,如果用 postMessage 发送,则会触发 port.onMessage
  3. SFSafariApplication.dispatchMessage 发送消息到扩展,扩展 runtime.Port 接收消息 // 需要指定应用 id,有默认多余的字段