iOS使用ShareSDK集成QQ,微信愉舔,微博等第三方分享

前言

最近項(xiàng)目需要加入第三方分享功能钢猛,看了網(wǎng)上的一些第三方SDK的介紹,覺(jué)得ShareSDK是一個(gè)很強(qiáng)大方便的第三方工具轩缤,所以選擇了ShareSDK來(lái)完成命迈。這里記錄一下完整的集成與使用流程。

1.申請(qǐng)ShareSDK的AppKey以及第三方平臺(tái)的AppKey

ShareSDK的AppKey直接到Mob官網(wǎng)申請(qǐng)即可火的,具體的注冊(cè)應(yīng)用的流程請(qǐng)參考這里:Mob創(chuàng)建應(yīng)用流程

其他第三方平臺(tái)的AppKey需要到對(duì)應(yīng)的第三方平臺(tái)注冊(cè)應(yīng)用申請(qǐng):

新浪微博請(qǐng)參考新浪微博注冊(cè)流程

QQ請(qǐng)參考QQ注冊(cè)流程

微信請(qǐng)參考微信注冊(cè)流程

(我這里的Demo為了方便直接用了ShareSDK的Demo里面提供的AppKey壶愤,但是創(chuàng)建的項(xiàng)目Bundle id要和ShareSDK的Demo里一致。真實(shí)項(xiàng)目需要自己另外申請(qǐng)馏鹤,這個(gè)你們自己參考下注冊(cè)流程哈征椒,按照步驟來(lái)走,怎么也得會(huì)的哈~~~~~~~~~~)


2.下載SDK

下載地址:http://www.mob.com/downloadDetail/ShareSDK/ios

下載的時(shí)候根據(jù)自己需求選擇需要的平臺(tái)湃累,我這里選擇的是默認(rèn)分享視圖勃救,只測(cè)試微博,微信治力,QQ蒙秒。


下載之后解壓出來(lái)如下,我們需要導(dǎo)入項(xiàng)目的是這整個(gè)SDK資源文件:


3.開(kāi)始集成

(1)將上面下載的SDK文件夾拖進(jìn)Xcode項(xiàng)目里宵统,如下圖:




注意:直接拖SDK進(jìn)去請(qǐng)務(wù)必在上述步驟中選擇“Create groups ”單選按鈕組税肪。如果你選擇“Create folder references”,一個(gè)藍(lán)色的文件夾引用將被添加到項(xiàng)目并且將無(wú)法找到它的資源。

(2)添加依賴庫(kù)益兄,添加步驟如下圖:


必須添加的依賴庫(kù)如下(Xcode 7 之后 *.dylib庫(kù)后綴名更改為*.tbd):

libicucore.dylib

libz.dylib

?libstdc++.dylib

JavaScriptCore.framework

以下依賴庫(kù)根據(jù)社交平臺(tái)添加:

新浪微博SDK依賴庫(kù)

ImageIO.framework

libsqlite3.dylib

QQ好友和QQ空間SDK依賴庫(kù)

libsqlite3.dylib

微信SDK依賴庫(kù)

libsqlite3.dylib

(3)設(shè)置ShareSDK的Appkey并調(diào)用初始化方法初始化對(duì)應(yīng)的第三方社交平臺(tái)

i.在項(xiàng)目工程的Info.plist 中如圖增加 MOBAppKey 和 MOBAppSecret 兩個(gè)字段

在 MOBAppKey中?設(shè)置ShareSDK的appKey锻梳,MOBAppSecret中?設(shè)置ShareSDK的appSecret,如下圖:



ii.打開(kāi)*AppDelegate.m(*代表你的工程名字)導(dǎo)入頭文件

#import <ShareSDK/ShareSDK.h>

#import <ShareSDKConnector/ShareSDKConnector.h>

//騰訊開(kāi)放平臺(tái)(對(duì)應(yīng)QQ和QQ空間)SDK頭文件

#import <TencentOpenAPI/TencentOAuth.h>

#import <TencentOpenAPI/QQApiInterface.h>

