ios - App crashes when InApp mail command gets called
Asked Answered
P

1

3

When I cll the Message Compose sheet via a UIActionSheet button I get the following error. Sorry these don't mean much to me yet - still learning:-)

Could anyone help please?

These are the sources of problems that come up.

list that appears when the app crashes.

Green Bar error

This is in the log:

2012-06-16 19:10:43.437 Multi Web[2665:4013] XPCProxy received bad message: target did not supply method signature for bodyFinishedDrawing 2012-06-16 19:10:43.489 Multi Web[2665:907] _serviceViewControllerReady:error: Error Domain=XPCObjectsErrorDomain Code=3 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 3.)"

Cheers Jeff

        if ([MFMailComposeViewController canSendMail])
    {
        MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
        mailer.mailComposeDelegate = self;

        NSString *subject = [[NSString alloc] initWithFormat:@"Multi Web - Sending %@.txt", _documentFile];

        [mailer setSubject:subject];

        // Attach an image to the email
        NSString *pathFile01 = [NSString stringWithFormat:_documentTXTPath];
        NSURL *pdfURLFile01 =  [NSURL URLWithString:pathFile01];
        NSData *pdfDataFile01 = [NSData dataWithContentsOfURL:pdfURLFile01];
        NSString *fileName = [[NSString alloc] initWithFormat:@"%@.txt", _documentFile];
        [mailer addAttachmentData:pdfDataFile01 mimeType:@"application/txt" fileName:fileName];

        NSString *emailBody = 
       @"Hi,<br><br>Please find attached the note exported from Multi Web.<br/><br/>Thanks you for using the app.<br/><br/>Kind Regards,<br/>Multi Web Team.";


        [mailer setMessageBody:emailBody isHTML:YES];

        [self presentModalViewController:mailer animated:YES];
    }

    // Remove the mail view
    [self dismissModalViewControllerAnimated:YES];



- (void)mailComposeController:(MFMailComposeViewController*)controller  didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
 {
 switch (result)
 {
    case MFMailComposeResultCancelled:
        NSLog(@"Mail cancelled: you cancelled the operation and no email message was queued.");
        break;
    case MFMailComposeResultSaved:
        NSLog(@"Mail saved: you saved the email message in the drafts folder.");
        break;
    case MFMailComposeResultSent:
        NSLog(@"Mail send: the email message is queued in the outbox. It is ready to send.");
        break;
    case MFMailComposeResultFailed:
        NSLog(@"Mail failed: the email message was not saved or queued, possibly due to an error.");
        break;
    default:
        NSLog(@"Mail not sent.");
        break;
}

// Remove the mail view
[self dismissModalViewControllerAnimated:YES];

}

Plastid answered 16/6, 2012 at 7:13 Comment(4)
Some code will be helpful for us.Juniejunieta
Hi, I added the whole method, I hope its helpfullPlastid
// Remove the mail view [self dismissModalViewControllerAnimated:YES]; Remove this line and try againbecause mail view is still not loaded so which modal view you are dismissingPolynuclear
@Polynuclear Thanks that did the trick:-) Funny leaving that line worked in another project - The only difference is that I am calling it through an actionSheet this time. Strange:-)Plastid
H
1

The correct answer is to remove the

[self dismissModalViewControllerAnimated:YES] 

just after the presentModalViewController method.

You are crashing because, you dismiss the modal view controller soon after it is presented and try to dismiss it again (which is deallocated already) in the callback delegate.

You can read about how to send an in app email here on my post.

http://blog.mugunthkumar.com/coding/iphone-tutorial-in-app-email/

Halfbreed answered 29/8, 2012 at 3:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.