【问题标题】:UTI that's exclusive to my app and doesn't show dropbox on open with dialogue我的应用程序独有的 UTI,在打开对话时不显示 Dropbox
【发布时间】:2013-10-20 07:32:36
【问题描述】:

我为 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>

我做错了什么?

【问题讨论】:

    标签: ios


    【解决方案1】:

    您试图将您的意志强加给用户;永远不会有好的结局。

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

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

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

    1. 不可能
    2. 设计并非如此
    3. 极度反社会

    【讨论】:

      【解决方案2】:

      我自己解决了这个问题。我通过将导出的类型更改为基于 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 2019-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多