iOS:开放平台引用(二)--微信分享
2014-10-10 15:27
232 查看
API说明
类说明:
微信分享sdk文件:libWeChatSDK.a , WXApi.h , WXApiObject.hWXApi.h文件内容主要是调用微信分享的相关方法、接口;
// WXApi.h 文件 主要方法 +(BOOL) registerApp:(NSString *)appid withDescription:(NSString *)appdesc; /*! @brief 处理微信通过URL启动App时传递的数据 */ +(BOOL) handleOpenURL:(NSURL *) url delegate:(id<WXApiDelegate>) delegate; /*! @brief 检查微信是否已被用户安装 */ +(BOOL) isWXAppInstalled; /*! @brief 判断当前微信的版本是否支持OpenApi*/ +(BOOL) isWXAppSupportApi; /*! @brief 获取微信的itunes安装地址*/ +(NSString *) getWXAppInstallUrl; /*! @brief 获取当前微信SDK的版本号 */ +(NSString *) getApiVersion; /*! @brief 打开微信*/ +(BOOL) openWXApp; +(BOOL) sendReq:(BaseReq*)req; +(BOOL) sendResp:(BaseResp*)resp;
WXApiObject.h文件内容主要是app跟微信通信时,请求、回应时的信息对象。
// WXApiObject.h 文件对象 BaseReq 该类为微信终端SDK所有请求类的基类 BaseResp 该类为微信终端SDK所有响应类的基类 GetMessageFromWXReq 微信终端向第三方程序请求提供内容请求类型。 GetMessageFromWXResp 微信终端向第三方程序请求提供内容,第三方程序向微信终端返回处理结果类型。 LaunchFromWXReq 微信终端打开第三方程序请求类型 SendMessageToWXReq 第三方程序发送消息至微信终端程序的接口 SendMessageToWXResp 第三方程序发送SendMessageToWXReq至微信,微信处理完成后返回的处理结果类型。 ShowMessageFromWXReq 微信通知第三方程序,要求第三方程序显示的消息结构体。 ShowMessageFromWXResp 微信通知第三方程序,要求第三方程序显示或处理某些消息,第三方程序处理完后向微信终端发送的处理结果。 WXApi 微信Api接口函数类 <WXApiDelegate> 接收并处理来自微信终端程序的事件消息 WXAppExtendObject 多媒体消息中包含的App扩展数据对象 WXEmoticonObject 多媒体消息中包含的表情数据对象 WXFileObject 多媒体消息中包含的文件数据对象 WXImageObject 多媒体消息中包含的图片数据对象 WXMediaMessage 多媒体消息结构体 WXMusicObject 多媒体消息中包含的音乐数据对象 WXVideoObject 多媒体消息中包含的视频数据对象 WXWebpageObject 多媒体消息中包含的网页数据对象
具体参考网址:微信开放平台中的分享收藏功能,ios开发手册。
使用过程
准备过程:
1.登记并选择移动应用进行设置后,将获得AppID2.下载相关sdk文件、添加到项目中(注:如果使用XCode 4.3及以下版本,使用libWeChatSDK.a;如果使用XCode 4.5及以上版本,使用libWeChatSDK_armv7_v7s.a);
3.设置项目的URL Scheme,详见《respond to a custom URL scheme》。
代码调用:
a.向微信注册:[WXApi registerApp:@"wxd930ea5d5a258f4f" withDescription:@"demo 2.0"];
说明:
1.在做微信、微博分享时,需要先想他们官方申请AppKey,AppKey对他们来说,就相当iOS里的UDID一样,是他们唯一区分注册了的应用的key,微信或微博官方可以通过AppKey可以查询所注册的App的信息;
2.这段代码,其作用是告诉微信是这个AppKey相关联的应用发起的分享,同时它的另一个作用就相当于在系统里面注册一个地址,别的应用可以通过这个地址打开这个应用;就像微信分享成功以后回调到自己的应用,就是通过这个AppKey回调的;
b.处理微信通过URL启动App时传递的数据
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { BOOL isSuc = [WXApi handleOpenURL:url delegate:self]; NSLog(@"url %@ isSuc %d",url,isSuc == YES ? 1 : 0); return isSuc; }说明:
--[WXApi handleOpenURL:url delegate:self]; 中delegate,<WXApiDelegate>对象,用来接收微信触发的消息 ;
--这方法在app发送信息到微信,或者微信求情app,都用到,必须实现;
c.app---->微信
1.分享到会话/朋友圈/收藏
// 2. 分享到不同场景,对应SendMessageToWXReq不同场景scene WXSceneSession = 0, //回话 WXSceneTimeline = 1, //朋友圈 WXSceneFavorite = 2, //收藏
2.分享内容到微信,
对象:发送:SendMessageToWXReq + WX...Object,回复:SendMessageToWXResp
方法:发送:sendReq: 回复:onResp
// 1. 向微信分享内容对象是SendMessageToWXReq 、分享完收到回复的是对象SendMessageToWXResp // 例子.分享文本到朋友圈 - (void) sendTextContent { SendMessageToWXReq* req = [[[SendMessageToWXReq alloc] init]autorelease]; req.text = @"文本内容"; req.bText = YES; req.scene = _scene; [WXApi sendReq:req]; } // 例子 分享图片到朋友圈 WXMediaMessage *message = [WXMediaMessage message]; [message setThumbImage:[UIImage imageNamed:@"res5thumb.png"]]; WXImageObject *ext = [WXImageObject object]; 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 = [[[SendMessageToWXReq alloc] init]autorelease]; req.bText = NO; req.message = message; req.scene = _scene; [WXApi sendReq:req]; } // 分享其他类型内容,只是把WXImageObject 换成WXWebpageObject(链接)、WXMusicObject、WXVideoObject……等 // 微信回复 // 微信操作完,app收到的回复,SendMessageToWXResp对象 -(void) onResp:(BaseResp*)resp { if([resp isKindOfClass:[SendMessageToWXResp class]]) { NSString *strTitle = [NSString stringWithFormat:@"发送媒体消息结果"]; NSString *strMsg = [NSString stringWithFormat:@"errcode:%d", resp.errCode]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; [alert release]; } }d.微信---->app
在使用微信聊天的过程中我们会发现,当你通过“加号”呼出更多功能时,界面会出现更多操作导航,然而最后一个按钮并非某是个功能,而是添加操作,通过该功能你可以添加更多第三方平台工具,例如熟悉的大众点评,团购大全,爱奇艺,墨迹天气等,添加后你可以直接在微信中快速跳转(目前版本的微信没有发现这种跳转到别的app功能)
1.处理收到来自微信的请求:
方法:onReq收到微信请求,若需要回复之后调用sendResp
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (alertView.tag == 1000) { RespForWeChatViewController* controller = [[RespForWeChatViewController alloc]autorelease]; controller.delegate = self; [self.viewController presentModalViewController:controller animated:YES]; } }
if([req isKindOfClass:[GetMessageFromWXReq class]]) { // 微信请求App提供内容, 需要app提供内容后使用sendRsp返回 NSString *strTitle = [NSString stringWithFormat:@"微信请求App提供内容"]; NSString *strMsg = @"微信请求App提供内容,App要调用sendResp:GetMessageFromWXResp返回给微信"; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; alert.tag = 1000; [alert show]; [alert release]; } else if([req isKindOfClass:[ShowMessageFromWXReq class]]) { ShowMessageFromWXReq* temp = (ShowMessageFromWXReq*)req; WXMediaMessage *msg = temp.message; //显示微信传过来的内容 WXAppExtendObject *obj = msg.mediaObject; NSString *strTitle = [NSString stringWithFormat:@"微信请求App显示内容"]; NSString *strMsg = [NSString stringWithFormat:@"标题:%@ \n内容:%@ \n附带信息:%@ \n缩略图:%u bytes\n\n", msg.title, msg.description, obj.extInfo, msg.thumbData.length]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; [alert release]; } else if([req isKindOfClass:[LaunchFromWXReq class]]) { //从微信启动App NSString *strTitle = [NSString stringWithFormat:@"从微信启动"]; NSString *strMsg = @"这是从微信启动的消息"; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; [alert release]; }3.回复微信请求:
对象:请求:[b]GetMessageFromWXReq,回复:GetMessageFromWXResp + WX...Objec[/b]
方法:请求:onReq: 回复:sendResp
-(void) RespTextContent { GetMessageFromWXResp* resp = [[[GetMessageFromWXResp alloc] init] autorelease]; resp.text = @"文本内容"; resp.bText = YES; [WXApi sendResp:resp]; } - (void) RespImageContent { WXMediaMessage *message = [WXMediaMessage message]; [message setThumbImage:[UIImage imageNamed:@"res5thumb.png"]]; WXImageObject *ext = [WXImageObject object]; NSString *filePath = [[NSBundle mainBundle] pathForResource:@"res5thumb" ofType:@"png"]; ext.imageData = [NSData dataWithContentsOfFile:filePath]; message.mediaObject = ext; GetMessageFromWXResp* resp = [[[GetMessageFromWXResp alloc] init] autorelease]; resp.message = message; resp.bText = NO; [WXApi sendResp:resp]; } // 其他格式内容回复类似上文,只不过对象不同
相关文章推荐
- iOS:开放平台引用(二)--微信分享
- 开放平台:微信 for iOS
- 友盟分享——Android App接入微信开放平台注意事项
- ios应用接入微信开放平台
- iOS 集成微信开放平台 sdk 编译不过
- iOS:开放平台引用(五)--百度地图
- unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)
- iOS微信开放平台
- 微信开放平台:从网站分享到朋友圈API上手指南
- 开放平台:微信 for iOS
- Android实现微信开放平台、易信平台分享(好友及朋友圈)
- unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)
- iOS:开放平台引用(一)--应用外打开app / respond to a custom URL scheme
- 友盟分享——Android App接入微信开放平台注意事项
- ios应用接入微信开放平台
- Android微信开放平台SDK, demo调试
- ios内嵌qq分享-终端开放SDK使用文档
- Android App接入微信开放平台注意事项
- 微信开放平台开发
- Android微信开放平台SDK, demo调试