¿Cómo envío un file de audio a través de iMessage ios 8?

Como sabemos con el lanzamiento de ios 8, la manzana permite la extensión personalizada del keyboard. En la extensión del keyboard podemos enviar imágenes, gif, etc. en SMS mediante Copiar image al portapapeles.

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; NSData *data= UIImagePNGRepresentation([UIImage imageNamed:@"so_close_disappointed_meme.png"]); [pasteboard setData:data forPasteboardType:@"public.png"]; 

Ahora estoy tratando de enviar un file de audio en iMessage como esta reference de característica. No sé que Apple nos permitirá enviar audio en iMessage? .so porque intenté el enfoque anterior pero no mostró ninguna opción de pegado para el audio en la window de SMS.

  UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; NSString *path = [[NSBundle mainBundle] pathForResource:@"tune"ofType:@"mp3"]; NSURL *url = [[NSURL alloc] initWithString:path]; NSData *data = [NSData dataWithContentsOfURL:url]; [pasteboard setData:data forPasteboardType:@"public.mp3"]; 

Cualquiera me puede sugerir cómo podemos enviar un file de audio usando una extensión de keyboard personalizada. ¿Es posible?

Creo que podría adjuntar directamente el file a MFMessageComposeViewController . Aquí está el enlace de documentation de cómo se podría hacer.

Los siguientes serían los pasos para hacerlo.

  1. Compruebe si el file se puede enviar utilizando el file UTI usando + (BOOL)isSupportedAttachmentUTI:(NSString *)uti
  2. Encuentra file UTI. es decir, ruta para el file
  3. Adjunte el file a MFMessageComposeViewController usando - (BOOL)addAttachmentData:(NSData *)attachmentData typeIdentifier:(NSString *)uti filename:(NSString *)filename

Como dice la descripción del método

Este método es especialmente útil cuando el file adjunto que desea agregar a un post no tiene una representación del sistema de files. Este puede ser el caso, por ejemplo, para contenido audiovisual compuesto por progtwig.

Nota: Tendrás que convertir el file de audio a NSData

MFMessageComposeViewController no es la solución en este escenario. Una extensión de keyboard personalizada no debe presentar un controller de vista nuevo, sino simplemente pegar el file de audio en la table de trabajo. Aquí hay un código rápido que funcionó para mí

 let path = NSBundle.mainBundle().pathForResource("audio", ofType:"wav") let fileURL = NSURL(fileURLWithPath: path!) let data = NSData(contentsOfURL: fileURL) let wavUTI = "com.microsoft.waveform-audio" UIPasteboard.generalPasteboard().setData(data!, forPasteboardType: wavUTI)