ShareSDK iOS SDK 集成指南

开发工具:Xcode
集成方式:手动导入SDK或者Pod集成
SDK版本支持:SDK支持Xcode 9.1.0, iOS8.0+及以上版本

集成前准备

注册账号

使用ShareSDK之前,需要先在MobTech官网注册开发者账号,并获取AppKey和AppSecret,详情可以点击查看创建应用流程

分享到第三方平台,需要现在对应第三方平台申请平台的AppKey,详情可以点击查看注册应用流程

ShareSDK流程图

ShareSDK iOS SDK 集成指南_第1张图片

ShareSDK集成

手动集成

获取ShareSDK

在 MobService下载中心 下载最新版本SDK

选中ShareSDK,选择需要的平台,然后点击“保存配置”:

ShareSDK iOS SDK 集成指南_第2张图片

ShareSDK iOS SDK 集成指南_第3张图片

温馨提示: 各平台的右边有个问号,将鼠标放置上去会弹出该平台的简单说明

选中所需要的平台后,点击“下载”按钮,就会下载好SDK

ShareSDK iOS SDK 集成指南_第4张图片

下载下来的SDK结构

SDK目录结构说明

SDK:
   Required:
      MOBFoundation.framework (基础工具库)
   ShareSDK:
      ShareSDK.framework (主业务实现)
      Support:
          Required:
              ShareSDK.bundle (ShareSDK资源文件)
              ShareSDKConnector.framework(v4.2.0版本后已废弃)
              PlatformConnector: 
                  ... (各个平台独立逻辑依赖库,只需要集成需要的平台即可)
              PlatformSDK:
                  ... (各个平台的SDK文件,不集成默认走去SDK业务逻辑,目前支持大部分主流
                  平台,如QQ 微博 微信等)
              Optional:(可选)
                  ShareSDKUI.bundle (分享UI的资源文件)
                  ShareSDKUI.framework (分享UI库)
                  ShareSDKConfigFile.framework(xml配置文件形式分享依赖库)
                  ShareSDKConfigFile.bundle (xml配置文件形式分享资源文件)
                  ShareSDKExtension.framework(功能的扩展框架插件。(第三方平台检测、 
                  一键分享、截屏分享、摇一摇分享等相关功能)
                  ShareSDKLink.framework(闭环分享库)

注意:导入的时候,需要将整个SDK资源文件导入到项目里

手动导入SDK

将上面获取到的SDK,直接将整个SDK资源文件拖进项目里,如下图:

ShareSDK iOS SDK 集成指南_第5张图片

并且勾选以下3个选项

ShareSDK iOS SDK 集成指南_第6张图片

在点击Finish,完成导入。

添加依赖库

ShareSDK iOS SDK 集成指南_第7张图片

ShareSDK iOS SDK 集成指南_第8张图片

点击“+”号,并在弹框里输入以下依赖库,进行添加

必要依赖库:

  • libc++.tbd
  • libz.tbd
  • libsqlite3.tbd

社交平台依赖库(根据自己需求添加):

苹果登录依赖库:

  • AuthenticationServices.framework

Facebook依赖库:

  • AuthenticationServices.framework
  • SafariServices.framework
  • Accelerate.framework

新浪微博

  • ImageIO.framework
  • Photos.framework

Instagram

  • AssetsLibrary.framework
  • Photos.framework

美拍

  • AssetsLibrary.framework

Xcode配置

(1)在项目的Build Settings中的Other Linker Flags双击添加”-ObjC” ,注意大小写

ShareSDK iOS SDK 集成指南_第9张图片

CocoaPods集成

请参考 Pod集成

配置MobTech的appkey和serect

配置ShareSDK的AppKey和AppSecret,键分别为 MOBAppKey 和 MOBAppSecret ,值为之前在MobTech官网开发者后台申请的appkey和appSecret(注意: 配置之后保存好,配置好后看项目的Info选项里有没)

ShareSDK iOS SDK 集成指南_第10张图片

API接口

回传用户隐私授权结果(uploadPrivacyPermissionStatus)

为保证您的App在集成MobSDK之后能够满足工信部相关合规要求,您应确保App安装首次冷启动且取得用户阅读您《隐私政策》授权之后,调用Mob提交到的隐私协议回传函数uploadPrivacyPermissionStatus回传隐私协议授权结果。

反之,如果用户不同意您App《隐私政策》授权,则不能调用uploadPrivacyPermissionStatus回传隐私协议授权结果。

相关隐私声明请参考链接合规指南

/**
 上传隐私协议授权状态
 @param isAgree 是否同意(用户授权后的结果)
 @param OnResult 执行回调结果,可为nil (注意业务逻辑不要依赖于这个success结果,建议业务逻辑在调用这个接口之后来写)
 */
+ (void)uploadPrivacyPermissionStatus:(BOOL)isAgree
                                                 onResult:(void (^_Nullable)(BOOL success))handler;

示例代码

调用位置开发者可以自己指定,只需在使用SDK功能之前调用即可。

ocswift
#import 
[MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {
}];

导入头文件并进行第三方平台初始化(registPlatforms)

通常都是启动的时候在 application:didFinishLaunchingWithOptions:中添加初始化方法,也可保证注册在ShareSDK的业务执行之前即可。 这里提供几个主平台的初始化,其他平台可以参考demo里的MOBShareSDKHelper.m文件调用 点击这里

/**
 ShareSDK 平台注册方法

 @param importHandler 用于设置各平台注册信息,也可在mob管理后台进行注册
 */
+ (void)registPlatforms:(void(^)(SSDKRegister *platformsRegister))importHandler;

示例代码

ocswift
#import 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
         [ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {
                           //QQ
                           [platformsRegister setupQQWithAppId:@"100371282" appkey:@"aed9b0303e3ed1e27bae87c33761161d" enableUniversalLink:YES universalLink:@"https://70imc.share2dlink.com/qq_conn/100371282"];


                            //更新到4.3.3或者以上版本,微信初始化需要使用以下初始化
                           [platformsRegister setupWeChatWithAppId:@"wx617c77c82218ea2c" appSecret:@"c7253e5289986cf4c4c74d1ccc185fb1" universalLink:@"https://70imc.share2dlink.com/"];


                           //新浪
                           [platformsRegister setupSinaWeiboWithAppkey:@"568898243" appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3" redirectUrl: @"http://www.sharesdk.cn" universalLink:@"https://70imc.share2dlink.com/"];

        }];
          return YES;
}

分享(showShareActionSheet)

在项目需要分享的按钮事件里加以下接口:

注意:根据自己的需求调用接口

弹出菜单分享

/**
 *  设置分享参数
 *
 *  @param text     文本
 *  @param images   图片集合,传入参数可以为单张图片信息,也可以为一个NSArray,数组元素可以为UIImage、NSString(图片路径)、NSURL(图片路径)、SSDKImage。如: @"http://www.mob.com/images/logo_black.png" 或 @[@"http://www.mob.com/images/logo_black.png"]
 *  @param url      网页路径/应用路径
 *  @param title    标题
 *  @param type     分享类型
 */
- (void)SSDKSetupShareParamsByText:(NSString *)text
                                                   images:(id)images
                                                           url:(NSURL *)url
                                                         title:(NSString *)title
                                                        type:(SSDKContentType)type;
/**
 显示分享菜单

 @param view 要显示菜单的视图, iPad版中此参数作为弹出菜单的参照视图
 @param items  菜单项,如果传入nil,则显示已集成的平台列表
 @param shareParams 分享内容参数
 @param configuration 分享菜单的设置
 @param stateChangedHandler 分享状态变更事件
 @return 分享菜单控制器
 */
+ (id)showShareActionSheet:(UIView *)view
                        customItems:(NSArray *)items
                        shareParams:(NSMutableDictionary *)shareParams
               sheetConfiguration:(SSUIShareSheetConfiguration *)configuration
                   onStateChanged:(SSUIShareStateChangedHandler)stateChangedHandler;

示例代码

ocswift
#import 
#import 

NSMutableDictionary * params = [NSMutableDictionary dictionary];
[params SSDKSetupShareParamsByText:@"test" 
                                                      images:@"http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png"
                                                              url:[NSURL URLWithString:@"http://www.mob.com/"] 
                                                            title:@"title" 
                                                           type:SSDKContentTypeAuto];

[ShareSDK showShareActionSheet:nil //(第一个参数要显示菜单的视图, iPad版中此参数作为弹出菜单的参照视图,在ipad中要想弹出我们的分享菜单,这个参数必须要传值,可以传自己分享按钮的对象,或者可以创建一个小的view对象去传,传值与否不影响iphone显示)   
                                   customItems:nil
                                   shareParams:params
                          sheetConfiguration:nil
                             onStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType,NSDictionary *userData,SSDKContentEntity *contentEntity,NSError *error,BOOL end)
         {
switch (state) {
             case SSDKResponseStateSuccess:
                     NSLog(@"成功");//成功
                     break;
             case SSDKResponseStateFail:
                {
                     NSLog(@"--%@",error.description);//失败
                     break;
                }
             case SSDKResponseStateCancel:
             break;
             default:
             break;
         }
}];

