27

我有一个棘手的问题。在我的一个应用程序中,下载量超过 150.000 次……我遇到了一个很少发生的问题,而且我似乎无法弄清楚。

问题如下:在用户可以通过电子邮件共享列表的视图中,我使用MFMailComposeViewController. 但是,在少数情况下,该应用程序似乎在使用邮件编辑器时遇到了问题。用户按下共享按钮,邮件窗口向上滑动,等待大约 1-2 秒,然后再次关闭。邮件窗口中没有内容,尽管我确实向它发送了数据。我自己无法在任何设备或模拟器中重现该问题,但一位同事却做到了。我在他的手机上使用 XCode 运行该应用程序,并在日志中得到以下信息:

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.)"

我用谷歌搜索了错误“等待来自 com.apple.MailCompositionService 的栅栏屏障超时”,但找不到任何帮助。

有没有人有这方面的经验?我该如何解决?

我打开视图的代码:

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

3 回答 3

13

不知道你是否已经解决了这个问题,但我最近在我的项目中遇到了它。

我所做的一种解决方法是在早期阶段分配和启动 MFMailComposeViewController,并将其保存在一个静态变量中,每当需要时,获取静态 MFMailComposeViewController 实例并呈现它。

它似乎对我有用,希望它也对你有用。

于 2013-06-18T08:00:09.763 回答
5

a 有同样的问题,这个修复帮助了我:

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

“@nathangaskin 好吧……那是很久以前的事了 :) 但如果我没记错的话,在我从 UIAppearance 代码中删除自定义字体后它就起作用了”

这对我来说可以。

此外,第二种选择是将显示调用简单地包装到

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

堵塞

于 2013-11-11T15:46:15.837 回答
4

我有完全相同的问题。我想我已经确定了制定消息正文字符串所需的时间。

评论内容

 //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]];
于 2013-03-20T22:20:41.423 回答