Sharesdk封装

Sharesdk封装

对于分享的使用我们经常借用第三方平台来实现,这样可以高效的更新到最新的各个平台的最新的sdk版本,方便开发者去基础使用,为了使得集成过程中使用更加的方便就将起一些方法进行封装提高开发效率

  • 创建一个 继承Nsobject 的类

.h文件

    #import <ShareSDK/ShareSDK.h>
    #import <ShareSDKConnector/ShareSDKConnector.h>
    #import <ShareSDKUI/ShareSDK+SSUI.h>
    
    //腾讯开放平台(对应QQ和QQ空间)SDK头文件
    #import <TencentOpenAPI/TencentOAuth.h>
    #import <TencentOpenAPI/QQApiInterface.h>
    //微信SDK头文件
    #import "WXApi.h"
    //新浪微博SDK头文件
    #import "WeiboSDK.h"
    //新浪微博SDK需要在项目Build Settings中的Other Linker Flags添加"-ObjC"
    //GooglePlus SDK头文件
    #import <GooglePlus/GooglePlus.h>
    //GooglePlus SDK需要在项目Build Settings中的Other Linker Flags添加"-ObjC"
    
    /*******************  相关的key  *********/
    static NSString *const ShareSDKAppkey = @"";                        // 分享ShareSDK的Appkey  1
    static NSString *const ShareRedirectUrl = @"";             // 授权回调地址
    static NSString *const SinaAppkey = @"";                               // 新浪 1
    static NSString *const SinaAppSecret = @"";     // 新浪 1
    static NSString *const WXAppID = @"";                         // 微信 1
    static NSString *const WXAppSecret = @"";       // 微信 1
    static NSString *const QQAppId = @"";                                 // QQ  1
    static NSString *const QQAppkey = @"";                          // QQ  1
    static NSString *const FacebookAppId =@"";                       // Facebook
    static NSString *const FacebookAppSecret =@"";  // Facebook
    static NSString *const TwitterAppId = @"";             //Twitter
    static NSString *const TwitterAppSecret = @""; // Twitter
    static NSString *const GoogleClientId = @"";               // Google
    
    @interface ShareUtils : NSObject
    
    /**
     *  初始化 ShareSDK
     */
    + (void)setShareSDK;
    /**
     *  分享各个参数
     *
     *  @param text   内容
     *  @param images 图片
     *  @param url    链接
     *  @param title  标题
     *  @param type   类型
     */
    + (void)ShareParamsByText:(NSString *)text images:(NSString *)images url:(NSString *)url title:(NSString *)title  type:(SSDKPlatformType)type;
    /**
     *  判断应用是否授权
     *
     *  @param type 授权平台
     *
     *  @return 是否授权 yes or no
     */
    + (BOOL)hasAuthorized:(SSDKPlatformType)type;
    
    /**
     *  获取好友信息
     *
     *  @param type     分享平台
     *  @param pageSize 分页  (注:ShareTypeTwitter从@“-1”开始计算,)
     *  @param success  请求的数量 (注:微博只返回一次请求的30%,所以请求数量一次为“68” )
     */
    - (void)getFriendsinitwithType:(SSDKPlatformType)type PageNO:(NSInteger)pageNO pageSize:(NSInteger)pageSize  andSuccess:(void (^) (NSArray *fridendArr,NSNumber *total_number))success;
    
    /**
     1:在shareSDK官网注册应用,获取相对应的key: http://www.mob.com/#/ 后下载后导入 ----- shareSDK
     2:导入相关的Frameworks  
     **** 必须添加的依赖库如下(Xcode 7 下 *.dylib库后缀名更改为*.tbd) ****
     libicucore.dylib
     libz.dylib
     libstdc++.dylib
     JavaScriptCore.framework
     ** 新浪微博SDK依赖库 **
     ImageIO.framework
     AdSupport.framework
     libsqlite3.dylib
     ** QQ好友和QQ空间SDK依赖库 && 微信SDK依赖库 **
     libsqlite3.dylib
     3:目前的新浪微博SDK || google + 需要在项目的Build Settings中的Other Linker Flags添加”-ObjC”,如果不配置有可能会崩溃
     4:点击项目工程:==》TARGETS ==>info 选项卡 在URL Types中添加QQ的AppID,其格式为:”QQ” + AppId的16进制(如果appId转换的16进制数不够8位则在前面补0,如转换的是:5FB8B52,则最终填入为:QQ05FB8B52 注意:转换后的字母要大写
     注:Google + 需要增加一行 “URL Types“ --  identifel  与 URL schemes 均填
     5:
     *
     */

.m文件

