如何通过iMe​​ssage ios 8发送音频文件

时间:2015-02-02 06:49:54

标签: ios audio custom-keyboard uipasteboard imessage

正如我们所知,随着ios 8的推出,苹果允许自定义键盘扩展。在键盘扩展中,我们可以使用复制图像到剪贴板发送短信中的图像,GIF等。

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

现在我正在尝试在iMessage中发送音频文件,就像这个功能reference。不知道苹果会允许我们在iMessage中发送音频吗?。所以我试过上面的方法,但它没有显示任何粘贴短信窗口中的音频选项。

 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"];

任何人都可以建议我如何使用自定义键盘扩展程序发送音频文件。这可能吗?

2 个答案:

答案 0 :(得分:10)

我相信您可以直接将文件附加到MFMessageComposeViewController。以下是documentation link如何完成的工作。

以下是执行此操作的步骤。

  1. 使用+ (BOOL)isSupportedAttachmentUTI:(NSString *)uti
  2. 检查是否可以使用文件UTI发送文件
  3. 查找文件UTI。即文件的路径
  4. 使用MFMessageComposeViewController
  5. 将文件附加到- (BOOL)addAttachmentData:(NSData *)attachmentData typeIdentifier:(NSString *)uti filename:(NSString *)filename

    正如该方法的描述所述

      

    当您要添加到邮件的附件没有文件系统表示时,此方法特别有用。例如,对于以编程方式组成的视听内容,情况就是如此。

    注意:您必须将音频文件转换为NSData

答案 1 :(得分:0)

MFMessageComposeViewController不是此方案中的解决方案。自定义键盘扩展不应提供新的视图控制器,而只是将音频文件粘贴到粘贴板。下面是一些适合我的快速代码

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)