guide development developer desarrollador apple app iphone objective-c ios4 mfmailcomposeviewcontroller

iphone - development - MFMessageComposeViewController alloc devuelve nil



ios developer resources (1)

¿Ha revisado +[MFMessageComposeViewController canSendText] ?

De la referencia de la clase MFMessageComposeViewController ,

Antes de presentar una vista de composición de mensajes, llame al método de clase canSendText para asegurarse de que el dispositivo del usuario esté configurado correctamente. No intente presentar una vista de composición de mensaje si el método canSendText devuelve NO. Si la entrega de SMS no está disponible, puede notificar al usuario o simplemente deshabilitar las funciones de SMS en su aplicación.

A partir de iOS 5, puede registrarse para recibir notificaciones de cambios en la disponibilidad del envío de mensajes de texto a través de la notificación de notificación de MFMessageComposeViewControllerTextMessageAvailabilityDidChangeNotification .

Razones por las que podría estar volviendo nil :

  • El dispositivo no está ejecutando iOS 4.
  • El dispositivo es un iPod Touch / iPad sin iMessage habilitado.
  • No hay tarjeta SIM? (La vista ahora se muestra en iOS 6; no se notifica a la aplicación el error de envío del mensaje).
  • "Dispositivo" es en realidad el simulador. (Quizás esto también funciona en iOS 6).

De manera similar, [[MFMailComposeViewController alloc] init] devuelve nil cuando no hay cuentas de correo habilitadas (puede probar esto rápidamente deshabilitando las cuentas en Configuración), pero también muestra una alerta de "No se han configurado cuentas de correo". MFMessageComposeViewController no hace esto.

En mi aplicación, MFMailComposeViewController funciona bien pero la creación de una nueva instancia de MFMessageComposeViewController falla.

Aquí está el código para ambos:

-( IBAction)sendSMS: (id)sender { MFMessageComposeViewController *picker = [[[MFMessageComposeViewController alloc] init] autorelease]; picker.messageComposeDelegate = self; NSArray *toRecipients = [NSArray arrayWithObject: cell.currentTitle ]; picker.recipients = toRecipients; [self presentModalViewController:picker animated:YES]; } -( IBAction)sendEmail: (id)sender { MFMailComposeViewController *picker = [[[MFMailComposeViewController alloc] init] autorelease]; picker.mailComposeDelegate = self; NSArray *toRecipients = [NSArray arrayWithObject: email.currentTitle ]; [picker setToRecipients:toRecipients]; [self presentModalViewController:picker animated:YES]; }

Parece obvio que todo se vincula correctamente porque el controlador de vista de correo electrónico funciona bien. ¿Hay algo que me falta tal vez la configuración?