关于android:ShareSDK-iOS-SDK-集成指南

32次阅读

共计 10324 个字符,预计需要花费 26 分钟才能阅读完成。

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

集成前筹备

注册账号

应用 ShareSDK 之前,须要先在 MobTech 官网注册开发者账号,并获取 AppKey 和 AppSecret,详情能够点击 查看创立利用流程

分享到第三方平台,须要当初对应第三方平台申请平台的 AppKey,详情能够点击 查看注册利用流程

ShareSDK 流程图

ShareSDK 集成

手动集成

获取 ShareSDK

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

选中 ShareSDK,抉择须要的平台,而后点击“保留配置”:

舒适提醒: 各平台的左边有个问号,将鼠标搁置下来会弹出该平台的简略阐明

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

下载下来的 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 资源文件拖进我的项目里,如下图:

并且勾选以下 3 个选项

在点击 Finish,实现导入。

增加依赖库

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

必要依赖库:

  • 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”,留神大小写

CocoaPods 集成

请参考 Pod 集成

配置 MobTech 的 appkey 和 serect

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

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 <MOBFoundation/MobSDK+Privacy.h>
[MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {}];

MobSDK.uploadPrivacyPermissionStatus(true) {(Success) in
        };

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

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

/**
 ShareSDK 平台注册办法

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

示例代码

ocswift

#import <ShareSDK/ShareSDK.h>

- (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;
}

ShareSDK.registPlatforms { 
     register in

            register?.setupWeChat(withAppId: "wx617c77c82218ea2c", appSecret: "c7253e5289986cf4c4c74d1ccc185fb1",universalLink: "https://70imc.share2dlink.com/")
            register?.setupSinaWeibo(withAppkey: "568898243", appSecret: "38a4f8204cc784f81f9f0daaf31e02e3", redirectUrl: "http://www.sharesdk.cn", universalLink: "https://70imc.share2dlink.com/")
            register?.setupQQ(withAppId: "100371282", appkey: "aed9b0303e3ed1e27bae87c33761161d", enableUniversalLink: true, universalLink: "https://70imc.share2dlink.com/qq_conn/100371282")

}

分享(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 <ShareSDK/ShareSDK.h>
#import <ShareSDKUI/ShareSDK+SSUI.h>

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;
         }
}];

let params = NSMutableDictionary()

params.ssdkSetupShareParams(byText: "test", images: "http://www.mob.com/assets/images/ShareSDK_pic_1-09d293a6.png", url: nil, title: nil, type: .image)

ShareSDK.showShareActionSheet(nil, customItems: nil, shareParams: params, sheetConfiguration: nil) {(state, platformType, userdata, contentEntity, error, isFinished) in

            switch state
               {
                     case .success:
                          print("Success");
                     case .fail:
                          print("Fail:%@",error ?? "");
                     case .cancel:
                          print("Cancel");
                     default : break
                }
}

间接分享

/**
 分享内容

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

示例代码

ocswift

#import <ShareSDK/ShareSDK.h>
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;
        }
}];

let params = NSMutableDictionary()

        params.ssdkSetupShareParams(byText: "test", images: "http://c.hiphotos.baidu.com/image/pic/item/b58f8c5494eef01f40ef23e9edfe9925bc317d26.jpg", url: nil, title: nil, type: .image)

        ShareSDK.share(.typeWechat, parameters: params) {(state, userdata, contentEntity, error) in

            switch state
            {
            case .success:
                print("Success");
            case .fail:
                print("Fail:%@",error ?? "");
            case .cancel:
                print("cancel");
            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/ShareSDK.h>

[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;
        }
}];

ShareSDK.authorize(.typeWechat, settings: nil) {(state, user, error) in

            switch state
              {
                case .success:
                      print("Success:%@",user?.dictionaryValue() ?? "");
                case .fail:
                      print("Fail:%@",error ?? "");
                case .cancel:
                      print("Cancel");
                default : break
            }
}

第三方平台的相干配置

配置 URL Scheme

关上我的项目的 Info 选项,而后抉择 URL Types,增加对应平台的 URL Scheme 配置,如下图:

以下是次要平台 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. 而后给它增加一个须要反对的我的项目,类型为字符串类型:

以下是次要平台白名单配置参考,须要看其余的平台请参考 白名单全平台配置阐明

平台名称

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;

Twitter 增加 V2 接口配置

twitter 须要在 infoplist 退出 V2 配置,配置 MOBTwitterVer

配置 Universal Link

新浪微博,微信,QQ,Line 非凡配置

新浪微博,微信,QQ,line 平台在 iOS13 上须要校验 Universal Link,之前在微信,QQ,新浪微博,line 上注册利用须要在配置上 Universal Link,另外我的项目里也要配置上,能够依据咱们后盾生成的 Universal Link 去配置:

留神: Team id,Bundle id 这些必须要填写的和本人我的项目里应用的证书的 Team id 和 Bundle id 统一,QQ AppID 是填写 qq 初始化的 appid,如果须要 QQ 平台,那么须要填写上,把信息都填写之后保留了才能够应用咱们生成的 Univesal link

在我的项目里配置,如下图:

点击 Capability,抉择 Associated Domains, 并双击增加,如下图:

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

至此根本的集成流程实现了,能够测试看成果啦!

留神:这个 Universal Link 也能够本人生成,能够参考这个 苹果官网文档,然而为了不便用户,节俭用户的工夫和精力,倡议间接拷贝咱们生成的配置。

正文完
 0