前言
最近項目須要加入第三方分享功能,看了網上的一些第三方SDK的介紹,以爲ShareSDK是一個很強大方便的第三方工具,因此選擇了ShareSDK來完成。這裏記錄一下完整的集成與使用流程。
1.申請ShareSDK的AppKey以及第三方平臺的AppKey
ShareSDK的AppKey直接到Mob官網申請便可,具體的註冊應用的流程請參考這裏:Mob建立應用流程
(我這裏的Demo爲了方便直接用了ShareSDK的Demo裏面提供的AppKey,可是建立的項目Bundle id要和ShareSDK的Demo裏一致。真實項目須要本身另外申請,這個大家本身參考下注冊流程哈,按照步驟來走,怎麼也得會的哈~~~~~~~~~~)
2.下載SDK
下載地址:http://www.mob.com/downloadDetail/ShareSDK/ios
下載的時候根據本身需求選擇須要的平臺,我這裏選擇的是默認分享視圖,只測試微博,微信,QQ。
下載以後解壓出來以下,咱們須要導入項目的是這整個SDK資源文件:
3.開始集成
(1)將上面下載的SDK文件夾拖進Xcode項目裏,以下圖:
注意:直接拖SDK進去請務必在上述步驟中選擇「Create groups 」單選按鈕組。若是你選擇「Create folder references」,一個藍色的文件夾引用將被添加到項目而且將沒法找到它的資源。
(2)添加依賴庫,添加步驟以下圖:
必須添加的依賴庫以下(Xcode 7 以後 .dylib庫後綴名更改成.tbd):html
libz.dylib libstdc++.dylib JavaScriptCore.framework
如下依賴庫根據社交平臺添加:
新浪微博SDK依賴庫ios
libsqlite3.dylib
QQ好友和QQ空間SDK依賴庫c++
libsqlite3.dylib
微信SDK依賴庫sql
libsqlite3.dylib
(3)設置ShareSDK的Appkey並調用初始化方法初始化對應的第三方社交平臺
i.在項目工程的Info.plist 中如圖增長 MOBAppKey 和 MOBAppSecret 兩個字段
在 MOBAppKey中 設置ShareSDK的appKey,MOBAppSecret中 設置ShareSDK的appSecret,以下圖:json
ii.打開AppDelegate.m(表明你的工程名字)導入頭文件**api
#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"
iii.在- (BOOL)application: didFinishLaunchingWithOptions:方法中調用registerActivePlatforms方法來初始化微信
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {** // Override point for customization after application launch. [ShareSDK registerActivePlatforms:@[ @(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeWechat), @(SSDKPlatformTypeQQ)] onImport:^(SSDKPlatformType platformType) { switch (platformType) { case SSDKPlatformTypeWechat: [ShareSDKConnector connectWeChat:[WXApi class]]; break; case SSDKPlatformTypeQQ: [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]]; break; case SSDKPlatformTypeSinaWeibo: [ShareSDKConnector connectWeibo:[WeiboSDK 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 SSDKPlatformTypeWechat: [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885" appSecret:@"64020361b8ec4c99936c0e3999a9f249"]; break; case SSDKPlatformTypeQQ: [appInfo SSDKSetupQQByAppId:@"100371282" appKey:@"aed9b0303e3ed1e27bae87c33761161d" authType:SSDKAuthTypeBoth]; break; default: break; } }]; return YES; }
(4)添加分享代碼
i.須要在分享的視圖中導入的頭文件app
#import <ShareSDK/ShareSDK.h> #import <ShareSDKUI/ShareSDK+SSUI.h>
ii.調用構造分享參數接口和分享的接口ide
//一、建立分享參數** NSMutableDictionary *shareParams = [NSMutableDictionary dictionary]; [shareParams SSDKSetupShareParamsByText:@"分享內容" images:[[NSBundle mainBundle] pathForResource:@"COD13" ofType:@"jpg"] url:[NSURL URLWithString:@"http://mob.com"] title:@"分享標題" type:SSDKContentTypeAuto];//二、分享(能夠彈出咱們的分享菜單和編輯界面)** [ShareSDK showShareActionSheet:nil //要顯示菜單的視圖, iPad版中此參數做爲彈出菜單的參照視圖,只有傳這個才能夠彈出咱們的分享菜單,能夠傳分享的按鈕對象或者本身建立小的view 對象,iPhone能夠傳nil不會影響 items:nil shareParams:shareParams onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) { switch (state) { case SSDKResponseStateSuccess: { NSLog(@"分享成功"); break; } case SSDKResponseStateFail: { NSLog(@"分享失敗~~%@",error.description); break; } default: break; } } ];
(5)配置平臺的URL Scheme
i.微信的URL Scheme的配置就是微信開放平臺註冊應用獲取獲得的AppID,在URL Types中添加微信AppID 便可;
ii.微博的URL Scheme的配置就是微博開放平臺註冊應用獲取到的Appkey,並在前面加wb前綴,格式爲wb+AppKey;
iii.QQ的URL Scheme的配置就是騰訊開放平臺註冊應用獲取到的AppID,而且轉成十六進制,另外在前面加QQ前綴,格式爲:QQ+ AppId的16進制(若是appId轉換的16進制數不夠8位則在前面補0,如轉換的是:5FB8B52,則最終填入爲:QQ05FB8B52 ,則最終填入爲:QQ05FB8B52 注意:轉換後的字母要大寫)那麼如何轉換的,這個能夠在網上找一個在線十進制轉十六進制的轉換器進行轉換就能夠,例如http://www.sojson.com/hexconvert.html
具體配置見下圖:工具
(6)配置平臺的白名單
在iOS 9下涉及到平臺客戶端跳轉,系統會自動到項目info.plist下檢測是否設置平臺Scheme。對於須要配置的平臺,若是沒有配置,就沒法正常跳轉平臺客戶端。所以要支持客戶端的分享和受權等,須要配置Scheme名單。
具體方法:
1)、在項目的info.plist中添加一LSApplicationQueriesSchemes,類型爲Array。
2)、而後給它添加一個須要支持的項目,類型爲字符串類型;
各平臺OpenURL白名單說明
*新浪微博* sinaweibo sinaweibohd sinaweibosso sinaweibohdsso weibosdk weibosdk2.5 *微信* wechat weixin *QQ* mqzoneopensdk mqzoneopensdkapi mqzoneopensdkapi19 mqzoneopensdkapiV2 mqqOpensdkSSoLogin mqqopensdkapiV2 mqqopensdkapiV3 wtloginmqq2 mqqapi mqqwpa mqzone mqq mqqopensdkapiV4
(7)另一些相關配置
1)新浪微博,微信SDK都須要在項目的Build Settings中的Other Linker Flags添加」-ObjC」,若是不配置有可能會崩潰。步驟以下:
2)新浪微博網頁受權分享須要暫時退回到http協議。步驟以下:
具體方法:
在項目的info.plist中添加一個Key:App Transport Security Settings,類型爲字典類型。
而後給它添加一個Key:Allow Arbitrary Loads,類型爲Boolean類型,值爲YES;
3)新浪微博客戶端分享還須要在plist文件裏添加隱私權限配置:相冊權限:Privacy - Photo Library Usage Description ,以下圖:
以上就是完整的集成步驟,到這裏就結束了!很簡單的吧!
效果以下:
閱讀原文