我想要的是
我正在尝试实现以下用户流程:
- 用户正在 iOS Safari 中浏览网页。
- 用户选择一些内容(文本和图像)并等待上下文菜单出现。
- 用户选择“共享...”项。
- 用户在底部出现的共享菜单中选择我的应用程序扩展。
- 选定的内容和网页 URL 通过 HTT 调用共享到远程服务器。
我试过的
我通过 Xcode 做了一个 Share 扩展。这是NSExtension
我的部分info.plist
:
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
<key>NSExtensionJavaScriptPreprocessingFile</key>
<string>test</string>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
这是test.js
文件:
var GetURL = function() {};
GetURL.prototype = {
run: function(arguments) {
arguments.completionFunction({"URL": document.URL});
}
};
var ExtensionPreprocessingJS = new GetURL;
我期望得到以下结果:inviewDidLoad
方法extensionContext?.inputItems
会为我提供几个输入项,通过这些输入项我将能够获取所选内容和 Web URL。
出了什么问题
InviewDidLoad
方法extensionContext?.inputItems
只为我提供了一项——所选内容的纯文本表示(即使我同时选择了图像和文本)。我可以使用纯文本,但我需要网页 URL。
我的问题
使用共享扩展程序通过 iOS Safari 中的上下文菜单共享所选内容时,如何获取打开网页的 URL?