我的应用程序允许将文本文件通过电子邮件发送给有或没有图像和音频的其他用户。当没有图像或音频时,应用程序将“按原样”发送文本文件,其中包含自定义扩展名(例如text.xxx)。当有音频和图像时,应用程序会将文本文件以及图像和音频压缩到一个名为text.xxx.zip的文件中。
在iOS 6之前,这个工作正常。在iOS 6之前,该应用程序被赋予了text.xxx.zip文件的URL。现在,对于iOS 6,似乎该文件已被Mail解压缩,并且只有text.xxx被发送到openURL处理程序。
有没有人有这方面的经验?建议采取更好的方法?我想我需要为拉链外壳提供独特的扩展......
答案 0 :(得分:1)
因此,在过去24小时左右的时间里,我对此表示反应,这就是“解决”问题的原因:
1)将任何现有的附件文件名从test.xxx.zip更改为test.zip。它看起来iOS6 Mail假设filename.xxx.zip形式的任何东西,实际上只是filename.xxx的压缩版本。 (也许这是某个地方的标准?)另外请注意,如果我将文件名更改为test.yyy.zip,则说它无法打开附件。 (大概是因为没有人注册“.yyy”扩展名)。
2)重写代码以便将来不使用.zip扩展名以防止出现类似问题。
我还发现,对于多种文档类型(例如.xxx,.zzz),您必须为UTI声明中的每个指定不同的mime类型 - 否则Mail会将它找到的第一个UTI扩展名附加到对象,然后调用openURL 。所以,换句话说,如果您设置为处理平面文件(.xxx)和zip文件(.zzz),但是您使用相同的mime类型(例如application / myappname)并且首先定义“xxx” ,当为您的文件“test.zzz”调用openURL时,它实际上会将其作为“test.xxx”传递给openURL。