2015-10-23 2 views
2

У меня есть расширение действия iOS, которое должно поддерживать открытие изображений и URL-адресов (в частности, веб-страниц). Тем не менее расширение действия не отображается в списке доступных расширений при совместном использовании изображения из Safari. Например, при посещении https://en.wikipedia.org и при нажатии на значок общего доступа будет отображаться мое расширение действия, но посещение https://upload.wikimedia.org/wikipedia/commons/c/c4/PM5544_with_non-PAL_signals.png и нажатие значка общего доступа не будет. Я также могу войти в приложение «Фотографии» и выбрать 1 или более изображений для совместного использования, в которых будет отображаться расширение моего действия в качестве опции. Я впервые попробовал мой Info.plist файл следующим образом:Расширение действия для обработки изображений из Safari

<key>NSExtension</key> 
<dict> 
    <key>NSExtensionAttributes</key> 
    <dict> 
     <key>NSExtensionActivationRule</key> 
     <dict> 
      <key>NSExtensionActivationSupportsWebURLWithMaxCount</key> 
      <integer>-1</integer> 
      <key>NSExtensionActivationSupportsImageWithMaxCount</key> 
      <integer>-1</integer> 
     </dict> 
    </dict> 
</dict> 

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

<key>NSExtension</key> 
<dict> 
    <key>NSExtensionAttributes</key> 
    <dict> 
     <key>NSExtensionActivationRule</key> 
     <dict> 
      <key>NSExtensionActivationSupportsMovieWithMaxCount</key> 
      <integer>-1</integer> 
      <key>NSExtensionActivationSupportsFileWithMaxCount</key> 
      <integer>-1</integer> 
      <key>NSExtensionActivationSupportsAttachmentsWithMaxCount</key> 
      <integer>-1</integer> 
      <key>NSExtensionActivationSupportsWebPageWithMaxCount</key> 
      <integer>-1</integer> 
      <key>NSExtensionActivationSupportsWebURLWithMaxCount</key> 
      <integer>-1</integer> 
      <key>NSExtensionActivationSupportsImageWithMaxCount</key> 
      <integer>-1</integer> 
     </dict> 
    </dict> 
</dict> 

Однако, это еще не решает проблему. Для этого я должен использовать предикаты? Если да, то как и почему?

ответ

0

Если бы такая же проблема с моим расширением действия, он мог импортировать изображения из различных приложений (фотографии, почту, сообщения и большинство сторонних приложений), просто отлично, но не из Safari. В этом посте рассказывается, что делать iOS Share extension not working on image urls. Вы должны, вы должны написать свою строку NSPredicate, используйте это в Info.plist

<key>NSExtensionAttributes</key> 
    <dict> 
    <key>NSExtensionActivationRule</key> 
    <string>SUBQUERY (
     extensionItems, 
     $extensionItem, 
     SUBQUERY (
     $extensionItem.attachments, 
     $attachment, 
     ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" || 
     ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.text" 
     )[email protected] = 1 
     )[email protected] > 0 
    </string> 
    </dict> 

Примечания в моем случае моего расширение действия поддерживает текст тоже, следовательно public.text линии

0

Я решил этот выпуск

<key>NSExtensionActivationRule</key> 
     <string>SUBQUERY (
      extensionItems, 
      $extensionItem, 
      SUBQUERY (
      $extensionItem.attachments, 
      $attachment, 
      (
      ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO &quot;com.adobe.pdf&quot; 
      || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO &quot;public.image&quot; 
      || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO &quot;public.url&quot; 
      ) 
      )[email protected] == [email protected] 
      )[email protected] > 0</string> 

Последняя линия @count> 0 сделала трюк для меня.

Смежные вопросы