2013-10-24 60 views
1

我在这一块上撞墙,但似乎无法让我的自定义UTI工作。iOS7自定义UTI

我正在努力让AirDrop在我的应用程序中实现,所以我可以在设备之间共享文件。我能够成功地将文件传输到其他设备,但安装了我的应用程序的其他设备不会打开我的应用程序中的文件。

这里是我的app.plist转储:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>en</string> 
    <key>CFBundleDisplayName</key> 
    <string>MYAPP</string> 
    <key>CFBundleDocumentTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleTypeIconFiles</key> 
      <array> 
       <string>57x57</string> 
      </array> 
      <key>CFBundleTypeName</key> 
      <string>MYAPPNAME Shared Assignment</string> 
      <key>CFBundleTypeRole</key> 
      <string>Editor</string> 
      <key>LSHandlerRank</key> 
      <string>Owner</string> 
      <key>LSItemContentTypes</key> 
      <array> 
       <string>com.MYAPPNAME.SIAASSIGNMENT</string> 
      </array> 
     </dict> 
    </array> 
    <key>CFBundleExecutable</key> 
    <string>${EXECUTABLE_NAME}</string> 
    <key>CFBundleIcons</key> 
    <dict> 
     <key>CFBundlePrimaryIcon</key> 
     <dict> 
      <key>CFBundleIconFiles</key> 
      <array> 
       <string>57x57 2.png</string> 
       <string>114x114 2.png</string> 
       <string>72x72 2.png</string> 
       <string>144x144 2.png</string> 
      </array> 
     </dict> 
    </dict> 
    <key>CFBundleIdentifier</key> 
    <string>com.MYAPPNAME.${PRODUCT_NAME:rfc1034identifier}</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleName</key> 
    <string>${PRODUCT_NAME}</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleShortVersionString</key> 
    <string>4.0</string> 
    <key>CFBundleSignature</key> 
    <string>????</string> 
    <key>CFBundleVersion</key> 
    <string>4.0</string> 
    <key>LSRequiresIPhoneOS</key> 
    <true/> 
    <key>NSMainNibFile</key> 
    <string>Main_Window</string> 
    <key>NSMainNibFile~ipad</key> 
    <string>Main_Window_iPad</string> 
    <key>UIBackgroundModes</key> 
    <array> 
     <string>fetch</string> 
     <string>remote-notification</string> 
    </array> 
    <key>UIRequiredDeviceCapabilities</key> 
    <array> 
     <string>armv7</string> 
    </array> 
    <key>UIStatusBarTintParameters</key> 
    <dict> 
     <key>UINavigationBar</key> 
     <dict> 
      <key>Style</key> 
      <string>UIBarStyleDefault</string> 
      <key>Translucent</key> 
      <false/> 
     </dict> 
    </dict> 
    <key>UISupportedInterfaceOrientations</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
    </array> 
    <key>UISupportedInterfaceOrientations~ipad</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
    </array> 
    <key>UTExportedTypeDeclarations</key> 
    <array> 
     <dict> 
      <key>UTTypeConformsTo</key> 
      <array> 
       <string>public.text</string> 
      </array> 
      <key>UTTypeDescription</key> 
      <string>MYAPPNAME Shared Assignment</string> 
      <key>UTTypeIdentifier</key> 
      <string>com.MYAPPNAME.SIAASSIGNMENT</string> 
      <key>UTTypeSize320IconFile</key> 
      <string>72x72</string> 
      <key>UTTypeSize64IconFile</key> 
      <string>57x57</string> 
      <key>UTTypeTagSpecification</key> 
      <dict> 
       <key>com.MYAPPNAME.SIAASSIGNMENT</key> 
       <array> 
        <string>SIAASSIGNMENT</string> 
           <key>public.mime-type</key> 
           <string>application/xml</string> 
       </array> 
      </dict> 
     </dict> 
    </array> 
</dict> 
</plist> 

我已经尝试了许多不同的事情,使这项工作,我似乎无法得到iOS7认识到,这是我的文件类型。我知道你不应该为你的UTI使用'public.xxx'命名空间,因为这些命名空间是由Apple预先分配的。 任何帮助将不胜感激!

+0

您是否尝试过将其设置为不公开的类型?*? – RyanR

+0

你的意思是不要使用public.text,但是别的吗? –

+0

是的,就像试验一样,看看是否与问题有关。 – RyanR

回答

3

确保你的declare the types as imported这样iOS知道显示你的应用程序作为打开它们的选项。

此外,请确保您实施-application:openUrl:sourceApplication:annotation:以通过AirDrop或文档交互控制器接收文件。

+0

所以这就是我的伎俩,但我也必须将UTTypeTagSpecification节点从“com.MYAPPNAME.SIAASSIGNMENT”更改为“到“public.filename-extension”,就像它在你提供的链接中所做的那样。 –