Как отправить электронное письмо через симулятор iOS?

Я хочу знать, можно ли отправлять электронную почту через симулятор iPhone. Я видел учебник по отправке электронной почты через iphone, как показано ниже:

http://www.edumobile.org/iphone/iphone-programming-tutorials/compose-mail-application-in-iphone/

Теперь для тестирования нужно ли иметь реальное устройство? Что делать, если я хочу отправлять электронную почту через симулятор iPhone?


person nehal    schedule 18.03.2011    source источник


Ответы (4)


Вы должны полагаться на 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
comment
Для моей задачи мне просто нужно отобразить композитор. Но я не могу этого сделать. MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] инициализация]; . В этой строке появляется контроллер предупреждений. - person Ankit Maurya; 15.12.2017

Согласно обсуждению на форуме Apple, для проверки функциональности нам действительно нужно устройство, симулятор не поддерживают эту функциональность.

Фрагмент обсуждения:

sptrakesh Chicago Re: СИМУЛЯТОР iOS

ПОЧТОВОЕ ПРИЛОЖЕНИЕ 26 марта 2012 г., 7:09 (в ответ на davemac75)

Почтовое приложение недоступно в симуляторе. Вам нужно будет протестировать свое приложение на устройстве, чтобы проверить эту часть.

person NeverHopeless    schedule 31.03.2014

Да, это необходимо, если вы действительно хотите отправить электронное письмо.

в большинстве случаев вам не о чем беспокоиться, поскольку почта будет отправлена ​​приложением Apple, поэтому вам нужно будет только убедиться, что ваше приложение отвечает и запускает композитор почты. Единственное, что я считаю проблемным, - это если вы хотите убедиться, что вложения и изображения отправляются правильно. В этом случае вы можете отправить бета-версию кому-нибудь с iphone и попросить его проверить ее для вас.

Важно наличие устройства критично для разработки, ваш симулятор не ведет себя в точности как устройство. он прощает, и, по моему опыту, у меня всегда были проблемы с устройством, которых не было в симуляторе.

person shannoga    schedule 18.03.2011
comment
Для моей задачи мне просто нужно отобразить композитор. Но я не могу этого сделать. MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] инициализация]; . Эта строка вызывает всплывающее окно контроллера предупреждений. - person Ankit Maurya; 15.12.2017

Вы можете использовать фреймворк MessageUI на симуляторе для составления и «отправки» сообщений, но я не верю, что есть способ действительно отправить сообщение. Однако, как только пользователь нажимает кнопку «Отправить» в представлении композиции сообщения, ваш код не играет никакой роли в отправке сообщения. Таким образом, симулятора достаточно, чтобы вы могли разработать и протестировать свое приложение.

Что касается того, нужно ли иметь реальное устройство, я бы сказал, что в какой-то момент вам нужно протестировать на одном или нескольких устройствах, несмотря ни на что. Симулятор - отличный инструмент, но после определенного момента он уже не заменит запуск вашего приложения на реальном устройстве.

person Caleb    schedule 18.03.2011