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

标签 ios ios8 xamarin nspredicate ios8-extension

如标题所述,我希望我的扩展程序在用户共享 *.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

关于iOS 分享扩展如何支持 *.wav 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29546283/

相关文章:

ios - 将数据从一个 View Controller 传递到另一个时出错

ios - 如何检索 MTKView/UIView/NSView 使用的当前纹理

ios - "Stream is sending an event before being opened"

ios - 如何在仅纵向的应用程序中以纵向或横向呈现 View Controller

xamarin - Xamarin 中依赖于分辨率的字体大小

ios - UIImagePickerController AllowsEditing 不工作

java - 使用 PhotoView 放大后无法达到图像的原始大小

ios - 如何将光标移动到 Swift 中 UITextField 的开头?

ios - 变量闭包初始化问题

ios - Init、带参数的 Init 和 Convenience Init