/**
*  初始化 ShareSDK
*/
+ (void)setShareSDK
{
/**
 *  设置ShareSDK的appKey,如果尚未在ShareSDK官网注册过App,请移步到http://mob.com/login 登录后台进行应用注册,
 *  在将生成的AppKey传入到此方法中。
 *  方法中的第二个第三个参数为需要连接社交平台SDK时触发,
 *  在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
 *  如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
 */
[ShareSDK registerApp:@""
      activePlatforms:@[@(SSDKPlatformTypeSinaWeibo),
                        @(SSDKPlatformSubTypeQQFriend),
                        @(SSDKPlatformSubTypeQZone),
                        @(SSDKPlatformSubTypeWechatSession),
                        @(SSDKPlatformSubTypeWechatTimeline),
                        @(SSDKPlatformTypeFacebook),
                        @(SSDKPlatformTypeGooglePlus),
                        @(SSDKPlatformTypeTwitter),
                        @(SSDKPlatformTypeQQ),
                        @(SSDKPlatformTypeSMS),
                        @(SSDKPlatformTypeCopy)]
             onImport:^(SSDKPlatformType platformType) {
                 
                 switch (platformType)
                 {
                     case SSDKPlatformTypeWechat:
                         [ShareSDKConnector connectWeChat:[WXApi class]];
                         break;
                     case SSDKPlatformTypeQQ:
                         [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
                         break;
                     case SSDKPlatformTypeSinaWeibo:
                         [ShareSDKConnector connectWeibo:[WeiboSDK class]];
                         break;
                     case SSDKPlatformTypeGooglePlus:
                         [ShareSDKConnector connectGooglePlus:[GPPSignIn class]
                                                   shareClass:[GPPShare class]];
                         break;
                         
                     default:
                         break;
                 }
                 
                 
             } onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) {
                 
                 switch (platformType)
                 {
                     case SSDKPlatformTypeSinaWeibo:
                         //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
                         [appInfo SSDKSetupSinaWeiboByAppKey:SinaAppkey
                                                   appSecret:SinaAppSecret
                                                 redirectUri:ShareRedirectUrl
                                                    authType:SSDKAuthTypeBoth];
                         break;
                     case SSDKPlatformTypeWechat:
                         [appInfo SSDKSetupWeChatByAppId:WXAppID
                                               appSecret:WXAppSecret];
                         break;
                     case SSDKPlatformTypeQQ:
                         [appInfo SSDKSetupQQByAppId:QQAppId
                                              appKey:QQAppkey
                                            authType:SSDKAuthTypeBoth];
                         break;
                     case SSDKPlatformTypeFacebook:
                         [appInfo SSDKSetupFacebookByApiKey:FacebookAppId
                                                  appSecret:FacebookAppSecret
                                                   authType:SSDKAuthTypeBoth];
                         break;
                    /// Google+ 的clientSecret,redirectUri 一定要为 “”
                     case SSDKPlatformTypeGooglePlus:
                         [appInfo SSDKSetupGooglePlusByClientID:GoogleClientId
                                                   clientSecret:@""
                                                    redirectUri:@""
                                                       authType:SSDKAuthTypeBoth];
                         break;
                         case SSDKPlatformTypeTwitter:
                         [appInfo SSDKSetupTwitterByConsumerKey:TwitterAppId
                                                 consumerSecret:TwitterAppSecret
                                                    redirectUri:SSDKAuthTypeBoth];
                         break;
                     default:
                         break;
                 }
                 
             }];
}
/**
*  分享各个参数
*
*  @param text   内容
*  @param images 图片
*  @param url    链接
*  @param title  标题
*  @param type   分享平台类型
*/
+ (void)ShareParamsByText:(NSString *)text images:(NSString *)images url:(NSString *)url title:(NSString *)title  type:(SSDKPlatformType)type
{
NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
[shareParams SSDKSetupShareParamsByText:text
                                 images:images
                                    url:[NSURL URLWithString:url]
                                  title:title
                                   type:SSDKContentTypeAuto];
    
[ShareSDK showShareActionSheet:nil
                         items:nil
                   shareParams:shareParams
           onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
               
               switch (state) {
                       case SSDKResponseStateBegin:
                       NSLog(@"正在发送");
                       
                       break;
                       case SSDKResponseStateCancel:
                       
                       NSLog(@"取消发送");
                       break;
                       case SSDKResponseStateSuccess:
                       
                       NSLog(@"发送成功");
                       break;
                   default:
                       break;
               }
           }];
}

/**
*  判断应用是否授权
*
*  @param type 授权平台
*
*  @return 是否授权 yes or no
*/
+ (BOOL)hasAuthorized:(SSDKPlatformType)type
{
return [ShareSDK hasAuthorized:type];
    
}

/**
*  获取好友信息
*
*  @param type     分享平台
*  @param pageSize 分页  (注:ShareTypeTwitter从@“-1”开始计算,)
*  @param success  请求的数量 (注:微博只返回一次请求的30%,所以请求数量一次为“68” )
*/
- (void)getFriendsinitwithType:(SSDKPlatformType)type PageNO:(NSInteger)pageNO pageSize:(NSInteger)pageSize  andSuccess:(void (^) (NSArray *fridendArr,NSNumber *total_number))success
{
[ShareSDK getFriends:type
              cursor:pageNO
                size:pageSize
      onStateChanged:^(SSDKResponseState state, SSDKFriendsPaging *paging, NSError *error) {
          
          
          
      }];
}
  1. 需要注意的是只有腾讯平台的才能分享出链接URL,微博平台需要单独进行处理
  2. 新浪微博必须bundle与开放平台的bauble设置的一致才能进行分享,同时分享图片需要申请高级接口,分享的图片链接必须是外网图片,公司内部网络图片无法进行分享使用
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348

推荐阅读更多精彩内容