假设我已经实现了一个 iOS 网络浏览器,能够在 webview 中与 Javascript 进行双向通信。如果我想要任何iOS8 Action 扩展在其中工作,就像在 Mobile Safari 中那样,我必须做什么?告诉webview对授权ExtensionPreprocessingJS
对象执行函数并获取回调结果是没有问题的。但我怎么能抓住它NSExtensionJavaScriptPreprocessingFile
呢?我还没有找到任何允许我枚举符合条件的应用程序扩展的 iOS8 API。获取他们Info.plist
的 s 并实际从应用程序扩展的捆绑内容中获取文件的次数越少。
通过我的测试 Action 扩展,我知道extensionContext.inputItems
曾经给予扩展的全部内容只是Apple Action 扩展文档所说的:一个NSItemProvider
under NSExtensionItemAttachmentsKey
,提供一个单一kUTTypePropertyList
的 JS 执行已经返回的内容。换句话说,JS 必须在beginRequestWithExtensionContext
被调用之前就被知道并被执行。
我是否错过了什么,或者 3rd 方应用程序真的不可能像 Mobile Safari 一样做同样的事情?从应用程序访问安全的角度来看,这是有道理的,但是……这里的关键词是“模块化”和“可扩展性”,对吧?Mobile Safari 是不是比普通的 UI/WKWebView 动物更平等?我的意思是,WKWebView
确实有一些简洁的新 JS 功能(evaluate
完成处理程序WKUserContentController
),但我如何将它与通用 Action 扩展连接起来?