1

我已经为 iOS 应用程序定义了一个自定义 UTI,并通过 AirDrop 传输文件。它一切正常,除了在接收设备上,除了我的应用程序之外,用户还可以选择 DropBox、Evernote 等应用程序。我想防止这种情况发生,因此仅向用户显示我的应用程序作为选择。这可能吗?

在我的 info.plist 我有:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Icon.png</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>My Text</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.me.text</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeDescription</key>
        <string>My Text</string>
        <key>UTTypeIdentifier</key>
        <string>com.me.text</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>per</string>
        </dict>
    </dict>
</array>

我究竟做错了什么?

4

2 回答 2

0

我自己解决了这个问题。我通过将导出的类型更改为基于 public.data 来做到这一点。

这是合乎逻辑的事情,因为我的应用程序导出的文件对 Evernote 等使用毫无意义。我将其指定为文本是不正确的,因为这真的会让用户感到困惑 - 推送一个给他们的对话框不合逻辑的选项。与此处另一张海报的说法相反,这不是“将我的意志强加于用户”的情况,而是错误地指定了一个结构化文件,该结构化文件意味着另一个程序将其解析为文本文件。基于 public.data 解决了这个问题,现在用户有了更好的体验。

对于可能感兴趣的其他人,我的 UTExportedTypeDeclations 现在看起来像这样:

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>My Text</string>
        <key>UTTypeIdentifier</key>
        <string>com.me.text</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>per</string>
        </dict>
    </dict>
</array>
于 2014-11-09T08:55:31.027 回答
0

你试图在用户身上维护你的意志;这永远不会结束。

您的问题实际上并不是由您造成的,尽管如此:

DropBox、印象笔记等。人。可能在允许所有文件的情况下声明自己的方案;并且系统会采取适当的行动,给出所有匹配应用程序的列表(其中将始终包含声明 的应用程序*)。

换句话说,您尝试做的是:

  1. 不可能的
  2. 并非设计意图
  3. 极度反社会
于 2014-01-27T08:53:11.833 回答