如何通过 iMessage 发送音频文件 ios 8

How do I send audio file send via iMessage ios 8

正如我们所知,随着 ios 8 的推出,苹果允许自定义键盘 extension.In 键盘扩展,我们可以通过使用将图像复制到 clipboard.code

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

现在我正在尝试像这个功能一样在 iMessage 中发送音频文件 reference。不知道苹果会允许我们在 iMessage 中发送音频吗?所以我尝试了上面的方法但它没有显示SMS 中音频的任何粘贴选项 window.

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

任何人都可以建议我如何使用自定义键盘发送音频文件 extension.is 可能吗?

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

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

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

如方法描述所述

This method is especially useful when the attachment you want to add to a message does not have a file system representation. This can be the case, for example, for programmatically composed audiovisual content.

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

MFMessageComposeViewController 不是这种情况下的解决方案。自定义键盘扩展不应呈现新的视图控制器,而只是将音频文件粘贴到粘贴板。这是一些对我有用的 swift 代码

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)