一、前言:微信和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),如若轉載,請注明來源。