第三方分享之微信

由于微信的普及,微信是一种最常用的第三方分享工具。

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请求调用后,会切到微信终端程序界面。

你可能感兴趣的:(第三方分享之微信)