我正在开发一个 iOS 应用程序,它允许用户发送到存储(使用核心数据)并以 csv 文件的形式发回数据,我使用 MFMailComposeViewController 类将其附加到电子邮件。
发送文件后,我想遍历数据并在每条记录上设置一个提交标志,这样当用户点击按钮提交更多数据时就不会再次发送
这很容易做到——我可以从内部调用方法来做到这一点
-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
使用
case MFMailComposeResultSent:
我想自己清理并在发送后删除 csv 文件,但我的问题是......(编辑 - 请参阅底部的更多测试后编辑)
MFMailComposeResultsSent 是 MFMailComposeResult,无论是邮件已发送,还是已发送到发件箱但尚未离开。如果我此时删除 csv 文件并且互联网连接断开并且邮件在发件箱中,那么当连接恢复并且邮件被发送时,附件已经被删除并且显然不会被发送。
我的 csv 文件的大小很小——单个记录大约 1kb,5 个大约 2kb(差异是因为第一行是所有字段名称)并且在此基础上,任何文件都不太可能永远大于 30kb,所以我不会使用大量内存。实际上,我看不到任何情况,即使是 HitTest 心的用户也会生成超过 0.5 MB 的数据
有什么想法我可以/应该如何处理这个问题?我不确定 Apple 会如何看待留下一堆小文件,以及这会如何影响我的应用提交。
提前感谢您花时间阅读和/或回复此文
西蒙
编辑
似乎存在一些时间延迟问题 - 也许 iOS 正在缓存已删除的文件?短暂的时间。
我进行了一系列附件通过的测试运行 - 我一直在测试在关闭 wifi 和打开飞行模式的情况下发送,文件在我重新打开它们后不久就通过了。我刚刚测试了我离开 wifi 路由的位置并且我仍然连接但是从 wifi 路由器背面拔下电缆所以我没有互联网 当我回到路由器并插入它并且邮件发送时,它已经丢失了附件文件并且邮件在没有它们的情况下通过了。现在我有一堆测试,一半在附件通过的地方,一半在没有通过的地方
更多测试后编辑
我的问题可能是由于我对当时发生的事情的误解而引发的 - 但我没有将问题标记为已回答,因为我仍然想知道是否可以检查邮件是否真的消失了。一个提供的答案说不,这是不可能的 - 任何人都可以确认这一点,然后我将其标记为答案。
无论如何
我认为我丢失附件的问题可能来自进入邮件应用程序并在邮件找不到连接时检查发件箱。有时 Mail 会在邮件上添加一个警告面,有时附件会消失。如果我不理会发件箱,附件似乎会正常运行。我将对此进行更多测试以确认确实如此。
最佳答案
不幸的是,没有办法检查。
MFMailComposeResultSent
The email message was queued in the user’s outbox. It is ready to send the next time the user connects to email.
表示消息在排队等待发送时(仍在发件箱中)会得到此结果,发送后不会产生任何结果。
关于ios - 如何判断文件是否已发送或是否在 iOS 邮件的发件箱中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290786/