//微信SDK頭文件

#import "WXApi.h"?

//新浪微博SDK頭文件

#import "WeiboSDK.h"

iii.在- (BOOL)application: didFinishLaunchingWithOptions:方法中調(diào)用registerActivePlatforms方法來(lái)初始化

- (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:

? ? ? ? ? ? ? ? //設(shè)置新浪微博應(yīng)用信息,其中authType設(shè)置為使用SSO+Web形式授權(quán)

? ? ? ? ? ? ? ? [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.需要在分享的視圖中導(dǎo)入的頭文件

#import <ShareSDK/ShareSDK.h>

#import <ShareSDKUI/ShareSDK+SSUI.h>

ii.調(diào)用構(gòu)造分享參數(shù)接口和分享的接口

? ? //1净捅、創(chuàng)建分享參數(shù)

? ? NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];

? ? [shareParams SSDKSetupShareParamsByText:@"分享內(nèi)容"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? images:[[NSBundle mainBundle] pathForResource:@"COD13" ofType:@"jpg"]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? url:[NSURL URLWithString:@"http://mob.com"]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title:@"分享標(biāo)題"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? type:SSDKContentTypeAuto];


? ? //2疑枯、分享(可以彈出我們的分享菜單和編輯界面)

? ? [ShareSDK showShareActionSheet:nil //要顯示菜單的視圖, iPad版中此參數(shù)作為彈出菜單的參照視圖,只有傳這個(gè)才可以彈出我們的分享菜單蛔六,可以傳分享的按鈕對(duì)象或者自己創(chuàng)建小的view 對(duì)象荆永,iPhone可以傳nil不會(huì)影響

? ? ? ? ? ? ? ? ? ? ? ? ? ? items:nil

? ? ? ? ? ? ? ? ? ? ? shareParams:shareParams

? ? ? ? ? ? ? onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {


? ? ? ? ? ? ? ? ? switch (state) {

? ? ? ? ? ? ? ? ? ? ? case SSDKResponseStateSuccess:

? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? message:nil

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? delegate:nil

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cancelButtonTitle:@"確定"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? otherButtonTitles:nil];

? ? ? ? ? ? ? ? ? ? ? ? ? [alertView show];

? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? case SSDKResponseStateFail:

? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失敗"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? message:[NSString stringWithFormat:@"%@",error]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? delegate:nil

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cancelButtonTitle:@"OK"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? otherButtonTitles:nil, nil];

? ? ? ? ? ? ? ? ? ? ? ? ? [alert show];

? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? }

? ? ];

(5)配置平臺(tái)的URL Scheme

i.微信的URL Scheme的配置就是微信開(kāi)放平臺(tái)注冊(cè)應(yīng)用獲取得到的AppID,在URL Types中添加微信AppID 即可国章;

ii.微博的URL Scheme的配置就是微博開(kāi)放平臺(tái)注冊(cè)應(yīng)用獲取到的Appkey具钥,并在前面加wb前綴,格式為wb+AppKey液兽;

iii.QQ的URL Scheme的配置就是騰訊開(kāi)放平臺(tái)注冊(cè)應(yīng)用獲取到的AppID骂删,并且轉(zhuǎn)成十六進(jìn)制,另外在前面加QQ前綴四啰,格式為:QQ+ AppId的16進(jìn)制(如果appId轉(zhuǎn)換的16進(jìn)制數(shù)不夠8位則在前面補(bǔ)0宁玫,如轉(zhuǎn)換的是:5FB8B52,則最終填入為:QQ05FB8B52 柑晒,則最終填入為:QQ05FB8B52 注意:轉(zhuǎn)換后的字母要大寫)那么如何轉(zhuǎn)換的欧瘪,這個(gè)可以在網(wǎng)上找一個(gè)在線十進(jìn)制轉(zhuǎn)十六進(jìn)制的轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換就可以,例如http://www.sojson.com/hexconvert.html

具體配置見(jiàn)下圖:


(6)配置平臺(tái)的白名單

