mfmailcomposeviewcontrollerdelegate ios objective-c mfmailcomposeviewcontroller mfmailcomposer

ios - mfmailcomposeviewcontrollerdelegate - send email swift 4



Problema al utilizar MFMailComposeViewController (3)

Tengo un problema difícil. En una de mis aplicaciones, con más de 150,000 descargas ... Tengo un problema que rara vez ocurre y que parece que no puedo resolver.

El problema es el siguiente: en una vista donde el usuario puede compartir una lista por correo electrónico, abro la ventana de correo usando MFMailComposeViewController . Sin embargo, en algunos casos, la aplicación parece tener un problema al utilizar el editor de correo. El usuario presiona el botón de compartir, la ventana de correo se desliza hacia arriba, espera aproximadamente 1-2 segundos y luego se cierra de nuevo. No hay contenido en la ventana de correo, aunque sí le envío datos. Yo mismo no he podido recrear el problema en ningún dispositivo o en el simulador, sin embargo, un colega sí. Ejecuté la aplicación usando XCode en su teléfono y obtuve lo siguiente en los registros:

2013-03-01 14:43:39.604 appname[318:907] <MFMailComposeRemoteViewController: 0x1ebfb100> timed out waiting for fence barrier from com.apple.MailCompositionService 2013-03-01 14:43:39.631 appname[318:907] viewServiceDidTerminateWithError: Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)"

Busqué en Google el error "expiró el tiempo de espera para la barrera de la cerca de com.apple.MailCompositionService" pero realmente no puedo encontrar ayuda.

¿Alguien tiene alguna experiencia con esto? ¿Cómo puedo resolverlo?

Mi código para abrir la vista:

-(void)displayComposerSheetWithBodyString:(NSString *)aBody { if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *picker = [[MFMailComposeViewController alloc]init]; picker.mailComposeDelegate = self; [picker setSubject:@"Lista"]; NSString *emailBody = aBody; [picker setMessageBody:emailBody isHTML:NO]; [self.navigationController presentModalViewController:picker animated:YES]; } else { [[[UIAlertView alloc]initWithTitle:NSLocalizedString(@"Din enhet är inte redo att skicka e-post. Kontrollera dina inställningar", nil) message:nil delegate:self cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil] show]; } }


A tuve el mismo problema, y ​​esta solución me ayudó:

https://twitter.com/christian_beer/statuses/321295533077565440

"@nathangaskin bueno ... eso fue hace mucho tiempo :) Pero si recuerdo correctamente, funcionó después de que eliminé las fuentes personalizadas de mi código de apariencia UIA"

Funciona bien para mí.

Además, la segunda opción es simplemente ajustar la visualización de la llamada en

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{

bloquear


No estoy seguro de haber solucionado el problema, pero lo he encontrado recientemente en mi proyecto.

Una solución que hice fue asignar e iniciar MFMailComposeViewController en una etapa anterior y mantenerlo en una variable estática , siempre que sea necesario, obtener la instancia estática de MFMailComposeViewController y presentarla.

Parece que funciona para mí, espero que funcione también para ti.


Tengo exactamente el mismo problema. Creo que lo he clavado en el tiempo necesario para formular la cadena del cuerpo del mensaje.

Contenido del comentario

//Message Body NSString *msgBody = [NSString stringWithFormat: @"I noticed these results in pocketKPI. The %@ was at %@ which is a variance of %@(or %@) to the target defined as %@. When you have some time let''s discuss.", self.itemToView.kpiName, [DFSKpiFormatter formatNumberAsString:self.itemToView.currentValue], [self.itemToView determineVarianceLabelText], [self.itemToView determineVariancePercentLabelText], [DFSKpiFormatter formatNumberAsString:self.itemToView.targetValue]];