iOS第三方分享,ShareSDK分享失败的原因

2019-11-26 16:35 来源:未知

网址链接:

首先要去注册一个MOB官网的账号,注册地址http://www.mob.com。
注册成功后添加应用如下图所示

由于新版的简单分享很多功能都有,而且打包后体积比全版本的少了几M所以在这里用这个

图片 1

    关于分享估计很多都用的是ShareSDK的社会化分享,简单方便,支持的种类很多,但是一般的话都还是QQ,微信,新浪微博,腾讯微博为主。

1.在官网下载SDK并导入相应的framework(比起之前的少了很多库)

添加之后获取到应用的APPkey(项目内集成时需使用到)

 

图片 2图片 3

其次需要再微信开放平台注册一个应用,注册地址:https://open.weixin.qq.com。微信注册的应用需要审核周期一般在4天左右,请耐心等待。

    最近需要导入一个分享的模块,失败了几次之后最终成功,分享给大家,让大家少走一些弯路,让大家更快的搞定IOS分享的问题。

2.初始化ShareSDK(因为,一般分享的话就这几个平台,全部集成下)

图片 4

 

AppDelegate中导入头文件

审核通过后获得APPID和AppSecret(项目内集成时需使用到)

步骤如下:

//ShareSDK必要头文件
#import <ShareSDK/ShareSDK.h>
#import <ShareSDKConnector/ShareSDKConnector.h>
//腾讯开放平台(对应QQ和QQ空间)SDK头文件
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterface.h>
//微信SDK头文件
#import "WXApi.h"
//新浪微博SDK头文件
#import "WeiboSDK.h"

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);

准备工作差不多做完了,下面开始集成

  1. 先下载ShareSDK。

  2. 导入项目

  3. 导入所需要的一些库文件

  4. 去各个开放平台注册自己的APPKey,创建自己的应用。

  5. 最后到项目里配置各个平台的AppKey等等。

     

 [ShareSDK registerApp:@"iosv1101"
          activePlatforms:@[
                            @(SSDKPlatformTypeSinaWeibo),
                            @(SSDKPlatformTypeTencentWeibo),
                            @(SSDKPlatformTypeMail),
                            @(SSDKPlatformTypeSMS),
                            @(SSDKPlatformTypeCopy),
                            @(SSDKPlatformTypeFacebook),
                            @(SSDKPlatformTypeTwitter),
                            @(SSDKPlatformTypeWechat),
                            @(SSDKPlatformTypeQQ),
                            @(SSDKPlatformTypeDouBan)]
                 onImport:^(SSDKPlatformType platformType) {

                     switch (platformType)
                     {
                         case SSDKPlatformTypeWechat:
                             [ShareSDKConnector connectWeChat:[WXApi class]];
                             break;
                         case SSDKPlatformTypeQQ:
                             [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
                             break;
                         default:
                             break;
                     }

                 }
          onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) {

              switch (platformType)
              {
                  case SSDKPlatformTypeSinaWeibo:
                      //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
                      [appInfo SSDKSetupSinaWeiboByAppKey:@"568898243"
                                                appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
                                              redirectUri:@"http://www.sharesdk.cn"
                                                 authType:SSDKAuthTypeBoth];
                      break;
                  case SSDKPlatformTypeTencentWeibo:
                      //设置腾讯微博应用信息,其中authType设置为只用Web形式授权
                      [appInfo SSDKSetupTencentWeiboByAppKey:@"801307650"
                                                   appSecret:@"ae36f4ee3946e1cbb98d6965b0b2ff5c"
                                                 redirectUri:@"http://www.sharesdk.cn"];
                      break;
                  case SSDKPlatformTypeFacebook:
                      //设置Facebook应用信息,其中authType设置为只用SSO形式授权
                      [appInfo SSDKSetupFacebookByAppKey:@"107704292745179"
                                               appSecret:@"38053202e1a5fe26c80c753071f0b573"
                                                authType:SSDKAuthTypeBoth];
                      break;
                  case SSDKPlatformTypeTwitter:
                      [appInfo SSDKSetupTwitterByConsumerKey:@"LRBM0H75rWrU9gNHvlEAA2aOy"
                                              consumerSecret:@"gbeWsZvA9ELJSdoBzJ5oLKX0TU09UOwrzdGfo9Tg7DjyGuMe8G"
                                                 redirectUri:@"http://mob.com"];
                      break;
                  case SSDKPlatformTypeWechat:
                      [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
                                            appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
                      break;
                  case SSDKPlatformTypeQQ:
                      [appInfo SSDKSetupQQByAppId:@"100371282"
                                           appKey:@"aed9b0303e3ed1e27bae87c33761161d"
                                         authType:SSDKAuthTypeBoth];
                      break;
                  case SSDKPlatformTypeDouBan:
                      [appInfo SSDKSetupDouBanByApiKey:@"02e2cbe5ca06de5908a863b15e149b0b"
                                                secret:@"9f1e7b4f71304f2f"
                                           redirectUri:@"http://www.sharesdk.cn"];
                      break;
                  default:
                      break;
              }

          }];

快速集成
第一步、导入SDK至开发工程
在MOB官网的shareSDK中下载最新的SDK包:包解压后结构如下图

进入正文:

以上是ShareSDK测试用的key,自己做程序的时候需要在ShareSDK申请,各个平台的key也要在各个平台申请

图片 5

 

3.ShareSDK的使用

目录详情如下

    1.注册ShareSDK的账号,然后创建自己的应用(要用到APPKey),下载ShareSDK:,然后解压,导入自己的项目里,接着就是按照官网上的添加额外的依赖库,剩下的就是怎么把分享功能实现。

导入头文件

图片 6

 

#import <ShareSDK/ShareSDK.h>
#import <ShareSDKExtension/SSEShareHelper.h>
#import <ShareSDKUI/ShareSDK+SSUI.h>
#import <ShareSDKUI/SSUIShareActionSheetStyle.h>

#pragma mark - 菜单分享
- (void)menuShareTest {
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                     images:nil
                                        url:[NSURL URLWithString:@"http://mob.com"]
                                      title:@"分享标题"
                                       type:SSDKContentTypeImage];

    [ShareSDK showShareActionSheet:nil
                                                                items:@[
                                                                             @(SSDKPlatformTypeSinaWeibo),
                                                                             @(SSDKPlatformTypeTencentWeibo),
                                                                             @(SSDKPlatformSubTypeWechatSession),
                                                                             @(SSDKPlatformSubTypeWechatTimeline),       @(SSDKPlatformSubTypeQQFriend),
                                                                             @(SSDKPlatformSubTypeQZone),
                                                                             @(SSDKPlatformTypeWechat)]
                                                               shareParams:shareParams
                                                       onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
                                                           NSLog(@"-0-");
                                                       }];
    //删除和添加
