一、导入QQ分享工具类
pod TencentOpenAPI
二、写QQ分享的工具类
- QQ好友和动态
// QQShareManager.h
#import <Foundation/Foundation.h>
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/QQApiInterfaceObject.h>
@interface QQShareManager : NSObject
//QQShareManager 是腾讯QQ和分享管理类
+ (id)shareInstance;
+ (BOOL)handleOpenQQURL:(NSURL *)url;
+ (void)handleQQShareWith:(QQBaseReq *)req; // QQ好友
+ (void)handleQQZoneShareWith:(QQBaseReq *)req; // 动态
@end
- QQShareManager.m
#import "QQShareManager.h"
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/QQApiInterfaceObject.h>
@interface QQShareManager()<QQApiInterfaceDelegate>
@end
@implementation QQShareManager
+ (id)shareInstance {
static QQShareManager *qqShareInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
qqShareInstance = [[QQShareManager alloc] init];
});
return qqShareInstance;
}
+ (BOOL)handleOpenQQURL:(NSURL *)url {
return [QQApiInterface handleOpenURL:url delegate:[QQShareManager shareInstance]];
}
+ (void)handleQQShareWith:(QQBaseReq *)req {
[QQApiInterface sendReq:req];
}
+ (void)handleQQZoneShareWith:(QQBaseReq *)req {
[QQApiInterface SendReqToQZone:req];
}
#pragma mark - QQ分享回调
- (void)onResp:(QQBaseResp *)resp {
if ([resp isKindOfClass:[SendMessageToQQResp class]]) {
SendMessageToQQResp *response = (SendMessageToQQResp *)resp;;
if ([response.result isEqualToString:@"0"]) {
[[NSNotificationCenter defaultCenter] postNotificationName:UserNotificationWechatShareSuccess
object:nil
userInfo:nil];
} else {
[[NSNotificationCenter defaultCenter] postNotificationName:UserNotificationWechatShareCancle
object:nil
userInfo:nil];
}
}
}
- (void)isOnlineResponse:(NSDictionary *)response {
//
}
- (void)onReq:(QQBaseReq *)req {
//
}
三、分享处理回调
#pragma mark --- 三方登录 三方分享调起 ----
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
// QQ登录
if ([TencentOAuth CanHandleOpenURL:url]) {
[TencentOAuth HandleOpenURL:url];
}
if ([options[@"UIApplicationOpenURLOptionsSourceApplicationKey"] isEqualToString:@"com.tencent.xin"]) {
[WXApi handleOpenURL:url delegate:self];
}
// 微信登录
if ([url.host isEqualToString:@"oauth"] && [url.scheme isEqualToString:WeChatAppKey]) {
[WXApi handleOpenURL:url delegate:self];
}
// 微信分享
if ([url.host isEqualToString:@"platformId=wechat"] && [url.scheme isEqualToString:WeChatAppKey]) {
[WeChatShareManager handleOpenWeChatURL:url];
}
// QQ分享
if ([url.host isEqualToString:@"response_from_qq"]) {
[QQShareManager handleOpenQQURL:url];
}
return YES;
}
四、工具类的调用
// 分享内容到QQ
- (void)shareToQQ {
NSString *utf8String = self.shareURL;
NSString *title = self.shareTitle;
NSString *description = self.shareDetails;
NSData *previewImageData = UIImageJPEGRepresentation([UIImage imageNamed:@"share_icon"],1);
QQApiNewsObject *newsObj = [QQApiNewsObject
objectWithURL:[NSURL URLWithString:utf8String]
title:title
description:description
previewImageData:previewImageData];
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:newsObj];
//将内容分享到qq
[QQShareManager handleQQShareWith:req];
}
// 分享内容到QQ空间
- (void)shareToQQ {
NSString *utf8String = self.shareURL;
NSString *title = self.shareTitle;
NSString *description = self.shareDetails;
NSData *previewImageData = UIImageJPEGRepresentation([UIImage imageNamed:@"share_icon"],1);
QQApiNewsObject *newsObj = [QQApiNewsObject
objectWithURL:[NSURL URLWithString:utf8String]
title:title
description:description
previewImageData:previewImageData];
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:newsObj];
//将内容分享到qzone
[QQShareManager handleQQZoneShareWith:req];
}
网友评论