加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 自定义UTI未在App中打开

发布时间:2020-12-16 06:58:19 所属栏目:百科 来源:网络整理
导读:我正在尝试为我的应用程序创建一个新文档UTI,以便人们可以与他人共享兴趣点.根据我在SO,Tutorials和Apple的文档中可以理解的内容,您需要执行以下操作: 在.plist中创建文档类型 创建与其对应的导出UTI 使用方法: – (BOOL)应用程序:(UIApplication *)应用
我正在尝试为我的应用程序创建一个新文档UTI,以便人们可以与他人共享兴趣点.根据我在SO,Tutorials和Apple的文档中可以理解的内容,您需要执行以下操作:

>在.plist中创建文档类型
>创建与其对应的导出UTI
>使用方法: – (BOOL)应用程序:(UIApplication *)应用程序
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

据我所知,只要你做到了这些,你应该能够通过Mail打开文件没有任何问题.不幸的是,它不适合我自己的自定义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>

非常感谢任何帮助!!
-标记

解决方法

我终于通过拆分所有代码来弄清楚出了什么问题.

当我将“public.filename-extension”更改为字符串而不是字符串数组时,它可以正常工作.不要问我为什么……我认为奇怪的是我们不能使用一组文件扩展名.但显然就是这样.

有关为何发生这种情况的任何想法?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读