为啥应用程序包不总是一个包?
Posted
技术标签:
【中文标题】为啥应用程序包不总是一个包?【英文标题】:Why is the application package not always a package?为什么应用程序包不总是一个包? 【发布时间】:2019-01-08 01:23:44 【问题描述】:我有一个 swift 应用程序,它是一个文件类型的查看器,它是一个包。该应用程序导出这种类型的 UTI(我更愿意导入它,但这有同样的问题)。如果文档存储在 iCloud 中,应用程序可以打开一个包,但如果文档存储在 Dropbox、oneDrive 或 Google Drive 中,则不能。
文档类型和导出的 UTI 声明中是否有任何内容可能会导致此问题?
文档类型有:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>JMRI Configuration Profile</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>LSItemContentTypes</key>
<array>
<string>org.jmri.profile</string>
</array>
<key>LSTypeIsPackage</key>
<true/>
</dict>
</array>
导出的 UTI 是:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>com.apple.package</string>
<string>public.composite-content</string>
</array>
<key>UTTypeDescription</key>
<string>JMRI Configuration Profile</string>
<key>UTTypeIconFiles</key>
<array>
<string></string>
</array>
<key>UTTypeIdentifier</key>
<string>org.jmri.profile</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>JMRI</string>
<string>jmri</string>
</array>
</dict>
</dict>
</array>
【问题讨论】:
【参考方案1】:事实证明,我遇到的问题是底层应用程序(Dropbox、Google Drive 和 oneDrive)如何实现对 FileProvider API 的支持。
自从我最初提出这个问题以来,Dropbox 已经添加了对包的支持,微软表示不支持包,我还没有找到(或想出如何询问)Google 是否会支持包。
【讨论】:
以上是关于为啥应用程序包不总是一个包?的主要内容,如果未能解决你的问题,请参考以下文章