我在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
中拉出来。
在这些情况下,任何人都知道如何将我的扩展程序设置为而不是?
答案 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 "public.image" ).@count == 1 ).@count == 1</string>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.ui-services</string>
</dict>