UShare 分享文件到微信

看到友盟社区一个帖子,说友盟分享文档没有分享文件的示例或说明,然后去看了SDK提供的接口,写了一些示例。

https://community.umeng.com/topic/view/622ae087fb24130bf76d0e0a

UMShareFileObject *fileObject = [UMShareFileObject shareObjectWithTitle:@"分享的PDF名称.pdf" descr:@"不用写,写了也不显示" thumImage:nil];
fileObject.fileData = [NSData dataWithContentsOfURL:路径或地址]; // 如果无法打开微信检查这里的fileData 是否位nil

UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObjectWithMediaObject:fileObject];

[[UMSocialManager defaultManager] shareToPlatform:UMSocialPlatformType_WechatSession messageObject:messageObject currentViewController:self completion:^(id result, NSError *error) {
if (!error) {
NSLog(@"result -> %@",result);
}
}];

微信SDK暴露的接口


@interface WXFileObject : NSObject

/*! @brief 返回一个WXFileObject对象
*
* @note 返回的WXFileObject对象是自动释放的
*/
+ (WXFileObject *)object;

/** 文件后缀名
* @note 长度不超过64字节
*/
@property (nonatomic, copy) NSString *fileExtension;

/** 文件真实数据内容
* @note 大小不能超过10M
*/
@property (nonatomic, strong) NSData *fileData;

@end

友盟分享的接口

@interface UMShareFileObject : UMShareObject

/** 文件后缀名
* @note 长度不超过64字节
*/
@property (nonatomic, retain) NSString *fileExtension;

/** 文件真实数据内容
* @note 大小不能超过10M
*/
@property (nonatomic, retain) NSData *fileData;

/** 文件的名字(不包含后缀)
* @note 长度不超过64字节
*/
@property (nonatomic, retain) NSString *fileName;

@end

实际操作结果发现 UMShareFileObject的 fileExtension和fileName 是可以不传的,但是在构造初始化UMShareFileObject的时候,title字段一定要带后缀,否则分享到微信文件会是一个问号,不能直接打开。

UMShareFileObject *fileObject = [UMShareFileObject shareObjectWithTitle:@"分享的PDF名称.pdf" descr:@"不用写,写了也不显示" thumImage:nil];

其实使用系统UIActivityViewController分享还是最香的。