2013-09-26 11 views
10

Ho un'app per l'invio di e-mail e messaggi di testo.MFMessageComposeViewController molto più lento su iOS 7

Il problema che sto riscontrando è che il caricamento di MFMessageComposeViewController è molto più lento su iOS 7 che su iOS precedente e peggiora con l'aumentare del numero di contatti.

Lo schermo diventa nero per secondi prima che l'app Messaggi si apra con il contenuto caricato.

Qualche idea?

Con lo stesso numero elevato di e-mail, MFMailComposeViewController è più veloce di prima.

Aiuto !! Grazie.

+0

Hai duplicato il problema in un nuovo progetto vuoto? – Wain

+0

No. Sto utilizzando una copia del progetto dal vivo. –

+0

Voglio dire sei sicuro che questo non è causato da qualcosa nel tuo progetto. Stai usando caratteri personalizzati nelle barre di navigazione? Dimostra il problema in un progetto semplice. Solleva un bug con Apple se si verifica ancora nel progetto semplice. – Wain

risposta

1

Questo problema è stato risolto con iOS7.0.3

+6

Ancora in iOS 7.1 questo problema .. –

1

Sto riscontrando questo problema anche per i destinatari di iMessage.

Sembra essere legato alla cronologia di sincronizzazione di iMessage giù da iCloud. Avevo 4 destinatari e ci sono voluti circa ~ 30 secondi per la prima finestra di dialogo di Apple iMessage.

Dopo averlo aspettato una volta, ho annullato le mandate, il successivo tentativo ripetuto è stato risolto rapidamente: questo risultato, oltre al fatto che iOS7 visualizza la cronologia dei messaggi nella vista composer (non iOS7), mi ha portato per concludere che Apple è in attesa di una sorta di sincronizzazione iCloud prima di aprire la vista.

Questo è riprodotto su un iPhone 4 e un nuovo iPhone 5s con diversi account iCloud, quindi non sembra essere limitato all'hardware o unico al mio account iCloud o ai destinatari.


non ho una soluzione confermato per questo problema, ma ho alcune soluzioni a suggerire per ulteriori indagini:

  • Alcuni dei nostri utenti hanno segnalato che il riavvio del dispositivo risolve questo problema.
  • Questa potrebbe essere una "tariffa unica" per ciascun destinatario iMessage dopo l'aggiornamento a iOS7.
+1

Ho lo stesso problema con iMessage che compone anche. Tuttavia ho un problema completamente diverso è che a volte il messaggio non invia nemmeno tutto. Il problema viene risolto dopo il riavvio del dispositivo. Mi sto distruggendo il cervello per il problema, e sembra intermittente. – Calvin

+0

Esatto lo stesso qui, e dai miei test sembra che sia legato ai destinatari che hanno una cronologia sul dispositivo, cioè che hai già inviato messaggi. Se si seleziona un destinatario con cui non è presente un thread iMessage/SMS esistente, il controller risponde immediatamente dopo essere stato presentato e il messaggio viene inviato correttamente dopo aver premuto send. Come sopra già detto, il riavvio del dispositivo (nel mio caso un iPhone 5) risolve il problema (temporaneamente). – user1002428

4

Ho lo stesso problema. Ho fatto il forte richiamo compositore

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

Poi classe proprietario chiama questo metodo:

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

Compositore appare in fretta, ma scompare lentamente. Finalizza con:

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

Dopo aver riavviato il mio dispositivo funziona chiaramente. Prima del riavvio (dopo aver giocato con MessageService inviando destinatari non validi) non è riuscito.

+0

Grazie, ha funzionato per me ... ho trovato ancora così strano che ho dovuto riavviare il mio iphone ... – meronix

+0

Sembra che il MessageService contenga un singleton, che non ha un'inizializzazione sicura del thread. – igraczech