如何在iOS分享扩展SUBQUERY中排除非图片视频的其他文件类型
iOS分享扩展激活规则优化:仅接受图片/视频且限制总数4个
当前你的激活规则只限制了视频和图片的单类型数量,但没有过滤掉非图片/视频的附件,导致PDF等文件仍会唤起扩展。需要修改规则,确保所有附件只能是图片或视频,同时保留总数不超过4、视频最多2个、图片最多2个的限制。
修改后的完整激活规则如下:
<key>NSExtensionAttributes</key> <dict> <key>NSExtensionActivationRule</key> <string> SUBQUERY ( extensionItems, $extensionItem, SUBQUERY( $extensionItem.attachments, $attachment, ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" OR ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie" ).@count == $extensionItem.attachments.@count AND SUBQUERY( $extensionItem.attachments, $attachment, ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie" ).@count <= 2 AND SUBQUERY( $extensionItem.attachments, $attachment, ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ).@count <= 2 AND $extensionItem.attachments.@count <= 4 ).@count >= 1 </string> </dict>
关键修改说明:
- 新增
SUBQUERY(...).@count == $extensionItem.attachments.@count:确保当前extensionItem下的所有附件都是图片或视频,彻底排除PDF等其他类型 - 保留原有的视频≤2、图片≤2的限制,同时新增
$extensionItem.attachments.@count <=4强化总数限制(作为双重保障) - 外层SUBQUERY确保至少有一个符合条件的extensionItem存在
内容的提问来源于stack exchange,提问作者Samuël
相关产品推荐
相关产品推荐

