我的应用程序中有一个扩展程序,允许用户选择其“照片/图片”应用程序的图片或视频,以发布在我的应用程序中。
但是,我希望我的用户选择或多张图片,或者仅选择一个视频,而使用此配置是不可能的。
我已经阅读了这篇文章:NSExtension Share Extension limit Photos count
他们解释说我可以执行自定义验证规则,但是我不知道如何编写它。是否还有其他激活参数,或者有人可以帮助您编写规则?
谢谢!
答案 0 :(得分:7)
Apple提供了执行所需操作的选项。我们可以在这里查看文档:
我将UTI-CONFORMS-TO
项修改为视频和图像,并且计数了一些:
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
).@count <= 20
).@count >= 1
OR
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY(
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.video"
).@count == 1
).@count == 1
此查询应将选择范围限制为仅1个视频或1到20个图像。请注意,您应按以下方式指定此查询:
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>
--- SUBQUERY HERE ---
</string>
</dict>
我没有测试此代码,它可能无法完全正常运行,但是它将为您指明正确的方向。
答案 1 :(得分:1)
这是一个有效的答案,奇怪的是我没有设法在单个子查询中使逻辑条件(AND / OR)起作用,所以我不得不将其拆分:
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY(
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie"
).@count == 1
AND
SUBQUERY(
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
).@count == 0
).@count == 1
OR
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY(
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie"
).@count == 0
AND
SUBQUERY(
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
).@count <= 20
).@count >= 1