ShareSDK

1. 下载SDK--导入到项目中--在选择分享平台的时候,有些不用的就不选,尽量减少文件--http://www.mob.com/#/index

2. 添加相关库等,里面有文档,根据文档走。之后编译,一般有这个错误:

导入MessageUI框架即可,因为有些东西是基于MessageUI的。

在Build Settings -->Other linker flags中加入-ObjC标示

3. 下载的SDK中有个Demo,打开看下应该就明白了。

Demo里有个getUserInfo方法,是获取第三方登陆信息的,可以直接拿去用,下面以新浪微博为例,要包含头文件

#import <ShareSDK/ShareSDK.h>

首先在AppDelegate中的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中  注册SDK

//1.初始化ShareSDK应用,字符串"5559f92aa230"换成http://www.mob.com/后台申请的ShareSDK应用的Appkey
    [ShareSDK registerApp:@"5559f92aa230"];
    
    /**
     连接新浪微博开放平台应用以使用相关功能,此应用需要引用SinaWeiboConnection.framework
     http://open.weibo.com上注册新浪微博开放平台应用,并将相关信息填写到以下字段
     **/
    [ShareSDK connectSinaWeiboWithAppKey:@"568898243"
                               appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
                             redirectUri:@"http://www.sharesdk.cn"
                             weiboSDKCls:[WeiboSDK class]];

    //添加QQ应用  注册网址   http://mobile.qq.com/api/
    [ShareSDK connectQQWithQZoneAppKey:@"100371282"
                     qqApiInterfaceCls:[QQApiInterface class]
                       tencentOAuthCls:[TencentOAuth class]];
    
    //微信登陆的时候需要初始化
    [ShareSDK connectWeChatWithAppId:@"wx4868b35061f87885"
                           appSecret:@"64020361b8ec4c99936c0e3999a9f249"
                           wechatCls:[WXApi class]];

在info中添加微博APPKEY

然后再需要分享的地方获取第三方信息

//uid:3250903614 --nickname:编程小虾米---tooken:2.00QX9AYD0H7CVce083bbb34fhdGyDD
- (IBAction)weiboLogin:(UIButton *)sender {
    [ShareSDK getUserInfoWithType:ShareTypeSinaWeibo
                      authOptions:nil
                           result:^(BOOL result, id<ISSPlatformUser> userInfo, id<ICMErrorInfo> error) {
                               
                               if (result)
                               {
                                   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" message:[NSString stringWithFormat:@"uid:%@ --nickname:%@---tooken:%@",[userInfo uid],[userInfo nickname],[[userInfo credential] token]]
                                                                                  delegate:self
                                                                         cancelButtonTitle:@"OK"
                                                                         otherButtonTitles:nil, nil];
                                   [alert show];
                                   
                                   [_userDict setValue:[userInfo uid] forKey:@"wbUid"];
                                   [_userDict setValue:[userInfo nickname] forKey:@"wbName"];
                                   [_userDict setValue:[[userInfo credential] token] forKey:@"wbToken"];

                                   [self saveUserMsg];  //我自己存储信息的  请无视  
NSLog(@"uid:%@ --nickname:%@---tooken:%@",[userInfo uid],[userInfo nickname],[[userInfo credential] token]); } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failed" message:[NSString stringWithFormat:@"error code: %zi,error description: %@",[error errorCode],[error errorDescription]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; } }]; }

最后就可以实现分享功能了

- (IBAction)share:(UIButton *)sender {
    //1、构造分享内容
    //1.1、要分享的图片(以下分别是网络图片和本地图片的生成方式的示例)
    id<ISSCAttachment> remoteAttachment = [ShareSDKCoreService attachmentWithUrl:@"http://f.hiphotos.bdimg.com/album/w%3D2048/sign=df8f1fe50dd79123e0e09374990c5882/cf1b9d16fdfaaf51e6d1ce528d5494eef01f7a28.jpg"];
    //        id<ISSCAttachment> localAttachment = [ShareSDKCoreService attachmentWithPath:[[NSBundle mainBundle] pathForResource:@"shareImg" ofType:@"png"]];

    //1.2、以下参数分别对应:内容、默认内容、图片、标题、链接、描述、分享类型
    id<ISSContent> publishContent = [ShareSDK content:@"给个面子看看吧"
                                       defaultContent:nil
                                                image:remoteAttachment
                                                title:[self.mesageArr[sender.tag] title]
                                                  url:[self.mesageArr[sender.tag] imagesArr][0]
                                          description:[self.mesageArr[sender.tag] dscription]
                                            mediaType:SSPublishContentMediaTypeNews];
    
    //1+、创建弹出菜单容器(iPad应用必要,iPhone应用非必要)
    id<ISSContainer> container = [ShareSDK container];
    [container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp];
    
    //2、展现分享菜单
    [ShareSDK showShareActionSheet:container
                         shareList:nil
                           content:publishContent
                     statusBarTips:NO
                       authOptions:nil
                      shareOptions:nil
                            result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
                                
                                NSLog(@"=== response state :%zi ",state);
                                
                                //可以根据回调提示用户。
                                if (state == SSResponseStateSuccess)
                                {
                                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success"
                                                                                    message:nil
                                                                                   delegate:self
                                                                          cancelButtonTitle:@"OK"
                                                                          otherButtonTitles:nil, nil];
                                    [alert show];
                                }
                                else if (state == SSResponseStateFail)
                                {
                                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failed"
                                                                                    message:[NSString stringWithFormat:@"Error Description:%@",[error errorDescription]]
                                                                                   delegate:self
                                                                          cancelButtonTitle:@"OK"
                                                                          otherButtonTitles:nil, nil];
                                    [alert show];
                                }
                            }];
}
原文地址:https://www.cnblogs.com/10-19-92/p/4963366.html