美文网首页iOS开发你需要知道的
iOS集成QQ分享,包括QQ好友和QQ动态

iOS集成QQ分享,包括QQ好友和QQ动态

作者: 最强的小强 | 来源:发表于2020-04-14 17:11 被阅读0次
一、导入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];
}

相关文章

网友评论

    本文标题:iOS集成QQ分享,包括QQ好友和QQ动态

    本文链接:https://www.haomeiwen.com/subject/htptvhtx.html