最近公司要求实现分享pdf文件给微信好友的需求,去微信官方SDK文档去找发现官方文档没有介绍分享文件的功能,一番折腾最终实现功能,特写篇总结,以供后来人参考。本文是讲解iOS端的实现,Android的兄弟们可以移步到这篇文章。
在微信分享SDK源码里,找到WXFileObject类,问题迎刃而解。
![](https://img.haomeiwen.com/i2255265/e57567b9de687115.png)
至此,工作完成一半,请出下一个关键人物——WXMediaMessage。
![](https://img.haomeiwen.com/i2255265/8591cc177a66b258.png)
说了这么些,下面就是最终的代码。
//文件数据
WXFileObject *fileObj = [WXFileObject object];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"shareFile" ofType:@"pdf"];
fileObj.fileData = [NSData dataWithContentsOfFile:filePath];
//多媒体消息
fileObj.fileExtension = @"pdf";
WXMediaMessage *wxMediaMessage = [WXMediaMessage message];
wxMediaMessage.title = @"share";
wxMediaMessage.description = @"描述";
wxMediaMessage.messageExt = @"pdf";
wxMediaMessage.mediaObject = fileObj;
//发送消息
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.message = wxMediaMessage;
req.bText = NO;
req.scene = WXSceneSession;
[WXApi sendReq:req];
网友评论
public static void ShareFileToWeiXin(String filePath, String title) {
WXFileObject fileObj = new WXFileObject();
fileObj.fileData = inputStreamToByte(filePath);
//文件路径
fileObj.filePath = filePath;
//使用媒体消息分享
WXMediaMessage msg = new WXMediaMessage(fileObj);
msg.title = title;
//发送请求
SendMessageToWX.Req req = new SendMessageToWX.Req();
//创建唯一标识
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;
wxapi.sendReq(req);
}
/** * 将输入的流转换为byte数组 *
* @Return byte数组 */
public static byte[] inputStreamToByte(String path) {
try {
FileInputStream fis = new FileInputStream(path);
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
int ch;
while ((ch = fis.read()) != -1) {
bytestream.write(ch);
}
byte imgdata[] = bytestream.toByteArray();
bytestream.close();
return imgdata;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
不能拉起微信或许是配置有问题,可以参考微信开放平台的文档https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN