У меня есть расширение рабочего ресурса, написанное на swift.Когда я тестирую операцию общего доступа из Safari, я всегда получаю только тип URL (kUTTypeURL).
То, что я хочу, - это получить какую-то визуализированную версию того, на что смотрит пользователь (PDF или HTML?).Использование URL-адреса и его открытие в веб-просмотре невозможно из-за проблем с аутентификацией и т. Д.
Я пробовал много разных правил активации без изменений.Вот текущий, который я использую:
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsFileWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>20</integer>
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
<integer>0</integer>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
Мой контроллер выглядит следующим образом - при запуске из Safari он всегда имеет только один тип вложения - URL:
override func didSelectPost() {
if let item = extensionContext?.inputItems.first as? NSExtensionItem {
if let attachments = item.attachments {
for attachment: NSItemProvider in attachments {
if attachment.hasItemConformingToTypeIdentifier(kUTTypePropertyList as String) {
attachment.loadItem(forTypeIdentifier: kUTTypePropertyList as String, options: nil, completionHandler: { (data, error) in
// Do stuff with this content now
self.extensionContext?.completeRequest(returningItems: [], completionHandler:nil)
})
}
if attachment.hasItemConformingToTypeIdentifier(kUTTypeURL as String) {
attachment.loadItem(forTypeIdentifier: kUTTypeURL as String, options: nil, completionHandler: { (url, error) in
if let shareURL = url as? NSURL {
// Do stuff with your URL now.
}
self.extensionContext?.completeRequest(returningItems: [], completionHandler:nil)
})
}
}
}
}
}
ДругойПодходы, которые я видел, используют файл javascript для обхода DOM, но не видели хороших примеров, и я не уверен, поможет ли это мне в любом случае.