使iOS分享/操作扩展仅针对单个图像显示

5

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

<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中提取。
有人知道如何使我的扩展程序在这些情况下不显示吗?

看起来这个方法行得通。很奇怪我之前做的没用,但这个解决方案足够简单。谢谢! - Ross Kimes
你想回答它还是让我来领取赏金?哈哈 - mattyb
我已经回答了,但如果你也回答了,我会给你赏金! - Ross Kimes
非常感谢,我真的需要提高声望,我不想让你的赏金白白浪费! - mattyb
我认为您需要在接受我的答案之上手动授予我悬赏。 - mattyb
显示剩余4条评论
2个回答


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>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接