由于公司的项目需要,在软件中集成了QQ、微信、新浪的SDK,以实现第三方登陆以及分享。(并未使用ShareSDK或者友盟)因此,在自己集成的时候也有遇到了各种问题,其中印象最深刻的是无法执行QQ的回调方法。
集成的过程官网都有详细的开发文档,此处就直接省略了。
下面直接上代码:
在Appdalagate.m中
pragma mark - 第三方分享以及登录回调
-(BOOL)application:(UIApplication )application openURL:(NSURL )url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// 获取分享时所在的viewController
id _self = [[AppManager share ] VC ] ;
if ( YES == [ TencentOAuth CanHandleOpenURL: url ] ) {
return [ TencentOAuth HandleOpenURL : url ] || [ WXApi handleOpenURL:url delegate : _self ] || [ WeiboSDK handleOpenURL:url delegate: _self ] ;
}
return [ TencentOAuth HandleOpenURL : url ] || [ WXApi handleOpenURL:url delegate : _self ] || [ WeiboSDK handleOpenURL:url delegate: _self ] || [ QQApiInterface handleOpenURL:url delegate: _self ] ;
}
-(BOOL)application:(UIApplication )application handleOpenURL:(NSURL )url
{
// 获取分享时所在的viewController
id _self = [[AppManager share ] VC ] ;
if ( YES == [ TencentOAuth CanHandleOpenURL: url ] ) {
return [ TencentOAuth HandleOpenURL : url ] || [ WXApi handleOpenURL:url delegate : _self ] || [ WeiboSDK handleOpenURL:url delegate: _self ] ;
}
return [ WXApi handleOpenURL:url delegate : _self ] || [ WeiboSDK handleOpenURL:url delegate: _self ] || [ QQApiInterface handleOpenURL:url delegate: _self ] ;
}
在对应的viewController.m中实现其回调方法:
pragma mark — The WeiXin & QQ Delegate
-(void)onResp:(BaseResp *)resp
{
// 此处需要注意的是QQ和微信回调的都是同一个方法,需要根据resp的Class类型来做相应的处理
if ([resp isKindOfClass: [ SendMessageToQQResp class ]] ) {
SendMessageToQQResp* sendResp = (SendMessageToQQResp*)resp;
switch ([sendResp.result intValue])
{
case 0:
{
[ JDStatusBarNotification showWithStatus : @"分享成功" dismissAfter : 1.5 ];
break;
}
default:
{
[ JDStatusBarNotification showWithStatus : @"分享失败" dismissAfter : 1.5 ];
break;
}
}
}else{
SendAuthResp *aresp = (SendAuthResp *)resp;
if (aresp.errCode == 0) {
[ JDStatusBarNotification showWithStatus : @"分享成功" dismissAfter : 1.5 ];
}else{
[ JDStatusBarNotification showWithStatus : @"分享失败" dismissAfter : 1.5 ];
}
}
}
如有不正确的地方,欢迎大家指出更正。