MFMessageComposeViewController намного медленнее на iOS 7

У меня есть приложение для отправки сообщений электронной почты и текстовых сообщений.

Проблема, с которой я сталкиваюсь, заключается в том, что загрузка MFMessageComposeViewController намного медленнее на iOS 7, чем на предыдущем iOS, и это становится худшим по мере увеличения количества контактов.

Экран становится черным в течение нескольких секунд до того, как откроется приложение "Сообщения" с загруженным содержимым.

Любые мысли?

С таким же большим количеством писем MFMailComposeViewController работает быстрее, чем раньше.

Помощь!! Спасибо.

Ответ 1

Эта проблема исправлена ​​с помощью iOS7.0.3

Ответ 2

У меня та же проблема. Я сделал композитор сильной ссылкой с

@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 путем отправки недопустимых получателей) это не удалось.

Ответ 3

Я также сталкиваюсь с этой проблемой для получателей iMessage.

Кажется, он привязан к iMessage, синхронизирующему историю с iCloud. У меня было 4 получателя, и для первого диалогового окна Apple iMessage потребовалось около 30 секунд.

После того, как вы один раз подождали, я отменил отправку, повторная попытка повторила быстро - этот результат плюс тот факт, что iOS7 отображает историю сообщений в представлении композитора (pre iOS7 не делает), привел меня к что Apple ждет какой-то синхронизации iCloud, прежде чем появиться в представлении.

Это воспроизведено как на iPhone 4, так и на новом iPhone 5 с разными учетными записями iCloud, поэтому он не кажется ограниченным или уникальным для моего аккаунта iCloud или получателей.


У меня нет подтвержденного решения для этой проблемы, но у меня есть некоторые обходные пути, которые можно предложить для дальнейшего изучения:

  • Некоторые из наших пользователей сообщили, что перезагрузка устройства разрешает эту проблему.
  • Это может быть "1 раз в день" для каждого получателя iMessage после перехода на iOS7.