直接分享

/**
 分享内容

 @param platformType 平台类型
 @param parameters 分享参数
 @param stateChangedHandler 状态变更回调处理
 @return 会话
 */
+ (SSDKSession *)share:(SSDKPlatformType)platformType
                    parameters:(NSMutableDictionary *)parameters
           onStateChanged:(SSDKShareStateChangedHandler)stateChangedHandler;

示例代码

ocswift
#import 
NSMutableDictionary *params = [NSMutableDictionary dictionary];

[params SSDKSetupShareParamsByText:@"test" 
                                                      images:[UIImage imageNamed:@"shareImg.png"] 
                                                              url:[NSURL URLWithString:@"http://www.mob.com/"] 
                                                            title:@"title" 
                                                           type:SSDKContentTypeAuto];

[ShareSDK  share:SSDKPlatformTypeWechat 
          parameters:params 
 onStateChanged:^(SSDKResponseState state, NSDictionary *userData, 
SSDKContentEntity *contentEntity, NSError *error) {  
        switch (state) {
            case SSDKResponseStateSuccess:
                     NSLog(@"成功");//成功
                     break;
            case SSDKResponseStateFail:
               {
                      NSLog(@"--%@",error.description);
                      //失败
                      break;
                }
            case SSDKResponseStateCancel:
                      //取消
                      break;

            default:
                break;
        }
}];

