Поделиться расширением с NSExtensionJavaScriptPreprocessingFile нет изображения

Я создаю расширение iOS Share. Мне нужно получить некоторые данные с веб-страниц, поэтому я использую файл JavaScript, чтобы получить эти данные и отправить их обратно в приложение для использования в расширении.

Заметил следующее. Когда я устанавливаю ключ NSExtensionJavaScriptPreprocessingFile в моем файле JavaScript, SLComposeServiceViewController отображается идеально, но без изображения!

Нравится:

введите описание изображения здесь

Если я удалю NSExtensionJavaScriptPreprocessingFile, мой SLComposeServiceViewController будет выглядеть так:

введите описание изображения здесь

Но мне нужно получить доступ к некоторым данным с веб-страницы (той, которую я беру с помощью JS), но мне также нужно это изображение! Я совершенно не понимаю, как получить и то, и другое, или даже не знаю, возможно ли это, потому что документы Apple сбивают с толку.

Спасибо!


person Andres    schedule 18.02.2016    source источник
comment
Такая же борьба и здесь. Что ты в итоге выяснил?   -  person SAHM    schedule 29.09.2017
comment
После многих часов тестирования я считаю, что вам нужно выбрать то или иное. Вы не можете одновременно иметь previewImage с веб-страницы и использовать NSExtensionJavaScriptPreprocessingFile. Не тот ответ, который я надеялся найти.   -  person SAHM    schedule 30.09.2017


Ответы (1)


Я точно не знаю ответа на этот вопрос, но я сам изучал вопросы о расширении общих ресурсов и наткнулся на пару, которая может быть вам полезна. Общая идея состоит в том, чтобы продолжить использование препроцессора JavaScript и вручную установить изображение для предварительного просмотра.

Получите изображение примерно так:

[itemProvider loadPreviewImageWithOptions:nil completionHandler:^(UIImage *image, NSError *error){

   if(image){
        //do anything here with the image
   }

}

как описано здесь: Изображение Safari для общего доступа к расширению iOS 8

И установите изображение предварительного просмотра SLComposeServiceViewController, переопределив loadPreviewView:

override func loadPreviewView() -> UIView! {        
  imagePreviewView = UIImageView(image: UIImage(named: "imageName"))
  return imagePreviewView
}

как описано здесь: Измените изображение предварительного просмотра в SLComposeServiceViewController

Опять же, я не знаю, сработает ли это. Судя по тому, что я читал, так и должно быть.

person Jannon    schedule 05.12.2016
comment
Нет, не думаю, что это работает. Та же проблема, о которой говорится в ОП, все еще существует. - person SAHM; 30.09.2017
comment
Я тестировал это, и это не работает. Изображение не проходит - это заставляет меня задаться вопросом, есть ли у Apple процессор javascript по умолчанию, который предоставляет изображение, и когда вы добавляете свой собственный процессор, вы перезаписываете их. - person Trev14; 11.01.2019