ios - 创建用于空投、iOS 的自定义 UTI

标签 ios uti airdrop

我在我的 info.plist 中使用这段代码:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>AirDrop Profile File Type</string>
        <key>LSHandlerRank</key>
        <string>Default</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.apple.customProfileUTI.customprofile</string>
        </array>
    </dict>
</array>

声明自定义文件类型,按照答案 here 进行,并查看了链接的示例代码,但不能很好地理解它。 我有一个结构,我正在转换为数据,然后与空投共享,我试图了解如何创建数据类型,以便接收设备知道打开我的应用程序以接收数据。

谁能帮我解决一下?

答案跟进here

最佳答案

如果您的应用定义了新的文件类型。那么您需要在 Info.plistUTExportedTypeDeclarations 部分定义该自定义 UTI。

这可以在 Xcode 中的应用目标的“信息”选项卡上的“导出的 UTI”部分下进行设置,或者您可以手动更新 Info.plist,如下所示。

CFBundleDocumentTypes 用于声明您的应用可以打开的文件类型。

这是一个组合的文件类型,恰好是一个扩展名为 .fun 的二进制文件。

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>My Custom Binary File</string>
        <key>UTTypeIdentifier</key>
        <string>com.mycompany.myapp.myfiletype</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>fun</string>
            </array>
        </dict>
    </dict>
</array>

有了它,您还可以设置您的 CFBundleDocumentTypes,这样您的应用程序就可以作为打开此类文件的选择:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>My Custom Binary File</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.mycompany.myapp.myfiletype</string>
        </array>
    </dict>
</array>

请注意 CFBundleDocumentTypesLSItemContentTypes 值必须如何匹配 UTI 的 UTTypeIdentifier

关于ios - 创建用于空投、iOS 的自定义 UTI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45154373/

相关文章:

swift - UIActivityViewController - 不能同时 AirDrop 多个对象类型

ios - 通过 AirDrop 共享的文件不完整

javascript - 在 firebase 中存储 'long' 类型

ios - 在后台接收推送通知

macos - OSX,无法使用自定义UTI进行Finder上下文菜单服务过滤

ios - 在 IOS 上,您可以让 QLPreviewController 将某些文件视为文本吗?

objective-c - UIDocumentInteractionController,没有文件扩展名,只有 UTI

ios - MKMapItem 地标在 swift 中不可用

ios - 尝试将 Facebook Messenger 集成到 iOS 应用程序时出现 "FBAPIErrorDomain error 404"

ios - 如何使用 AirDrop 同时发送文本(或 URL)和图像