热门

Sharesdk封装

2016-04-11  本文已影响569人  zero_zql

Sharesdk封装

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

.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
上一篇下一篇

猜你喜欢

热点阅读