Issue when using MFMailComposeViewController

百般思念 提交于 2019-11-29 00:33:41

问题


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];
    }
}

回答1:


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.




回答2:


a had the same issue, and this fixe helped me:

https://twitter.com/christian_beer/statuses/321295533077565440

"@nathangaskin well… that was long ago :) But if I remember correctly, it worked after I removed the custom fonts from my UIAppearance code"

It works fine for me.

Also, second option is to simply wrap displaying call into

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{

block




回答3:


I have exactly the same issue. I think I have nailed it down to the time it takes to formulate the message body string.

Content from comment

 //Message Body 
NSString *msgBody = [NSString stringWithFormat:
                        @"I noticed these results in pocketKPI. The %@ was at %@ which is a variance of %@(or %@) to the target defined as %@. When you have some time let's discuss.", 
                        self.itemToView.kpiName, 
                        [DFSKpiFormatter formatNumberAsString:self.itemToView.currentValue], [self.itemToView determineVarianceLabelText],
                        [self.itemToView determineVariancePercentLabelText], 
                        [DFSKpiFormatter formatNumberAsString:self.itemToView.targetValue]];


来源:https://stackoverflow.com/questions/15159412/issue-when-using-mfmailcomposeviewcontroller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!