1

我发现[MFMailComposeViewController canSendMail]在创建/删除邮件帐户后从后台唤醒应用程序时返回错误值。

在我的应用程序中,有一些功能仅在邮件可用时才相关。因此,我想禁用与 canSendMail 检查一起使用它的可能性。

一切正常,而不是以下情况: 1. 在 iPhone 上删除/禁用邮件帐户(现在我正在使用 iOS 4.2 进行工作和测试) 2. 启动应用程序 - 所有东西都以正确的方式禁用。3. 按主页按钮并打开设置。创建和设置邮件帐户。4. 返回申请 -[MFMailComposeViewController canSendMail]返回 NO,但邮件帐户已设置。5. 按 Home 按钮,然后再次返回应用程序 -[MFMailComposeViewController canSendMail]返回 YES,应该如此。

此外,这种行为反之亦然,当我们打开应用程序时,转到设置,删除邮件帐户,返回应用程序 - canSendMail 在删除后第一个应用程序打开时返回 YES,而在第二个应用程序打开时返回 NO。

我正在检查[MFMailComposeViewController canSendMail]ApplicationDelegate 的- (void)applicationWillEnterForeground:(UIApplication *)application功能。

在我看来, MFMailComposeViewController 存储价值,并且有一些事件迫使它重新阅读邮件可用性。我还尝试在正确的线程上添加一些等待(1-2 秒),或者在邮件设置和运行我的应用程序之间运行其他应用程序 - 没有任何帮助。

您对我如何为 canSendMail 获得正确价值有任何想法吗?否则,唯一的办法就是杀掉发现这个bug的QA...


以下代码也不起作用。

Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); 
if (mailClass != nil) 
{ 
    return [mailClass canSendMail]; 
} 
return NO;

有什么建议吗?

4

0 回答 0