iOS 7上的MFMessageComposeViewController慢得多

时间:2013-09-26 11:37:24

标签: ios performance ios7 messages mfmessagecomposeview

我有一个用于发送电子邮件和短信的应用。

我遇到的问题是,在iOS 7上加载MFMessageComposeViewController比在之前的iOS上慢得多,随着联系人数量的增加,它变得更糟。

在消息应用程序打开并加载了内容之前,屏幕变黑了几秒钟。

有什么想法吗?

使用相同数量的电子邮件,MFMailComposeViewController比以前更快。

帮助!! 感谢。

3 个答案:

答案 0 :(得分:4)

我有同样的问题。我用

为作曲家提供了强有力的参考
@property (nonatomic, strong, retain) MFMessageComposeViewController *messageComposer;

然后所有者类调用此方法:

-(void)sendSMSFromController:(UIViewController*)controller
{
    self.messageComposer = [MFMessageComposeViewController new];

    if([MFMessageComposeViewController canSendText]) {
        [_messageComposer setBody:_body];
        [_messageComposer setRecipients:[NSArray arrayWithObjects:_recipient, nil]];
        [_messageComposer setMessageComposeDelegate:self];
        [controller presentViewController:_messageComposer animated:NO completion:NULL];
    }
}

作曲家看起来很快但消失得很慢。最终确定:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result) {
        case MessageComposeResultCancelled:
            NSLog(@"Message sending cancelled.");
            break;

        case MessageComposeResultFailed:
            NSLog(@"Message sending failed.");
            break;

        case MessageComposeResultSent:
            NSLog(@"Message sent.");
        default:
            break;
    }


    [controller dismissViewControllerAnimated:YES completion:^(){
        self.messageComposer = nil;
    }];
}

重新启动设备后,它显然有效。在重新启动之前(通过发送无效收件人搞乱MessageService之后),它失败了。

答案 1 :(得分:1)

对于iMessage收件人,我也遇到了这个问题。

似乎与iCloud的iMessage同步历史相关联。我有4个收件人,第一个Apple iMessage对话框弹出约需30秒。

等待这一次后,我取消了发送,下一次重复尝试很快就解决了 - 这个结果,再加上iOS7在作曲家视图中显示消息历史记录(iOS7之前没有),这导致我得出的结论是Apple在弹出视图之前正在等待某种iCloud同步。

这在iPhone 4和具有不同iCloud帐户的新iPhone 5s上都有所体现,因此它对我的iCloud帐户或收件人来说似乎没有硬件限制或独特。


我没有针对此问题的确认解决方案,但我有一些解决方法建议进一步调查:

  • 我们的一些用户报告说重启设备可以解决此问题。
  • 升级到iOS7后,每个唯一的iMessage收件人可能会收取“一次性费用”。

答案 2 :(得分:1)

此问题已通过iOS7.0.3修复