Возможно ли выполнить скриншот текущей видимой зоны веб-просмотра в Safari из расширения Share? Я мог бы использовать окна, но UIApplication не поддерживается в расширениях, поэтому я не могу получить доступ к этому окну.Скриншот Safari из Share Extension
ответ
Вы не можете так как UIApplication не может быть достигнут из расширения. Вы не можете получить первый UIWindow, который является слоем Safari, поэтому вам нужно играть с файлом предварительной обработки Javascript, который есть у расширений. Поэтому просто создайте файл Javascript, который при отправке в Safari генерирует строку base64 с текущими данными изображения видимой зоны. Возьмите эту строку через идентификатор kUTTypePropertyList в своем расширении. Поскольку это должно быть NSData, сгенерируйте UIImage оттуда, используя +imageWithData
. Это то, что вы ищете, без необходимости повторно загружать страницу, предотвращая вторую загрузку и плохое изображение, если веб-страница требует входа.
Насколько я знаю, вы не можете, если вы не вызываете API, который вам нужен динамически, и даже при этом вы можете столкнуться с проблемами разрешения конфликтов и проблемами утверждения магазина приложений.
Альтернатива может быть прохождение текущего URL Safari для вашего расширения, загрузите его с помощью скрытой UIWebView и сделать этот вид в UIImage, но вы потеряете текущую видимую информацию о зоне ...
Это то, что я сейчас делаю, но я не могу получить текущую видимую зону пользователь и я должен загрузить одну и ту же веб-страницу дважды (сафари и мой скрытый UIWebView). Думаю, это та часть, о которой они не говорили нам о расширяемости, насколько она ограничена. –
Этот подход также не сработает для веб-страниц, где пользователь должен войти в систему. – orkoden
да не может сделать перезагрузку для некоторых случаев –
Редактировать: Таким образом, ниже работает в Симуляторе, но не Работает на устройстве. В настоящее время я ищу решение.
Вы не можете получить только видимую область Сафари, но вы можете сделать получить скриншот с небольшой изобретательностью. Следующий метод отображает скриншот из ShareViewController.
func captureScreen() -> UIImage
{
// Get the "screenshot" view.
let view = UIScreen.mainScreen().snapshotViewAfterScreenUpdates(false)
// Add the screenshot view as a subview of the ShareViewController's view.
self.view.addSubview(view);
// Now screenshot *this* view.
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, false, 0);
self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Finally, remove the subview.
view.removeFromSuperview()
return image
}
Это утвержденный способ захватить скриншот веб-страницы в расширении доли:
for (NSExtensionItem *item in self.extensionContext.inputItems) {
for (NSItemProvider *itemProvider in item.attachments) {
[itemProvider loadPreviewImageWithOptions:@{NSItemProviderPreferredImageSizeKey: [NSValue valueWithCGSize:CGSizeMake(60.0f, 60.0f)]} completionHandler:^(UIImage * item, NSError * _Null_unspecified error) {
// Set the size to that desired, however,
// Note that the image 'item' returns will not necessarily by the size that you requested, so code should handle that case.
// Use the UIImage however you wish here.
}];
}
}
- 1. Скриншот содержимого Safari с расширением share
- 2. iOS 8 Share Extension Safari Image
- 3. Share image using share extension
- 4. Safari Extension
- 5. Slow iOS Share Extension
- 6. Share скриншот из встроенного хранилища android
- 7. ios share extension camera
- 8. iOS9 Share Extension не может отлаживать Xcode
- 9. Перенаправить обратно в приложение из Share Extension
- 10. скриншот всех вкладок chrome extension
- 11. Измените веб-страницу в Share Extension iOS8
- 12. Safari Extension, Fluid App
- 13. Selenium Testing Safari Extension
- 14. Safari Extension Popover Ссылки
- 15. Share extension - beginRequestWithExtensionContext не называется
- 16. iOS share extension off keyboard
- 17. Safari Extension Companion всегда null
- 18. Скриншот страницы с помощью @match chrome-extension: //
- 19. Share text AND media with WhatApp Share Extension
- 20. Safari 5 Extension Validating Event
- 21. ios share extension post button title
- 22. iOS Custom Share Extension получить контент
- 23. NSExtension Share Extension limit Фотографии кол-во
- 24. Share Extension Upload in Background с JavaScript
- 25. Файл "ProjectName-Swift.h" не найден - Share Extension
- 26. iOS Share Extension Grabbing URL в Swift
- 27. Использование динамического Javascript в прошивке Share Extension
- 28. Share Extension не показывает данные - ios
- 29. Share extension заставляет сафари висеть в iphone
- 30. iOS 8 Share Extension Attachments - Xcode - Swift
Можете ли вы предоставить фрагмент кода примера js-файла? – iMash
@skozz Привет, Я пытаюсь использовать html2canvas для генерации изображения, но как вернуть это расширение. Я также попытался вернуть document.body, но он не работает. –