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.
+ (BOOL)isSupportedAttachmentUTI:(NSString *)uti
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)