MFMailComposeViewController canSendMail не возвращает правильное значение в конкретном сценарии - PullRequest
1 голос
/ 16 января 2012

Я обнаружил, что [MFMailComposeViewController canSendMail] возвращает неправильное значение при пробуждении приложения из фона после создания / удаления почтовой учетной записи.

В моем приложении есть некоторые функции, которые актуальны только при наличии почтовой рассылки.Поэтому я хочу отключить возможность использовать его с проверкой canSendMail.

Все работает хорошо, а не в следующем сценарии: 1. Удалить / отключить почтовую учетную запись на iPhone (сейчас я работаю и тестирую с iOS 4.2) 2Запустите приложение - все вещи отключены правильно.3. Нажмите кнопку «Домой» и откройте «Настройки».Создать и настроить почтовый аккаунт.4. Вернитесь в приложение - [MFMailComposeViewController canSendMail] возвращает НЕТ, но почтовый аккаунт настроен.5. Нажмите кнопку «Домой», а затем снова вернитесь в приложение - [MFMailComposeViewController canSendMail] возвращает ДА, как и должно быть.

Кроме того, это поведение воспроизводимо, наоборот, когда мы открываем приложение, заходим в настройки, удаляем почтовую учетную запись,обратно в приложение - canSendMail возвращает YES для первого открытия приложения после удаления и NO, как и во втором.

Я проверяю [MFMailComposeViewController canSendMail] в функции - (void)applicationWillEnterForeground:(UIApplication *)application ApplicationDelegate.

Itмне кажется, что MFMailComposeViewController хранит значение и есть какое-то событие, которое вынуждает его перечитывать доступность почты.Также я попытался добавить немного ожидания (1-2 секунды) в нужный поток или запустить другое приложение между настройками почты и запустить мое приложение - ничего не помогает.

У вас есть какие-либо идеи о том, как я могу получить правильное значение?для canSendMail?В противном случае единственный способ - убить QA, который обнаружил эту ошибку ...


Также следующий код тоже не работает.

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

Есть предложения?

...