一、前言:微信和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),如若转载,请注明来源。