Quiero adjuntar una imagen a un MMS, en iOS7. Escribí el siguiente código:

    MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
    messageController.messageComposeDelegate = self;

    NSData *imgData = [NSData dataWithContentsOfFile:@"blablabla"];
    BOOL didAttachImage = [messageController addAttachmentData:imgData typeIdentifier:@"public.data" filename:@"image"];

    if (didAttachImage)
    {
        //Present message view controller on screen
        [self presentViewController:messageController animated:YES completion:nil];
    }
    else
    {
        UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                               message:@"Failed to attach image"
                                                              delegate:nil
                                                     cancelButtonTitle:@"OK"
                                                     otherButtonTitles:nil];
        [warningAlert show];
        return;
    }

El problema es que cuando el SMS de la pantalla que se presenta, que no reconoce la imagen, y no puede enviar. Veo algo como esto:

MFMessageComposeViewController iOS7 addAttachmentData:typeIdentifier:nombre de archivo: no funciona

Creo que esto tiene algo que ver con imgData estoy enviando, o con typeIdentifier.

Nota: he probado casi todas las posibles typeIdentifiers:
@públicos».de datos», @»público.de la imagen», @»público.elemento», etc … Ninguno funcionó.

¿Alguien puede ayudarme por favor? ¿Cuál es la typeIdentifier usted está utilizando? Estoy probando en el iPhone 5, iOS 7.0.2.

Gracias.


SOLUCIÓN:

Como Greg instruido, esta solucionado mi problema: establecer el nombre de archivo como @»de la imagen.png», y typeIdentifier a kUTTypePNG.

[messageController addAttachmentData:imgData typeIdentifier:(NSString *)kUTTypePNG filename:@"image.png"];

Gracias Greg.

  • Estoy recibiendo didAttachImage = SÍ, pero yo no puedo ver ninguna imagen adjunta en mis SMS pantalla . Estoy probando en el Iphone 6plus, iOS 8.4.1
InformationsquelleAutor Beny Boariu | 2013-10-03

2 Comentarios

  1. 35

    La MFMessageComposeViewController quiere que el apego a tener la extensión correcta para el tipo de imagen que vas a subir. He verificado mediante pruebas con un archivo PNG, y las siguientes variaciones de la adición de los datos adjuntos:

    [messageController addAttachmentData:imgData typeIdentifier:@"public.data" filename:@"image"];
    [messageController addAttachmentData:imgData typeIdentifier:@"public.data" filename:@"image.abc"];
    [messageController addAttachmentData:imgData typeIdentifier:@"public.data" filename:@"image.png"];

    Sólo la última opción trabajado. No tenía la necesidad de cambiar el typeIdentifier, aunque probablemente tendría sentido elegir una infección urinaria que coincida con el tipo de datos.

    La lista completa de las infecciones urinarias está disponible aquí: Sistema-Declaró Tipo De Uniforme Identificadores (Gracias @iWasRobbed!)

    • La lista completa se puede encontrar aquí: developer.apple.com/library/ios/documentation/Miscellaneous/…
    • Trató de ambos. Todavía no está trabajando. UIImage *img = [UIImage imageWithContentsOfFile:imagen.i_filePath]; NSData *imgData = UIImagePNGRepresentation(img); BOOL didAttachImage = [messageController addAttachmentData:imgData typeIdentifier:(NSString *)kUTTypePNG filename:@»imagen»];
    • Vamos, que es demasiado estúpido. Cambiar nombre de archivo a «de la imagen.png», y ahora funciona. Lol. No se puede creer. Gracias Greg.
    • De niza. 🙂 Me alegra poder ayudar!
    • Gracias! Sólo una nota al margen, esto funciona para los vídeos, sólo el nombre del archivo video.mp4 o video.mov y así sucesivamente.
  2. 0

    Para Swift Usted puede probar este

    si (MFMessageComposeViewController.canSendText()) {

         let controller = MFMessageComposeViewController()
         controller.body = "Solution for broken image in composer"
         controller.messageComposeDelegate = self
    
          if image.imageAsset != nil {
    
                let imageData = UIImageJPEGRepresentation(self.fixOrientation(img: image), 1)  //! as NSData
                controller.addAttachmentData(imageData! , typeIdentifier: "image/.jpeg", filename: "image.jpeg")
    
            }
    
            viewController.present(controller, animated: true,completion: {
    
            })

    }

Dejar respuesta

Please enter your comment!
Please enter your name here