由于微信的普及,微信是一種最常用的第三方分享工具。
1. 微信可以分享多種類型分享類型
微信第三方分享可以分享的類型有文本,圖片,網(wǎng)頁(yè),應(yīng)用,音頻,視頻等。對(duì)應(yīng)的數(shù)據(jù)類型如下:
WXAppExtendObject? ? ? ? ? ??多媒體消息中包含的App擴(kuò)展數(shù)據(jù)對(duì)象
WXEmoticonObject? ? ? ? ? ? ? ??多媒體消息中包含的表情數(shù)據(jù)對(duì)象
WXFileObject? ? ? ? ? ? ? ? ? ? ? ? ?多媒體消息中包含的文件數(shù)據(jù)對(duì)象
WXImageObject? ? ? ? ? ? ? ? ? ? ?多媒體消息中包含的圖片數(shù)據(jù)對(duì)象
WXMediaMessage? ? ? ? ? ? ? ? ?多媒體消息結(jié)構(gòu)體
WXMusicObject? ? ? ? ? ? ? ? ? ? ?多媒體消息中包含的音樂(lè)數(shù)據(jù)對(duì)象
WXVideoObject? ? ? ? ? ? ? ? ? ? ??多媒體消息中包含的視頻數(shù)據(jù)對(duì)象
WXWebpageObject? ? ? ? ? ? ? ? ?多媒體消息中包含的網(wǎng)頁(yè)數(shù)據(jù)對(duì)象
2. 微信分享消息體構(gòu)建:
SendMessageToWXReq?
第三方程序發(fā)送消息至微信終端程序的接口
第三方程序向微信發(fā)送信息需要調(diào)用此接口,并傳入具體請(qǐng)求類型作為參數(shù)。請(qǐng)求的信息內(nèi)容包括文本消息和多媒體消息, 分別對(duì)應(yīng)于text和message成員。調(diào)用該方法后,微信處理完信息會(huì)向第三方程序發(fā)送一個(gè)處理結(jié)果。
發(fā)送文本類型示例
SendMessageToWXReq* req = [[[SendMessageToWXReqalloc]init]autorelease];
req.text=@"XXXXXX";
req.bText=YES;
req.scene=_scene;
發(fā)送圖片類型示例:
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; ? //如果此參數(shù)不設(shè)置,app跳轉(zhuǎn)無(wú)效,直接跳到url
message.mediaObject= ext;
GetMessageFromWXResp* resp = [[[GetMessageFromWXRespalloc]init]autorelease];
resp.message= message;
resp.bText=NO;
[WXApisendResp:resp];
3. ?與微信終端交互的具體請(qǐng)求與回應(yīng)
與微信交互需要實(shí)現(xiàn)WXApiDelegate協(xié)議的兩個(gè)方法
-(void) onReq:(BaseReq*)reqonReq是微信終端向第三方程序發(fā)起請(qǐng)求,要求第三方程序響應(yīng)。第三方程序響應(yīng)完后必須調(diào)用sendRsp返回。在調(diào)用sendRsp返回時(shí),會(huì)切回到微信終端程序界面。
-(void) onResp:(BaseResp*)resp如果第三方程序向微信發(fā)送了sendReq的請(qǐng)求,那么onResp會(huì)被回調(diào)。sendReq請(qǐng)求調(diào)用后,會(huì)切到微信終端程序界面。