//    [sheet.directSharePlatforms removeObject:@(SSDKPlatformTypeWechat)];
//    [sheet.directSharePlatforms addObject:@(SSDKPlatformTypeSinaWeibo)];
}

#pragma mark - 单个分享
- (void)onlyShareTest {
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                         images:nil
                                            url:[NSURL URLWithString:@"http://mob.com"]
                                          title:@"分享标题"
                                           type:SSDKContentTypeImage];
    [ShareSDK share:SSDKPlatformTypeSinaWeibo parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
        switch (state) {
            case SSDKResponseStateSuccess:
            {
                UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"
                                                                    message:nil
                                                                   delegate:nil
                                                          cancelButtonTitle:@"确定"
                                                          otherButtonTitles:nil];
                [alertView show];
                break;
            }
            case SSDKResponseStateFail:
            {
                UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享失败"
                                                                    message:[NSString stringWithFormat:@"%@", error]
                                                                   delegate:nil
                                                          cancelButtonTitle:@"确定"
                                                          otherButtonTitles:nil];
                [alertView show];
                break;
            }
            case SSDKResponseStateCancel:
            {
                UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享已取消"
                                                                    message:nil
                                                                   delegate:nil
                                                          cancelButtonTitle:@"确定"
                                                          otherButtonTitles:nil];
                [alertView show];
                break;
            }
            default:
                break;
        }
    }];
}


#pragma mark - 一键分享

- (void)onceShareTest {

    //构造分享参数
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    [shareParams SSDKSetupShareParamsByText:@"我在使用ShareSDK的一键分享。"
                                         images:nil
                                            url:nil
                                          title:nil
                                           type:SSDKContentTypeImage];

    [SSEShareHelper oneKeyShare:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeTencentWeibo)] parameters:nil onStateChanged:^(SSDKPlatformType platformType, SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
        NSString *platformName = nil;
        switch (platformType)
        {
            case SSDKPlatformTypeSinaWeibo:
                platformName = @"新浪微博";
                break;
            case SSDKPlatformTypeTencentWeibo:
                platformName = @"腾讯微博";
                break;
            default:
                break;
        }
    }];
}

