由于微信的普及,微信是一种最常用的第三方分享工具。
1. 微信可以分享多种类型分享类型
微信第三方分享可以分享的类型有文本,图片,网页,应用,音频,视频等。对应的数据类型如下:
WXAppExtendObject 多媒体消息中包含的App扩展数据对象
WXEmoticonObject 多媒体消息中包含的表情数据对象
WXFileObject 多媒体消息中包含的文件数据对象
WXImageObject 多媒体消息中包含的图片数据对象
WXMediaMessage 多媒体消息结构体
WXMusicObject 多媒体消息中包含的音乐数据对象
WXVideoObject 多媒体消息中包含的视频数据对象
WXWebpageObject 多媒体消息中包含的网页数据对象
2. 微信分享消息体构建:
SendMessageToWXReq
第三方程序发送消息至微信终端程序的接口
第三方程序向微信发送信息需要调用此接口,并传入具体请求类型作为参数。请求的信息内容包括文本消息和多媒体消息, 分别对应于text和message成员。调用该方法后,微信处理完信息会向第三方程序发送一个处理结果。
发送文本类型示例
SendMessageToWXReq* req = [[[SendMessageToWXReqalloc]init]autorelease];
req.text=@"XXXXXX";
req.bText=YES;
req.scene=_scene;
发送图片类型示例:
WXMediaMessage*message = [WXMediaMessage message];
[message setThumbImage:[UIImageimageNamed:@"res5thumb.png"]];
WXImageObject *ext = [WXImageObjectobject];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"res5thumb" ofType:@"png"];
ext.imageData = [NSData dataWithContentsOfFile:filePath];
UIImage * image = [UIImage imageWithData:ext.imageData];
ext.imageData=UIImagePNGRepresentation(image);
message.mediaObject= ext;
SendMessageToWXReq* req = [[[SendMessageToWXReqalloc]init]autorelease];
req.bText=NO;
req.message= message;
req.scene=_scene;
[WXApisendReq:req];
app指定打开: 在微信中直接打开app。
WXMediaMessage*message = [WXMediaMessagemessage];
message.title=@"App消息";
message.description=@"这种消息只有App自己才能理解,由App指定打开方式!";
[messagesetThumbImage:[UIImageimageNamed:@"res2.jpg"]];
WXAppExtendObject*ext = [WXAppExtendObjectobject];
ext.extInfo=@"extend info";
ext.url=@"http://weixin.qq.com";
Byte* pBuffer = (Byte*)malloc(BUFFER_SIZE);
memset(pBuffer,0,BUFFER_SIZE);
NSData* data = [NSDatadataWithBytes:pBufferlength:BUFFER_SIZE];
free(pBuffer);
ext.fileData= data; //如果此参数不设置,app跳转无效,直接跳到url
message.mediaObject= ext;
GetMessageFromWXResp* resp = [[[GetMessageFromWXRespalloc]init]autorelease];
resp.message= message;
resp.bText=NO;
[WXApisendResp:resp];
3. �与微信终端交互的具体请求与回应
与微信交互需要实现WXApiDelegate协议的两个方法
-(void) onReq:(BaseReq*)reqonReq是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用sendRsp返回。在调用sendRsp返回时,会切回到微信终端程序界面。
-(void) onResp:(BaseResp*)resp如果第三方程序向微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到微信终端程序界面。