开发工具: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
- 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
fb+在facebook注册失去的ApiKey
如ApiKey:107704292745179 最初配置:fb107704292745179
twitterkit-在twitter注册失去的ConsumerKey
如ConsumerKey:viOnkeLpHBKs6KXV7MPpeGyzE 最初配置:twitterkit-viOnkeLpHBKs6KXV7MPpeGyzE
配置白名单
1.在我的项目的info.plist中增加LSApplicationQueriesSchemes,类型为Array
2.而后给它增加一个须要反对的我的项目,类型为字符串类型:
以下是次要平台白名单配置参考,须要看其余的平台请参考 白名单全平台配置阐明
平台名称
OpenURL白名单阐明
新浪微博
sinaweibo
sinaweibohd
sinaweibosso
sinaweibohdsso
weibosdk
weibosdk2.5
weibosdk3.3
微信
weixin
weixinULAPI
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,则间接增加本格即可]
fbauth2
fbauth
fbapi20130214
fbapi
fbshareextension
fbapi20160328
fbapi20150629
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也能够本人生成,能够参考这个 苹果官网文档,然而为了不便用户,节俭用户的工夫和精力,倡议间接拷贝咱们生成的配置。