Safari WebExtension
开发者账户注册 // 600+ 一年
扩展被包含在宿主 App 中,宿主 App 作为插件嵌入父应用,发行父应用以发行扩展
开发注意;
- Develop > Allow Unsigned Extensions
- Enable Extensions
调试:XCode 重新构建,再刷新 WebPage(需要的话)
- browser.runtime.sendNativeMessage/runtime.Port.postMessage // Safari 忽略应用 id,只发送给包含扩展的应有(非父应用)
- SafariWebExtensionHandler beginRequest 接收到请求,处理完可以返回消息到扩展 // 如果用 sendNativeMessage 发送的消息,则 context.completeRequest 返回消息作为其 Promise 解决值,如果用 postMessage 发送,则会触发 port.onMessage
- SFSafariApplication.dispatchMessage 发送消息到扩展,扩展 runtime.Port 接收消息 // 需要指定应用 id,有默认多余的字段