iOS分享扩展如何支持*.wav文件

iOS Share extension how to support *.wav files

如标题所述,我希望我的扩展在用户共享 *.wav 文件时显示

我看到了以下苹果文档: https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW8

我正在尝试弄清楚如何实际使用文档中提到的内容来做到这一点。文档让我觉得我拥有大部分(如果不是全部的话)我需要的部分,但不知道它们是如何组合在一起的。

我知道我很可能必须构建一个 "SUBQUERY(..)" 语句,但它去哪里了?如何使用?

我最后做了以下事情:

对于 NSExtensionActivationRule 键,我将类型从 Dictionary 更改为 String 并输入以下字符串(您可以保留格式,不需要全部内联):

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio"
    ).@count == $extensionItem.attachments.@count
).@count >= 1

您只需要:

ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio"

但我的扩展程序也支持电影和图像,这就是为什么它也有这些(留给那些可能好奇如何支持多个的人。请注意,我决定支持更多的音频选项,而不仅仅是正如我最初询问的那样。可以在此处查找类型:Uniform Type Identifiers Reference

第一次计数检查确保宿主应用中的每个选定项目都符合扩展名。

第二次计数检查,末尾的那个用于表示扩展程序接受 1 个或多个项目(符合)。如果您希望您的分机一次只处理 1 个项目,您可以输入以下内容:

).@count == 1

或者,如果您想允许多个项目有上限:

).@count < 4

).@count <= 3

我想有人想知道没有外层的单个项目会是什么样子 SUBQUERY:

SUBQUERY(
    $extensionItem.attachments, 
    $attachment, 
    ANY $attachment.registeredTypeIdentifiers 
    UTI-CONFORMS-TO "public.audio"
).@count = 1

只需将 UTI-CONFORMS-TO "public.audio" 替换为 UTI-CONFORMS-TO "public.image"UTI-CONFORMS-TO "public.movie"