登录(authorize)

每次都会向第三方平台请求授权

/**
 授权

 @param platformType 平台类型
 @param settings 授权设置,接受scopes属性设置,如新浪微博关注官方微博:@{@"scopes" : @[@"follow_app_official_microblog"]},类似“follow_app_official_microblog”这些字段是各个社交平台提供的。QQ平台如设置二维码授权,添加字段为QQAuthType:@{@"QQAuthType":@1}, 0为网页账号密码登录授权
 @param stateChangedHandler 授权状态变更回调处理
 @return 会话id
 */
+ (SSDKSession *)authorize:(SSDKPlatformType)platformType
                                settings:(NSDictionary *)settings
                  onStateChanged:(SSDKAuthorizeStateChangedHandler)stateChangedHandler;

示例代码

ocswift
#import 

[ShareSDK authorize:SSDKPlatformTypeWechat 
                     settings:nil 
           onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) {   
           switch (state) {
                    case SSDKResponseStateSuccess:
                             NSLog(@"%@",[user.credential rawData]);
                    break;
                    case SSDKResponseStateFail:
                          {
                             NSLog(@"--%@",error.description);
                             //失败
                             break;
                           }
                    case SSDKResponseStateCancel:
                             //用户取消授权
                             break;

                    default:
                    break;
        }
}];

第三方平台的相关配置

配置URL Scheme

打开项目的Info选项,然后选择URL Types,添加对应平台的URL Scheme配置,如下图:

ShareSDK iOS SDK 集成指南_第11张图片

以下是主要平台URL Scheme配置参考,需要看其他的平台请参考全平台配置说明

