获取iOS共享/操作扩展仅显示单个图像

时间:2016-11-23 16:18:01

标签: ios ios-extensions

我在iOS应用中有一个操作扩展程序,我只希望在用户共享单个图像时可用。我NSExtension中的info.plist键看起来像这样。

<key>NSExtension</key>
<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsImagesWithMaxCount</key>
            <integer>1</integer>
        </dict>
    </dict>
    <key>NSExtensionMainStoryboard</key>
    <string>MainInterface</string>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.ui-services</string>
</dict>

我使用的唯一激活规则是NSExtensionActivationSupportsImagesWithMaxCount,其值为1。但是,在分享其他内容时,扩展程序仍会显示。例如,当我点击Safari中的操作按钮时会显示它。

在Safari案例中,没有图像可以从NSExtensionContext中拉出来。

在这些情况下,任何人都知道如何将我的扩展程序设置为而不是

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

感谢@ Matthew-Bordas能够让这个工作得以实现。解决方案是使用谓词。

<key>NSExtension</key>
<dict>
  <key>NSExtensionAttributes</key>
  <dict>
    <key>NSExtensionActivationRule</key>
    <string>SUBQUERY ( extensionItems, $extensionItem, SUBQUERY ( $extensionItem.attachments, $attachment, ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO &quot;public.image&quot; ).@count == 1 ).@count == 1</string>
  </dict>
  <key>NSExtensionMainStoryboard</key>
  <string>MainInterface</string>
  <key>NSExtensionPointIdentifier</key>
  <string>com.apple.ui-services</string>
</dict>