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

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

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

现在我试图在iMessage中发送音频文件,就像这个function参考一样。不知道苹果会允许我们在iMessage中发送音频吗?.so我试过上面的方法,但它没有在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"]; 

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

我相信你可以直接将文件附加到MFMessageComposeViewController 。 以下是如何完成的文档链接 。

以下是这样做的步骤。

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

正如该方法的描述所说

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

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

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)