平台 配置URL Scheme 格式 举例 备注
新浪微博 wb+微博初始化的appKey 如AppKey:568898243 最后配置:wb568898243
QQ/Qzone tencent+appID ,QQ+APPID的十六进制 如appID:100371282 最后配置:tencent100371282,QQ05FB8B52 注意appid十进制转十六进制,可以在[这里] 转换,如果appId转换的16进制数不够8位则在前面补0,如转换的是:5FB8B52,则最终填入为:QQ05FB8B52 注意:转换后的字母要大写
微信 微信的appid 如appID:wx617c77c82218ea2c,最后配置:wx617c77c82218ea2c
Facebook fb+在facebook注册得到的ApiKey 如ApiKey:107704292745179 最后配置:fb107704292745179
Twitter twitterkit-在twitter注册得到的ConsumerKey 如ConsumerKey:viOnkeLpHBKs6KXV7MPpeGyzE 最后配置:twitterkit-viOnkeLpHBKs6KXV7MPpeGyzE

配置白名单

1.在项目的info.plist中添加LSApplicationQueriesSchemes,类型为Array

2.然后给它添加一个需要支持的项目,类型为字符串类型:

ShareSDK iOS SDK 集成指南_第12张图片

以下是主要平台白名单配置参考,需要看其他的平台请参考 白名单全平台配置说明

平台名称 OpenURL白名单说明
新浪微博 sinaweibo
sinaweibohd
sinaweibosso
sinaweibohdsso
weibosdk
weibosdk2.5
weibosdk3.3
微信 wechat
weixin
weixinULAPI
QQ mqqOpensdkSSoLogin
mqqopensdkapiV2
mqqopensdkapiV3
wtloginmqq2
mqq
mqqapi
timapi
mqqopensdkminiapp
mqqopensdknopasteboard
mqqopensdkapiV4
QZONE mqzoneopensdk
mqzoneopensdkapi
mqzoneopensdkapi19
mqzoneopensdkapiV2
mqqOpensdkSSoLogin
mqqopensdkapiV2
mqqopensdkapiV3
wtloginmqq2
mqqapi
mqqwpa
mqzone
mqq
mqqopensdkapiV4[注:若同时使用QQ和QZONE,则直接添加本格即可]
Facebook fbauth2
fbauth
fbapi20130214
fbapi
fbshareextension
fbapi20160328
fbapi20150629
Twitter twitterauth

配置ATS

微博平台还需要加上ATS配置:

1.在项目的info.plist中添加 App Transport Security Settings,类型为字典类型

2.给它添加一个Key:Allow Arbitrary Loads,类型为Boolean类型,值为YES;

ShareSDK iOS SDK 集成指南_第13张图片

Twitter 添加V2接口配置

twitter 需要在infoplist加入V2配置,配置MOBTwitterVer

新浪微博,微信,QQ,Line特殊配置

新浪微博,微信,QQ,line平台在iOS13上需要校验Universal Link,之前在微信,QQ,新浪微博,line上注册应用需要在配置上Universal Link,另外项目里也要配置上,可以根据我们后台生成的Universal Link去配置:

ShareSDK iOS SDK 集成指南_第14张图片

注意: Team id,Bundle id这些必须要填写的和自己项目里使用的证书的Team id和Bundle id一致,QQ AppID是填写qq初始化的appid,如果需要QQ平台,那么需要填写上,把信息都填写之后保存了才可以使用我们生成的Univesal link

在项目里配置,如下图:

ShareSDK iOS SDK 集成指南_第15张图片

点击Capability,选择Associated Domains,并双击添加,如下图:

ShareSDK iOS SDK 集成指南_第16张图片

填写上Universal Link配置,填写的格式是applinks:xxxx

ShareSDK iOS SDK 集成指南_第17张图片

至此基本的集成流程完成了,可以测试看效果啦!

注意:这个Universal Link也可以自己生成,可以参考这个 苹果官方文档,但是为了方便用户,节省用户的时间和精力,建议直接拷贝我们生成的配置。

你可能感兴趣的:(xcode,ui,macos)