在iOS 9下涉及到平臺(tái)客戶端跳轉(zhuǎn)匙赞,系統(tǒng)會(huì)自動(dòng)到項(xiàng)目info.plist下檢測(cè)是否設(shè)置平臺(tái)Scheme佛掖。對(duì)于需要配置的平臺(tái),如果沒(méi)有配置涌庭,就無(wú)法正常跳轉(zhuǎn)平臺(tái)客戶端芥被。因此要支持客戶端的分享和授權(quán)等,需要配置Scheme名單脾猛。

具體方法:

1)撕彤、在項(xiàng)目的info.plist中添加一LSApplicationQueriesSchemes鱼鸠,類型為Array猛拴。

2)、然后給它添加一個(gè)需要支持的項(xiàng)目蚀狰,類型為字符串類型愉昆;


各平臺(tái)OpenURL白名單說(shuō)明

新浪微博

sinaweibo

sinaweibohd

sinaweibosso

sinaweibohdsso

weibosdk

weibosdk2.5

微信

wechat

weixin

QQ

mqzoneopensdk,

mqzoneopensdkapi

mqzoneopensdkapi19

mqzoneopensdkapiV2

mqqOpensdkSSoLogin

mqqopensdkapiV2

mqqopensdkapiV3

wtloginmqq2

mqqapi

mqqwpa

mqzone

mqq

mqqopensdkapiV4

(7)另外一些相關(guān)配置

1)新浪微博,微信SDK都需要在項(xiàng)目的Build Settings中的Other Linker Flags添加”-ObjC”麻蹋,如果不配置有可能會(huì)崩潰跛溉。步驟如下: ?


2)新浪微博網(wǎng)頁(yè)授權(quán)分享需要暫時(shí)退回到http協(xié)議。步驟如下:

具體方法:

在項(xiàng)目的info.plist中添加一個(gè)Key:App Transport Security Settings,類型為字典類型芳室。

然后給它添加一個(gè)Key:Allow Arbitrary Loads专肪,類型為Boolean類型,值為YES堪侯;


3)新浪微博客戶端分享還需要在plist文件里添加隱私權(quán)限配置:相冊(cè)權(quán)限:Privacy - Photo Library Usage Description 嚎尤,如下圖:


以上就是完整的集成步驟,到這里就結(jié)束了伍宦!很簡(jiǎn)單的吧芽死!


效果如下:


Demo下載地址:https://github.com/fangli520/Share

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市次洼,隨后出現(xiàn)的幾起案子关贵,更是在濱河造成了極大的恐慌,老刑警劉巖卖毁,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揖曾,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡势篡,警方通過(guò)查閱死者的電腦和手機(jī)翩肌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門静尼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)直颅,“玉大人,你說(shuō)我怎么就攤上這事启上“欤” “怎么了粱坤?”我有些...
    開(kāi)封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瓷产。 經(jīng)常有香客問(wèn)我站玄,道長(zhǎng),這世上最難降的妖魔是什么濒旦? 我笑而不...
    開(kāi)封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任株旷,我火速辦了婚禮,結(jié)果婚禮上尔邓,老公的妹妹穿的比我還像新娘晾剖。我一直安慰自己,他們只是感情好梯嗽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布齿尽。 她就那樣靜靜地躺著,像睡著了一般灯节。 火紅的嫁衣襯著肌膚如雪循头。 梳的紋絲不亂的頭發(fā)上绵估,一...
    開(kāi)封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音卡骂,去河邊找鬼国裳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛全跨,可吹牛的內(nèi)容都是我干的躏救。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼螟蒸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盒使!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起七嫌,我...
    開(kāi)封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤少办,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后诵原,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體英妓,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年绍赛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔓纠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吗蚌,死狀恐怖腿倚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚯妇,我是刑警寧澤敷燎,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站箩言,受9級(jí)特大地震影響硬贯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陨收,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一饭豹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧务漩,春花似錦拄衰、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)列赎。三九已至宏悦,卻和暖如春镐确,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饼煞。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工源葫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砖瞧。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓息堂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親块促。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荣堰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353