Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Issue when using MFMailComposeViewController

I have a tricky problem. In one of my app, with over 150.000 downloads... I have a problem which seldom occurs and which I can't seem to figure out.

The problem is the following: In a view where the user can share a list via email, I open the mail window using MFMailComposeViewController. However, in some few cases the app seems to get a problem using the mail composer. The user presses the share button, the mail windows slides up, waits about 1-2 sec and then closes again. No content in the mail window, although I do send data to it. I myself have not been able to re-create the problem on any device or in the simulator, however one colleague has. I ran the app using XCode on his phone and got the following in the logs:

2013-03-01 14:43:39.604 appname[318:907] <MFMailComposeRemoteViewController: 0x1ebfb100> timed out waiting for fence barrier from com.apple.MailCompositionService 2013-03-01 14:43:39.631 appname[318:907] viewServiceDidTerminateWithError: Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)" 

I googled the error "timed out waiting for fence barrier from com.apple.MailCompositionService" but can't really find any help.

Does anybody have any experience with this? How can I solve it?

My code for opening the view:

-(void)displayComposerSheetWithBodyString:(NSString *)aBody {     if ([MFMailComposeViewController canSendMail])     {         MFMailComposeViewController *picker = [[MFMailComposeViewController alloc]init];         picker.mailComposeDelegate = self;          [picker setSubject:@"Lista"];          NSString *emailBody = aBody;         [picker setMessageBody:emailBody isHTML:NO];          [self.navigationController presentModalViewController:picker animated:YES];     }     else     {         [[[UIAlertView alloc]initWithTitle:NSLocalizedString(@"Din enhet är inte redo att skicka e-post. Kontrollera dina inställningar", nil)                                    message:nil                                   delegate:self                          cancelButtonTitle:NSLocalizedString(@"OK", nil)                          otherButtonTitles:nil]          show];     } } 
like image 928
Paul Peelen Avatar asked Mar 01 '13 13:03

Paul Peelen


1 Answers

Not sure if you have fixed the problem, but I have met it recently in my project.

A workaround I did was to allocate and initiate MFMailComposeViewController in an earlier stage, and hold it in one static variable, whenever it's needed, get the static MFMailComposeViewController instance and present it.

It seems working for me, hope it will work for you, too.

like image 141
exu Avatar answered Sep 20 '22 17:09

exu