objective-c - iOS6 中的 iOS 自定义电子邮件附件处理

标签 objective-c ios ios6

我的应用程序允许将文本文件通过电子邮件发送给其他用户,无论是否包含图像和音频。当没有图像或音频时,应用程序会“按原样”发送带有自定义扩展名(例如 text.xxx)的文本文件。当存在音频和图像时,该应用会将文本文件与图像和音频一起压缩到一个名为 text.xxx.zip 的文件中。

在 iOS 6 之前,这工作正常。在 iOS 6 之前,应用程序获得了 text.xxx.zip 文件的 URL。现在,在 iOS 6 中,该文件似乎已被 Mail 解压缩,并且只有 text.xxx 被发送到 openURL 处理程序。

有没有人有这方面的经验?有关更好方法的建议?我在想我需要为压缩包想出一个独特的扩展...

最佳答案

因此,在过去 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。

关于objective-c - iOS6 中的 iOS 自定义电子邮件附件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13383685/

相关文章:

ios - IOS中如何显示通知

iOS App,如何设置为一次性注册?

IOS:在 Facebook 上注册新应用

authentication - 验证本地玩家 - 游戏中心 - iOS6

objective-c - 在 iOS 6 的 Objective-C 中调整 MKMapView 的框架

objective-c - 日期时间模式的UIDatePicker中的组件大小是多少?

objective-c - NSPredicateEditor 不可见

ios - Realm Objective-C 写入数据库时​​如何忽略已经存在的相同主键?

ios - 从另一个 View Controller 更新 UILabel

uitextview - 在富 UITextView (iOS 6) 中使用 NSUndoManager 撤消操作