如何为以自己的自定义格式保存的每个文件添加自定义缩略图

How do I add a custom thumbnail for each file I save on my own custom format

我在 Target > Info > Document TypesTarget > Info > Exported Type Identifiers 上为我的应用程序定义了新的文件格式。

我还为这些文件定义了一个默认图标,方法是在 Document Types.

中的 Additional document type properties 中添加一个 CFBundleTypeIcon

现在,当我在 iOS 文件上看到我的一个文件时,该文件会显示该图标。

但是因为我自己的文件代表一幅图画,所以我真正想要的是每个文件有一个不同的缩略图。

我的文件是 package,我正在使用 FileWrapper 将内容保存在包中。

我的 Info.plist 上有这个。

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>LSTypeIsPackage</key>
            <true/>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>tb</string>
            </array>
            <key>CFBundleTypeIconFile</key>
            <string>icon.icns</string>
            <key>CFBundleTypeName</key>
            <string>MyApp Project</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSHandlerRank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.example.myAppProject</string>
            </array>

    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>com.apple.package</string>
                <string>public.directory</string>
            </array>
            <key>UTTypeDescription</key>
            <string>MyApp Project</string>
            <key>UTTypeIdentifier</key>
            <string>com.example.myAppProject</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <array>
                    <string>tb</string>
                </array>
            </dict>
        </dict>
    </array>
    <key>LSSupportsOpeningDocumentsInPlace</key>
    <true/>

如何使用 FileWrapper 为打包类型的文件使用此自定义格式为我保存的每个文件生成自定义图标?我的意思是,在可视化我的应用程序保存的文件时 iOS Files.app 可以看到的图标。

您需要在您的应用中实施 Thumbnail Extension。 OS 将在需要时调用您的扩展程序以请求自定义缩略图。

override func provideThumbnail(for request: QLFileThumbnailRequest, _ handler: @escaping (QLThumbnailReply?, Error?) -> Void) {
    // Generate your thumbnail and call the handler
}

Providing Thumbnails of Your Custom File Types 拥有您需要的所有信息。

Implement a Thumbnail Extension to allow the operating system and other apps to display thumbnails of your custom files.