Я пытаюсь создать новый документ UTI для своего приложения, чтобы люди могли делиться интересными вопросами с другими. Из того, что я могу понять в SO, Tutorials и из документации Apple, вам нужно сделать следующее:
- Создать тип документа в .plist
- Создать экспортированный UTI, соответствующий ему
- Используйте метод: - (BOOL) приложение: (UIApplication *) приложение
didFinishLaunchingWithOptions: (NSDictionary *) launchOptions
Насколько я понимаю, если вы все сделали правильно, вы сможете без проблем открыть файл через Почту. К сожалению, это не работает для моих собственных пользовательских UTI. Я действительно вижу свое приложение в списке «Открыть с помощью ...» в Mail, но когда я выбираю его, мое приложение вообще не открывается. Он просто ничего не делает, не только когда приложение не открыто, но и когда приложение открыто. Почта остается на месте, и ничего не происходит вообще. Я также проверил консоль с помощью «Органайзера», и ничего не происходит.
Первоначально я думал, что мой plist был неправильным, поэтому я протестировал открытие открытого UTI (я добавил тип документа com.adobe.pdf), и мое приложение запустилось очень хорошо (хотя оно быстро сломалось, потому что я фактически не поддерживаю PDF; )). Но дело в том, что он запустился без проблем.
Единственное, о чем я могу думать, это может быть проблема - КАК я создаю файл. Я создаю файл в электронном письме с использованием этого метода (также в приложении для экспорта):
MFMailComposeViewController *picker = [[[MFMailComposeViewController alloc] init] autorelease];
[picker setSubject:[NSString stringWithFormat:@"My place: %@",POIName]];
[picker addAttachmentData:customPOIData mimeType:@"application/customPOI" fileName:[NSString stringWithFormat:@"%@.icp",POIName]];
[picker setMessageBody:@"Check out this great place I found!" isHTML:NO];
[picker setMailComposeDelegate:self];
[self presentModalViewController:picker animated:YES];
Что-то не так с этим?
Также вот мой код plist:
CFBundleDocumentTypes:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>Custom POI</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.imadev.icp</string>
</array>
</dict>
</array>
UTExportedTypeDeclarations:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Custom POI</string>
<key>UTTypeIdentifier</key>
<string>com.imadev.icp</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>icp</string>
</array>
<key>public.mime-type</key>
<string>application/customPOI</string>
</dict>
</dict>
</array>
Большое спасибо за любую помощь !!
-Марк