独立集成QQ和微信分享的回调冲突问题

一、前言:微信和QQ的回调方法名相同

-(void) onReq:(BaseReq*)req

- (void)onResp:(QQBaseResp *)resp

所以在AppDelegate中会冲突。

二、正文:

1、原本我是这样写的:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

 if ([string hasPrefix:kWXKey]){

     return [WXApi handleOpenURL:url delegate:self];

}else if ([string hasPrefix:kQQkey"]){ 

     return [QQApiInterface handleOpenURL:url delegate:self];

}

但是,他们的回调都是相同的方法名:

1、微信回调:

/*! @brief 发送一个sendReq后,收到微信的回应  *

* 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。

* 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。

* @param resp具体的回应内容,是自动释放的

*/

-(void) onResp:(BaseResp*)resp;

2、QQ回调:

/** 处理来至QQ的请求 */

- (void)onReq:(QQBaseReq *)req;

他们在AppDelegate里名字是冲突的,所以,不能以AppDelegate为代理处理,

最后,我为微信和QQ分享,单独写一个分享Tool,并把相应的代理方法写在Tool中.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

if ([string hasPrefix:kWXKey]){

     WeixinSDKTool *wx = [[WeixinSDKTool alloc]init];

     return [WXApi handleOpenURL:url delegate:wx];

} else if ([string hasPrefix:kQQKey]){

      QQSDKTool * qq = [[QQSDKTool alloc]init];

      return [QQApiInterface handleOpenURL:url delegate:qq];

}


附:

1、微信Tool.h

#import <Foundation/Foundation.h>

#import "WXApi.h"

#import "WXApiObject.h"

@interface WeixinSDKTool : NSObject<WXApiDelegate>

typedef NS_ENUM(NSInteger, WXSceneType) {

WXSceneTypeSession  = 0,        /**< 聊天界面    */

WXSceneTypeTimeline = 1,        /**< 朋友圈      */

WXSceneTypeFavorite = 2,        /**< 收藏      */

};

+ (void) sendImageContent:(UIImage *)image scene:(WXSceneType)scene;

@end

2、QQTool.h

#import<UIKit/UIKit.h>

#import<Foundation/Foundation.h>

#import<TencentOpenAPI/QQApi.h>

#import<TencentOpenAPI/QQApiInterface.h>

@interface QQSDKTool : NSObject<QQApiInterfaceDelegate>

+ (void)shareToWeiboWithImage:(UIImage *)image title:(NSString *)title description:(NSString *)description;

@end

nice~

- 如果有什么疑问,可以在评论区一起讨论;

- 如果有什么不正确的地方,欢迎指导!

> 注:本文首发于 [iHTCboy's blog](http://ihtcboy.com),如若转载,请注明来源。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 项目使用到了一些第三方平台的登录、分享、支付功能,包括了微信、微博、QQ平台登录分享和支付宝、微信平台的支付...
    软件iOS开发阅读 3,430评论 0 1
  • 实现支付宝支付的准备工作: 1.向支付宝签约,成为支付宝的商户 签约完成后,支付宝会提供一些必要的数据给我们 商户...
    Anson杨春安阅读 12,562评论 0 6
  • iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...
    请输入账号名阅读 11,411评论 3 22
  • iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...
    羊驼先生丶阅读 4,400评论 0 0
  • 有时候我们总是担心,担心自己不够优秀,担心自己做的差,担心自己的成绩不能承受的了别人的说三道四。如果有这样感受的人...
    拿个橘子榨橙汁阅读 3,989评论 0 0