微信SDK分享文件给好友

作者: User106 | 来源:发表于2017-05-31 20:21 被阅读352次

最近公司要求实现分享pdf文件给微信好友的需求,去微信官方SDK文档去找发现官方文档没有介绍分享文件的功能,一番折腾最终实现功能,特写篇总结,以供后来人参考。本文是讲解iOS端的实现,Android的兄弟们可以移步到这篇文章
在微信分享SDK源码里,找到WXFileObject类,问题迎刃而解。

image.png

至此,工作完成一半,请出下一个关键人物——WXMediaMessage。

image.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];

相关文章

网友评论

  • 亲爱的八路:楼主知道怎么不用UIActivityViewController,直接分享文件到qq吗
    User106:@亲爱的八路 讲真,不清楚的
  • 春暖花已开:很实用,赞一波:grin:
  • c1a25d30f82a:你好,我在android端,按照您的方法,在执行sendReq 后,程序没有反应。不能拉起微信的程序呢。
    User106:@blue_baby521 微信对分享的数据大小有限制,按文档的说法是不能超过10M。我这边仅仅是分享单个pdf文件,文件大小在100k左右。
    c1a25d30f82a:@User106 我测试了一下400k 可以正常拉起,文件再大了就不行,您分享的文件多大呢?是pdf文件吗
    User106:这是Android端的相关代码,供参考。

    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

本文标题:微信SDK分享文件给好友

本文链接:https://www.haomeiwen.com/subject/dcijfxtx.html