2013-09-26 21 views
10

Mam aplikację do wysyłania wiadomości e-mail i SMS.MFMessageComposeViewController znacznie wolniej na iOS 7

Problem, który mam, polega na tym, że ładowanie sterownika MFMessageComposeViewController jest znacznie wolniejsze w systemie iOS 7 niż w poprzednim systemie iOS, a staje się najgorsze wraz ze wzrostem liczby kontaktów.

Ekran jest czarny przez kilka sekund, zanim otworzy się aplikacja Wiadomości z załadowaną zawartością.

Jakieś myśli?

Z taką samą dużą liczbą wiadomości e-mail, sterownik MFMailComposeViewController jest szybszy niż wcześniej.

Pomoc !! Dzięki.

+0

Czy powielono problem w nowym pustym projekcie? – Wain

+0

Nie. Używam kopii projektu na żywo. –

+0

Mam na myśli czy jesteś pewien, że nie jest to spowodowane przez coś w twoim projekcie. Czy używasz niestandardowych czcionek w pasku nawigacji? Udowodnij problem w prostym projekcie. Podnieś błąd w Apple, jeśli nadal dzieje się to w prostym projekcie. – Wain

Odpowiedz

1

Ten problem został rozwiązany z iOS7.0.3

+6

W iOS 7.1 ponownie ten numer ... –

1

Z tym problemem również spotykam się z odbiorcami iMessage.

Wydaje się być powiązana z iMessage synchronizowaniem historii z iCloud. Miałem 4 odbiorców i pojawienie się pierwszego okna dialogowego Apple iMessage zajęło około 30 sekund.

Po jednokrotnym odczekaniu, anulowałem wysyłanie, następna ponowna próba została szybko rozwiązana - ten wynik oraz fakt, że iOS7 wyświetla historię wiadomości w widoku kompozytora (pre iOS7 nie), doprowadziły mnie stwierdzić, że Apple czeka na jakąś synchronizację iCloud przed pojawieniem się tego widoku.

Ta wersja jest odtwarzana zarówno na telefonie iPhone 4, jak i na nowym iPhonie 5s z różnymi kontami iCloud, więc nie wydaje się być ograniczona sprzętowo ani unikalna dla mojego konta i odbiorców usługi iCloud.


nie mam potwierdzone rozwiązanie tego problemu, ale mam pewne obejścia zaproponować dla dalszych badań:

  • Niektórzy z naszych użytkowników donoszą, że ponowne uruchomienie urządzenia rozwiązuje ten problem.
  • Po aktualizacji do iOS7 może to być "opłata jednorazowa" przypadająca na jednego odbiorcę iMessage.
+1

Mam podobny problem z komponowaniem iMessage. Mam jednak zupełnie inny problem, ponieważ czasami wiadomość nie wysyła nawet wszystkich. Problem został rozwiązany po ponownym uruchomieniu urządzenia. Tknąłem swój mózg o problem i wydaje się on nieregularny. – Calvin

+0

Dokładnie to samo tutaj i z moich testów wydaje się być związany z odbiorcami, którzy mają historię na urządzeniu, tj. Że już wcześniej przesyłaliście wiadomości. Jeśli wybierzesz odbiorcę, dla którego nie masz istniejącego wątku iMessage/SMS, kontroler natychmiast zareaguje, a komunikat zostanie wysłany po naciśnięciu przycisku Wyślij. Jak wspomniano powyżej, ponowne uruchomienie urządzenia (w moim przypadku iPhone 5) rozwiązuje problem (tymczasowo). – user1002428

4

mam ten sam problem. Zrobiłem kompozytor silne odniesienia z

@property (nonatomic, strong, retain) MFMessageComposeViewController *messageComposer; 

Następnie klasa właściciel nazywa tę metodę:

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

Kompozytor pojawia się szybko, ale powoli zanika. Finalizuje za pomocą:

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

Po ponownym uruchomieniu urządzenia działa poprawnie. Przed ponownym uruchomieniem (po zerwaniu z MessageService przez wysłanie niepoprawnych odbiorców) nie udało się.

+0

Dzięki, że pracował dla mnie ... nadal tak dziwne musiałem zrestartować mój iphone ... – meronix

+0

Wygląda na to, że MessageService zawiera kilka singleton, który nie inicjuje wątku bezpieczne. – igraczech