Что я хочу
Я пытаюсь добиться следующего пользовательского потока:
- Пользователь просматривает веб-страницу в iOS Safari.
- Пользователь выбирает некоторый контент (текст и изображения) и ждет появления контекстного меню.
- Пользователь выбирает пункт «Поделиться…».
- Пользователь выбирает мое расширение приложения в меню общего доступа, которое появляется снизу.
- Выбранный контент и 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-адрес открытой веб-страницы при использовании расширения «Поделиться» для обмена выбранным контентом через контекстное меню в iOS Safari?