Вы должны полагаться на iOS, что MFMailComposeResult
, возвращенный в mailComposeController:didFinishWithResult:error:
, правильный. Симулятор подделывает этот результат; на самом деле почта не отправляется, хотя написано MFMailComposeResultSent
.
В упомянутом руководстве упускается важный момент: первое, что вам следует сделать перед использованием MFMailComposeViewController
, - это проверить [MFMailComposeViewController canSendMail]
. Это вернет NO
, если пользователь не настроил почту на своем устройстве. Если вы должны поддерживать версию iOS до 3.0, правильный способ - проверить, существует ли класс MFMailComposeViewController
:
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass != nil)
{
if ([mailClass canSendMail])
{
[self displayComposerSheet];
}
else
{
[self launchMailAppOnDevice];
}
}
else
{
[self launchMailAppOnDevice];
}
Проблема с canSendMail может быть протестирована только на реальном устройстве. Он выйдет из строя, если вы не отметите canSendMail и у пользователя не настроена почтовая учетная запись.
person
Felix
schedule
18.03.2011