Los posts de MFMessageComposeViewController desaparecen y no se envían después de presionar el button de envío (iOS 7)

Tengo una aplicación en la que el usuario puede seleccionar una image y enviarla a un amigo adjuntando la image a una instancia de MFMessageComposeViewController. Después de presionar enviar en la vista MFMCVC, las cosas funcionan como se espera, algunas veces: el post con la image se envía correctamente al destinatario o aparece una label de "post fallido" junto con el post en el cliente nativo de iMessage (pero en En ambos casos, la image es visible en el cliente nativo). Sin embargo, hay un error que ocurre ~ la mitad del time después de presionar enviar (en un iPhone 4 con iOS 7). El post, el apego y todo, se desvanece, nunca se verá de nuevo. El destinatario nunca recibe el post y no aparece en el canal de posts del remitente en iMessage.

Estoy bastante seguro de que se trata de un error en el propio MFMessageComposeViewController de Apple porque la API es bastante simple y pude reproducir de forma fiable el error en una aplicación de demostración independiente https://github.com/timcour/mf-message-compose- fail-demo.git

- (void)displaySMSComposerSheet { MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; picker.messageComposeDelegate = self; NSData *data = [_imageDataCache objectForKey:[_imageURLs objectAtIndex:_currentIndex]]; [picker addAttachmentData:data typeIdentifier:(NSString *)kUTTypeGIF filename:@"share.gif"]; if (![self.recipientTextField.text isEqualToString:@""]) { picker.recipients = [NSArray arrayWithObject:self.recipientTextField.text]; } picker.body = [NSString stringWithFormat:@"image: %i", _currentIndex]; [self presentViewController:picker animated:YES completion:NULL]; } 

Después de observar la interfaz de usuario durante bastantes casos de éxito y falla, parece ser una condición de carrera en la vista de compilation exacerbada por el sistema operativo que se está estresando, no estoy seguro de si es la memory o el estrés de la CPU (¿o ambos?). En cualquier caso, cuando el envío es exitoso, los contenidos del canal de post se llenan con el contenido de su conversación respectiva inmediatamente después de seleccionar un contacto, anexando visiblemente el nuevo post hasta el final. Pero cuando el error aparece y el post desaparece, los posts anteriores de la conversación solo aparecen después de presionar el button de envío sin que aparezca el post nuevo. Si esto es de hecho una condición de carrera, una suposition es que es una carrera entre el mecanismo de -viewDidLoad de posts del compositor VC y -viewDidLoad .

¿Alguien se ha topado con esto antes y / o sabe de una solución? Presentaré un informe de error a Apple, pero me gustaría encontrar una solución que no incluya la espera de una solución de Apple.

Notas:

  • Los posts se desvanecen con mayor frecuencia en iPhone 4 y iPhone 5, pero rara vez en la 5ta generación de iPod touch (todos con iOS 7.0.2).

  • El error se puede reproducir con mayor facilidad utilizando la aplicación https://github.com/timcour/mf-message-compose-fail-demo.git en el iPhone 4 enviando las 20 imágenes a la misma persona lo más rápido que puedas.

  • Hay un error separado (pero probablemente relacionado). Después de seleccionar ingresar una dirección de correo electrónico de un contacto en la vista MFMCVC, el vc determina si debe enviar un iMessage o MMS. Algunas veces durante las testings, tomó la determinación incorrecta e intentó enviar el post como un MMS a pesar de que la count de iMessage del destinatario no tenía asociado un número de teléfono. Esto dio como resultado un post que miró al remitente como si se envió con éxito, pero que realmente no pudo llegar a su destino.

  • Esto no parece ser el error de "iMessage para enviar posts" que muchos usuarios se han quejado de Apple.

ACTUALIZAR:

Aquí está el stacktrace que se registra cuando un post desaparece y no se puede enviar:

 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] ****** Failed to complete all history queries in a blocking request: ( "********-****-****-****-************" ) Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 1 IMFoundation 0x0000000193acb948 IMLogBacktraceToDepth + 80 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 2 IMCore 0x00000001939d1df8 _NSStringFromIMMessageError + 22604 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 3 IMCore 0x00000001939c7670 IMPersonStatusComparator + 261116 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 4 ChatKit 0x00000001923c96b8 <networkingacted> + 240 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 5 ChatKit 0x00000001923933b0 <networkingacted> + 88 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 6 ChatKit 0x000000019237cb70 <networkingacted> + 996 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 7 ChatKit 0x0000000192414cdc <networkingacted> + 76 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 8 Foundation 0x000000018e8c0834 __NSFireDelayedPerform + 392 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 9 CoreFoundation 0x000000018dd1768c <networkingacted> + 28 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 10 CoreFoundation 0x000000018dd172fc <networkingacted> + 804 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 11 CoreFoundation 0x000000018dd15024 <networkingacted> + 1324 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 12 CoreFoundation 0x000000018dc55b78 CFRunLoopRunSpecific + 452 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 13 GraphicsServices 0x0000000193677830 GSEventRunModal + 168 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 14 UIKit 0x0000000190c9305c UIApplicationMain + 1156 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 15 MessagesViewService 0x000000010009bd80 MessagesViewService + 15744 Oct 21 12:09:17 Davids-iPhone MessagesViewService[2680] <Warning>: [Warning] 16 libdyld.dylib 0x000000019a25baa0 <networkingacted> + 4 Oct 21 12:09:20 Davids-iPhone SpringBoard[16] <Warning>: LICreateIconForImage passed NULL CGImageRef image 

Su problema es que no tiene una fuerte reference al selector. Hazlo un ivar, y nada cuando el selector haya completado totalmente su trabajo.

Intente asegurarse de que su hora y date estén configuradas correctamente. Cambié el mío para download un emulador y olvidé cambiarlo después. Mis posts comenzaron a desaparecer. Después de arreglar la hora, el problema se corrigió. Aclamaciones