iOS Share 扩展如何支持 *.wav 文件
Posted
技术标签:
【中文标题】iOS Share 扩展如何支持 *.wav 文件【英文标题】:iOS Share extension how to support *.wav files 【发布时间】:2015-04-09 18:33:30 【问题描述】:正如标题所述,我希望在用户共享 *.wav 文件时显示我的扩展程序
我遇到了以下苹果文档: https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW8
我正在尝试弄清楚如何实际使用文档中提到的内容来做到这一点。文档让我感觉到我拥有的大部分(如果不是我需要的所有部分),但不是它们如何组合在一起。
我知道我很可能必须构建一个“SUBQUERY(..)”语句,但它在哪里呢?如何使用它?
【问题讨论】:
【参考方案1】:我最终做了以下事情:
对于 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
【讨论】:
请务必在谓词字符串中错误地使用"
和not 来使用”
。这将为您节省大量时间和头痛。
为什么不在谓词中只使用public.data
而不是所有这些类型?它有效...
这不适用于m4a
扩展文件。 :(
public.mpeg-4-audio
MPEG-4 audio layer (.m4a)
public.mpeg-4, public.audio
,我的信息来源:escapetech.eu/manuals/qdrop/uti.html
@ParthTamane,就像上面的 cmets 一样,确保你的引号没有被你的文本编辑器自动更正。这也可以追溯到 iOS 8,不幸的是我无法确定某些设置是否发生了变化。【参考方案2】:
我想有人想知道如果没有外部 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"
。
【讨论】:
以上是关于iOS Share 扩展如何支持 *.wav 文件的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中,如何从数据中创建音频文件(.wav、.mp3)文件?
如何在 iOS phonegap 应用程序中压缩 wav 文件