Что я хочу
Я пытаюсь выполнить следующий поток пользователей:
- Пользователь просматривает веб-страницу в Safari iOS.
- Пользователь выбирает какой-либо контент (текст и изображения) и ожидает появления контекстного меню.
- Пользователь выбирает элемент "Поделиться...".
- Пользователь выбирает мое расширение приложения в меню совместного доступа, которое появляется внизу.
- Выбранный контент и URL-адрес веб-страницы передаются на удаленный сервер через HTT-вызов.
Что я пробовал
Я сделал расширение Share через Xcode. Здесь раздел 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;
Я ожидал следующего результата: в viewDidLoad
метод extensionContext?.inputItems
предоставил мне несколько элементов ввода, через которые я смог бы получить выбранный контент и веб-URL.
Что не так.
В viewDidLoad
метод extensionContext?.inputItems
предоставляет мне только один элемент - простое текстовое представление выбранного содержимого (даже когда я выбрал изображения и текст одновременно). Я могу жить с открытым текстом, но мне нужен URL-адрес веб-страницы.
Мой вопрос
Как я могу получить URL-адрес открытой веб-страницы при использовании расширения Share для совместного использования выбранного контента через контекстное меню в iOS Safari?