如何使用 Xcode 11 在 UTI 部分配置 .app 文件?

Posted

技术标签:

【中文标题】如何使用 Xcode 11 在 UTI 部分配置 .app 文件?【英文标题】:How to configure .app files in the UTIs section with Xcode 11? 【发布时间】:2019-09-10 10:11:39 【问题描述】:

我正在开发一个应用程序,有时我需要一次导入几种不同类型的二进制和 ascii 文件,具有不同的扩展名,例如 .bin、.app、.crc 等。

为了实现这一点,我在项目目标中的信息部分准备了文档类型和导入的 UTI。

在 Xcode 10 之前一切正常,但现在我正在使用 Xcode 11 Beta 6 测试应用程序,我注意到导入对于我处理的所有文件扩展名都正常,但 .app 文件除外。

基本上,当我从一个电子邮件附件或一个 Files 文件夹中获取任何 .app 文件并尝试将其导出以将其导入到一个应用程序中时,我的应用程序不再显示在支持此类文件的应用程序中.

在信息部分,我使用了以下条目(用于 .app 文件):

Document Types:
My App Data Files
Name: My App Data Files
Types: public.data

Additional document type properties:
LSHandlerRank (String) -> Alternate


Imported UTIs:
My App Application File:
Description: My App Application File
Identifier: com.mydomain.app
Conform To: public.data

Additional imported UTI properties:
UTTypeTageSpecification (Dictionary) ->
Item 0 (String) -> app
Item1 (String) -> APP

这在 Xcode 10 上运行良好,而不再适用于 Xcode 11。

我分析了 Apple 的统一类型标识符参考列表,并注意到对于 .app 文件,建议您使用以下值之一作为“符合”:

com.apple.package com.apple.bundle com.apple.application

并将此值作为标识符:

com.apple.application-​包

我尝试相应地修改值,但没有任何改变,我的应用程序没有“看到” .app 文件类型,但我看到其他应用程序支持这一点,所以必须有办法,即使是 ios 13 (我正在使用最新的 Beta 版本:13.1)。

更新:

从 Apple 通过反馈助手,我得到了以下答案:“带有 .app 扩展名的常规文件(不是包)的 UTI 是 'com.apple.application-file'”。但不幸的是,我仍然无法使其工作。我使用了以下配置:

DOCUMENT TYPE:
Name —> My App Application File
Types —> com.apple.application-file
Additional document type properties:
    CFBundleTypeRole —> Editor
    LFHandlerRank —> Alternate

IMPORTED UTI:
Description —> My App Application File
Identifier —> com.apple.application-file
Conform To —> public.data
Additional imported UTI properties:
    UTTypeTagSpecification:
        Item 0 —> app
        Item 1 —> APP

关于配置中可能出现的错误有什么想法吗?

【问题讨论】:

您找到解决问题的方法了吗?我目前也面临同样的情况...... 还没有.. 我什至尝试向苹果“消费”一张技术支持票,但不幸的是他们仍然认为这与 beta 版本有关(Xcode 11 仍未正式发布),因此他们建议我通过反馈应用程序提供此反馈(我做到了)。我也尝试在 Apple 的论坛中打开一个帖子,但到目前为止还没有答案。你找到解决办法了吗? 我的应用程序设置为导入由我的应用程序生成的具有自定义扩展名的文件。它在 iOS 12 甚至 Xcode 11 中运行良好;但是一旦我将 ipad 更新到 iOS13;我不再能够在共享表中看到“复制到 ”。如果您查看共享表的顶部,它甚至将文件声明为“应用程序名称文件 - 1 MB”,但我无法将文件发送到我的应用程序。我已经告诉我的 beta 测试人员不要更新到 ios13,因为这会破坏我应用中的主要功能 各位,你们找到解决这个问题的方法了吗?我仍然没有从 Apple 那里得到任何答复(无论是来自反馈助理,也不是来自 Apple 论坛或 TSI) 【参考方案1】:

我遇到了同样的问题,但我解决了改变 ImportUTI:符合 —> public.data 因为,在我的情况下,价值是不同的

也许有帮助

在这里您将找到 info.plist 相关部分:

<key>UTImportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>  myAppName </string>
        <key>UTTypeIconFiles</key>
        <array>
            <string>xxx_Icon60.png</string>
        </array>
        <key>UTTypeIdentifier</key>
        <string>.. My Bundle identifier ...</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>gkc</string>
                <string>GKC</string>
            </array>
        </dict>
    </dict>
</array>

【讨论】:

嗨,我也在使用 Conform to public.data,但这没有帮助。您是否还尝试导入“.app”文件?您能告诉我您是如何配置 Info.plist 的不同部分的吗? UTImportedTypeDeclarationsUTTypeConformsTopublic.data UTTypeDescription myAppName UTTypeIconFilesxxx_Icon60.pngUTTypeIdentifier。 . 我的 Bundle 标识符 ...UTTypeTagSpecificationpublic.filename-extensiongkcGKC 谢谢,我尝试了您的设置,但是当我尝试从“文件”打开我的文件(“Application.app”)时,我的应用程序仍然无法导入文件。确实很奇怪。您是否在“文档类型”部分设置了特定内容?您是否也尝试过使用 .app 文件? (我注意到在您的设置中您使用了“.gkc”扩展名)。

以上是关于如何使用 Xcode 11 在 UTI 部分配置 .app 文件?的主要内容,如果未能解决你的问题,请参考以下文章

iOS11: 使用Xcode9后的11条小建议

如何在 Webview 上显示网站的特定部分? (Xcode 7 斯威夫特 2)

我可以在 Xcode 中使用 C++11 吗?

如何配置我的 Xcode 项目以在多个版本的 iOS 上运行?

使用选项配置 firebase 在 Xcode 11 和 Firebase 6.19 中崩溃

从 Xcode 5 支持旧版本的 iOS