oct 07

Hace unos minutos descubri un error en una de mis aplicaciones y pensé que estaría bien comentarlo con el resto de la gente para que no cometan el mismo error.

Cuando intentamos enviar emails desde nuestras aplicaciones usando el MFMailComposeViewController podemos tener un problema si los usuarios no tienen configurada ninguna cuenta.

mail = [[MFMailComposeViewController alloc] init];
[mail setMessageBody:[NSString stringWithFormat:@"Texto del cuerpo"]  isHTML:YES];
mail.mailComposeDelegate = self;
[self presentModalViewController:mail animated:YES];
[mail release];

El problema con el código de arriba consiste en que si el usuario no tienen ninguna cuenta configurada por lo que el init del MFMailComposeViewController devolverá nil y al intentar mostrar la vista de mail ([self presentModalViewController:mail animated:YES]) la aplicación se cerrará.

Para evitar eso tenemos que comprobar que el mail no es nil antes de hacer nada. El código buenos sería este:

mail = [[MFMailComposeViewController alloc] init];
[mail setMessageBody:[NSString stringWithFormat:@"Texto del cuerpo"]  isHTML:YES];
mail.mailComposeDelegate = self;
if (mail !=nil)
    [self presentModalViewController:mail animated:YES];
else
   //Informar al usuario o lanzar la aplicación mail.
[mail release];
VN:F [1.9.8_1114]
Rating: 5.0/5 (4 votes cast)
VN:F [1.9.8_1114]
Rating: +6 (from 6 votes)
Cuidado al usar MFMailComposeViewController para enviar emails en el iPhone/iPod, 5.0 out of 5 based on 4 ratings

Leave a Reply

You must be logged in to post a comment.

preload preload preload