Причины отправки электронной почты — соединение прервано

#ios #objective-c #xcode #ios8 #mfmailcomposeviewcontroller

#iOS #objective-c #xcode #ios8 #mfmailcomposeviewcontroller

Вопрос:

В основном, что я пытаюсь сделать, это отправить электронное письмо:

 -(void) sendAnEmail {

    if ([MFMailComposeViewController canSendMail])
    {
        MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
        mail.mailComposeDelegate = self;
        [mail setSubject:@"Subject"];
        [mail setMessageBody:@"Hey, check this out!" isHTML:NO];
        [mail setToRecipients:@[@"testing@gmail.com"]];

        [self presentViewController:mail animated:YES completion:NULL];
    }
    else
    {
        NSLog(@"device cannot send email");
    }
}
  

Ошибки нет, предупреждения нет. Вывод, если эта пустота:

BSXPCMessage получил сообщение об ошибке: соединение прервано

Как я могу это решить?

тестовое устройство — 5S (8.3)

Комментарии:

1. Действительно ли вызывается этот код?

2. Есть ли у вас какие-либо манипуляции с CIFilter где-нибудь поблизости?

3. ну, я пытался отправить электронное письмо с вложением, возникла та же проблема, поэтому я пытаюсь сделать что-то простое, это фактический код

4. @alexburtnik втф большое вам спасибо за подсказку — вы потрясающие: D можете ли вы объяснить, почему это происходит в ответе, я отмечу его как правильный

Ответ №1:

  1. Из этого руководства Apple я могу понять, что службы XPC должны предотвращать сбой приложений, каким-то образом разделяя нестабильные компоненты.

  2. Сам сбой вызван какой-то ошибкой в CIFilter. Трудно сказать, что на самом деле не так с вашим кодом, поскольку проблема, очевидно, не в MFMailComposeViewController этом. Если вы создаете CIContext с такими параметрами:

 [CIContext contextWithOptions: @{kCIContextUseSoftwareRenderer : @(NO)}];
  

Попробуйте заменить NO на YES