我想要什么
我正在尝试实现以下用户流程:
- 用户在iOS Safari中浏览网页。
- 用户选择一些内容(文本和图像)并等待上下文菜单出现。
- 用户选择“分享…”项。
- 用户在从底部弹出的共享菜单中选择我的应用扩展程序。
- 所选内容和网页URL通过HTTP调用共享到远程服务器。
我尝试过的方法
我通过Xcode制作了一个Share扩展程序。这是我的info.plist
文件中的NSExtension
部分:
<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;
我期望以下结果:在viewDidLoad
方法中,extensionContext?.inputItems
将为我提供多个输入项,通过这些输入项,我将能够获取所选内容和网页URL。
出了什么问题
在viewDidLoad
方法中,extensionContext?.inputItems
仅向我提供一个项目--选择的内容的纯文本表示(即使同时选择图像和文本)。我可以使用纯文本,但我需要网页URL。
我的问题
如何在iOS Safari中使用共享扩展通过上下文菜单共享所选内容时获取已打开网页的URL?