#pragma mark - 第三方登录(信息获取)

- (void)threeShareTest {
    [ShareSDK getUserInfo:SSDKPlatformTypeSinaWeibo onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) {
        NSLog(@"平台类型根据枚举查看:%ld",(unsigned long)user.platformType);
        NSLog(@"授权就不为空:%@",user.credential);
        NSLog(@"uid:%@",user.uid);
        NSLog(@"昵称:%@",user.nickname);
        NSLog(@"图片地址:%@",user.icon);
        NSLog(@"性别:%ld",(unsigned long)user.gender);
    }];
}

#pragma mark - 其他
- (void)other {
    //判断是否授权
    [ShareSDK hasAuthorized:SSDKPlatformTypeSinaWeibo];
}

取需要的文件导入工程即可

    2.注册各个平台的AppKey

 

导入文件至工程内时请务必在上述步骤中选择“Create groups for any added folders”单选按钮组。如果你选择“Create folder references for any added folders”,一个蓝色的文件夹引用将被添加到项目并且将无法找到它的资源。正确操作见下图

 

图片 7

    首先要注册账号,再接着创建应用,找到对应的AppKey即可。下面是比较常用的三个平台的链接。

第二步、导入依赖库
依图指示添加所需依赖库

 

图片 8

QQ:

所需添加依赖库如下

微信:

必须添加的依赖库如下(Xcode 7 之后 .dylib库后缀名更改为.tbd):

新浪微博:

libicucore.dylib
libz.dylib
libstdc++.dylib
JavaScriptCore.framework    

 

以下依赖库根据社交平台添加
新浪微博SDK依赖库

    3.在代码里注册ShareSDK还有各个平台。

ImageIO.framework      
libsqlite3.dylib

    首先要导入头文件

QQ好友和QQ空间SDK依赖库

#import <ShareSDK/ShareSDK.h>
#import <ShareSDKConnector/ShareSDKConnector.h>
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
#import "WXApi.h"
#import "WeiboSDK.h"
libsqlite3.dylib

    接着只要在下面的这个方法里加入这段代码就可以了

微信SDK依赖库

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ;这个方法里加入这段代码就可以(AppKey需要填写自己的新浪微博还有回调地址都要一样)。
libsqlite3.dylib

    

短信和邮件需要依赖库

    代码如下:

MessageUI.framework
[ShareSDK registerApp:@"你注册的ShareSDKAppKey" activePlatforms:
                            //分享的平台,这里只有新浪微博,QQ,微信
                            @[
                            @(SSDKPlatformTypeSinaWeibo),
                            @(SSDKPlatformTypeWechat),
                            @(SSDKPlatformTypeQQ)
                            ]
                 onImport:^(SSDKPlatformType platformType)
                {
                     switch (platformType)
                     {
                         //同样这里和上面一一对应
                         case SSDKPlatformTypeSinaWeibo:
                             [ShareSDKConnector connectWeibo:[WeiboSDK class]];
                             break;
                         case SSDKPlatformTypeWechat:
                             [ShareSDKConnector connectWeChat:[WXApi class]];
                             break;
                         case SSDKPlatformTypeQQ:
                             [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
                             break;
                         default:
                             break;
                     }
                 }
                onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo)
                {
                    switch (platformType)
                    {
                        //这里也是一样和上面一一对应
                        case SSDKPlatformTypeSinaWeibo:
                         //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
                            [appInfo SSDKSetupSinaWeiboByAppKey:@"新浪微博的AppKey" appSecret:@"新浪微博的Secret" redirectUri:@"回调地址" authType:SSDKAuthTypeBoth];
                            break;
                        case SSDKPlatformTypeWechat:
                         //设置微信应用信息
                         [appInfo SSDKSetupWeChatByAppId:@"微信的AppId" appSecret:@"微信的Secret"];
                            break;
                        case SSDKPlatformTypeQQ:
                         //设置QQ应用信息,其中authType设置为只用SSO形式授权
                        [appInfo SSDKSetupQQByAppId:@"QQ的AppId" appKey:@"QQ的AppKey" authType:SSDKAuthTypeSSO];
                            break;
                        default:
                            break;
                    }
                }
     ];

*第三步、设置ShareSDK的Appkey并初始化对应的第三方社交平台 打开AppDelegate.m(代表你的工程名字)导入头文件*

 

TAG标签:
版权声明:本文由金沙澳门官网4166发布于世界史,转载请注明出处:iOS第三方分享,ShareSDK分享失败的原因