一苛坚、獲取appkey
如何在我們的官網(wǎng)注冊(cè)應(yīng)用得到appkey酪惭。
二、下載SDK
獲取ShareSDK-iOS :解壓壓縮包之后結(jié)構(gòu)如圖所示:
目錄結(jié)構(gòu) (使用時(shí)直接將SDK這個(gè)文件拖入工程)
SDK
? | —– Required( MOB 基礎(chǔ)公共庫目錄 )
? ? ? ? | —– MOBFoundation.framework:基礎(chǔ)功能框架。(必要)
? | —– ShareSDK ( ShareSDK 目錄 )
? ? ? ? | —– ShareSDK.framework:核心靜態(tài)庫。(必要)
? ? ? ? | —– Support (ShareSDK 各組件)
? ? ? ? ? ? ? | —– Required ( 必要 )
? ? ? ? ? ? ? ? ? ?| —– ShareSDK.bundle:ShareSDK資源文件砌梆。(必要)
? ? ? ? ? ? ? ? ? ?| —– ShareSDKConnector.framework:用于ShareSDK框架與外部框架連接的代理框架插件。(使用第三方SDK時(shí)必要贬循。)
? ? ? ? ? ? ? | —– PlatformSDK 第三方平臺(tái)SDK咸包。(不需要的平臺(tái)的SDK可直接移除)
? ? ? ? ? ? ? | —– PlatformConnector 對(duì)ShareSDKConnector模塊架構(gòu)進(jìn)行優(yōu)化,根據(jù)平臺(tái)進(jìn)行分包杖虾。(不需要的平臺(tái)的庫可以移除)
? ? ? ? ? ? ? | —– Optional ( 可選 )
? ? ? ? ? ? ? ? ? ? | —– ShareSDKUI.bundle:分享菜單欄和分享編輯頁面資源包烂瘫。(如果自定義這些UI可直接移除)
? ? ? ? ? ? ? ? ? ? | —– ShareSDKExtension.framework:對(duì)ShareSDK功能的擴(kuò)展框架插件。(主要提供第三方平臺(tái)登錄、 一鍵分享坟比、截屏分享芦鳍、搖一搖分享等相關(guān)功能。需要使用以上功能時(shí)必要葛账。)
? ? ? ? ? ? ? ? ? ? | —– ShareSDKUI.framework:分享菜單欄和分享編輯頁面柠衅。(如果自定義這些UI可直接移除)
? ? ? ? ? ? ? ? ? ? | —– ShareSDKConfigFile.bundle:用xml來初始化或者構(gòu)造分享參數(shù)的資源文件。(用代碼來初始化籍琳,構(gòu)造分享參數(shù)可直接移除菲宴,下載的時(shí)候也是可根據(jù)自己的要求勾選下載的)
? ? ? ? ? ? ? ? ? ? | —– ShareSDKConfigFile.framework:用xml來初始化,構(gòu)造分享參數(shù)趋急,使用的分享的方法庫喝峦。用代碼來初始化,構(gòu)造分享參數(shù)可直接移除呜达,下載的時(shí)候也是可根據(jù)自己的要求勾選下載的)
三谣蠢、快速集成
第一步:將下載的SDK解壓后導(dǎo)入到您的工程中,見下圖 :
注意:請(qǐng)務(wù)必在上述步驟中選擇“Create groups for any added folders”單選按鈕組查近。如果你選擇“Create folder references for any added folders”眉踱,一個(gè)藍(lán)色的文件夾引用將被添加到項(xiàng)目并且將無法找到它的資源
第二步:添加依賴庫 添加步驟見下圖
必須添加的依賴庫如下(Xcode 7 之后 *.dylib庫后綴名更改為*.tbd):
? libicucore.dylib
? libz.dylib
? libstdc++.dylib
? JavaScriptCore.framework
以下依賴庫根據(jù)社交平臺(tái)添加:
新浪微博SDK依賴庫
? ImageIO.framework
? libsqlite3.dylib
QQ好友和QQ空間SDK依賴庫
? libsqlite3.dylib
微信SDK依賴庫
? libsqlite3.dylib
Instagram需要依賴庫
? AssetsLibrary.framework
? Photos.framework
美拍需要依賴庫
? AssetsLibrary.framework
第三步:設(shè)置ShareSDK的Appkey并初始化對(duì)應(yīng)的第三方社交平臺(tái)
在項(xiàng)目工程的Info.plist 中如圖增加 MOBAppkey 和 MOBAppSecret 兩個(gè)字段
在 MOBAppkey中 設(shè)置ShareSDK的appKey,如果尚未在ShareSDK官網(wǎng)注冊(cè)過App嗦嗡,請(qǐng)移步到登錄后臺(tái)進(jìn)行應(yīng)用注冊(cè)勋锤。
友情提示:如果您同時(shí)多個(gè)MOBSDK產(chǎn)品 在info.plist中的設(shè)置一次就可以了。
第四步:新建Header File侥祭,并建立橋接:
建立橋接(重要:這個(gè)橋接文件中寫入OC代碼的頭文件之后叁执,Swift代碼就可以調(diào)用OC的代碼了,放大可看大圖步驟):
第五步:打開橋接文件(ShareSDK-Bridging-Header.h)導(dǎo)入OC文件頭
打開ShareSDK-Bridging-Header.h,導(dǎo)入OC代碼文件頭矮冬,示例:
?#import <ShareSDK/ShareSDK.h>
?#import <ShareSDKUI/ShareSDK+SSUI.h>
?#import <ShareSDKConnector/ShareSDKConnector.h>
?//騰訊SDK頭文件
?#import <TencentOpenAPI/TencentOAuth.h>
?#import <TencentOpenAPI/QQApiInterface.h>
?//微信SDK頭文件
?#import "WXApi.h"
?//新浪微博SDK頭文件
?#import “WeiboSDK.h"
?//人人SDK頭文件
?#import <RennSDK/RennSDK.h>
?//Kakao SDK頭文件
?#import <KakaoOpenSDK/KakaoOpenSDK.h>
?//支付寶SDK
?#import "APOpenAPI.h"
第六步:初始化社交平臺(tái)
打開AppDelegate.swift文件
在 ?func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool ? ?中調(diào)用registerApp方法來初始化SDK并且初始化第三方平臺(tái)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
/**
?* ?初始化ShareSDK應(yīng)用
?*
?* ?@param activePlatforms ? ? ? ? ?使用的分享平臺(tái)集合谈宛,如:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeTencentWeibo)];
?* ?@param importHandler ? ? ? ? ? 導(dǎo)入回調(diào)處理,當(dāng)某個(gè)平臺(tái)的功能需要依賴原平臺(tái)提供的SDK支持時(shí)胎署,需要在此方法中對(duì)原平臺(tái)SDK進(jìn)行導(dǎo)入操作吆录。具體的導(dǎo)入方式可以參考ShareSDKConnector.framework中所提供的方法。
?* ?@param configurationHandler ? ? 配置回調(diào)處理琼牧,在此方法中根據(jù)設(shè)置的platformType來填充應(yīng)用配置信息
?*/
? ? ? ? ?ShareSDK.registerActivePlatforms(
? ? ? ? ? ? [
? ? ? ? ? ? ? ? SSDKPlatformType.typeSinaWeibo.rawValue,
? ? ? ? ? ? ? ? SSDKPlatformType.typeWechat.rawValue,
? ? ? ? ? ? ? ? SSDKPlatformType.typeQQ.rawValue
? ? ? ? ? ? ],
? ? ? ? ? ? onImport: {(platform : SSDKPlatformType) -> Void in
? ? ? ? ? ? ? ? switch platform
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case SSDKPlatformType.typeSinaWeibo:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ShareSDKConnector.connectWeibo(WeiboSDK.classForCoder())
? ? ? ? ? ? ? ? ? ? case SSDKPlatformType.typeWechat:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ShareSDKConnector.connectWeChat(WXApi.classForCoder())
? ? ? ? ? ? ? ? ? ? case SSDKPlatformType.typeQQ:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ShareSDKConnector.connectQQ(QQApiInterface.classForCoder(), tencentOAuthClass: TencentOAuth.classForCoder())
? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ?},
? ? ? ? ? ? onConfiguration: {(platform : SSDKPlatformType , appInfo : NSMutableDictionary?) -> Void in
? ? ? ? ? ? ? ? switch platform
? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case SSDKPlatformType.typeSinaWeibo:
? ? ? ? ? ? ? ? ? ? ? ? //設(shè)置新浪微博應(yīng)用信息,其中authType設(shè)置為使用SSO+Web形式授權(quán)
? ? ? ? ? ? ? ? ? ? ? ? appInfo?.ssdkSetupSinaWeibo(byAppKey: "568898243",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? appSecret: "38a4f8204cc784f81f9f0daaf31e02e3",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? redirectUri: "http://www.sharesdk.cn",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? authType: SSDKAuthTypeBoth)
? ? ? ? ? ? ? ? ? ? case SSDKPlatformType.typeWechat:
? ? ? ? ? ? ? ? ? ? ? ? //設(shè)置微信應(yīng)用信息
? ? ? ? ? ? ? ? ? ? ? ? appInfo?.ssdkSetupWeChat(byAppId: "wx4868b35061f87885",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?appSecret: "64020361b8ec4c99936c0e3999a9f249")
? ? ? ? ? ? ? ? ? ? ?case SSDKPlatformType.typeQQ:
? ? ? ? ? ? ? ? ? ? ? ? //設(shè)置QQ應(yīng)用信息
? ? ? ? ? ? ? ? ? ? ? ? appInfo?.ssdkSetupQQ(byAppId: "100371282",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?appKey: "aed9b0303e3ed1e27bae87c33761161d",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?authType: SSDKAuthTypeWeb)
? ? ? ? ? ? ?default:
? ? ? ? ? ? ? ? break
? ? ? ? ? ? }
? ? ? ? })
? ? ? ? return true
? ? }
? ? }
第六步:添加實(shí)現(xiàn)代碼
打開需要集成分享功能的視圖源碼恢筝,把如下代碼復(fù)制并粘貼到你要分享的位置,例如到響應(yīng)分享按鈕的方法中巨坊。并且修改相應(yīng)的參數(shù)即可撬槽。
? ? ?// 1.創(chuàng)建分享參數(shù)
? ? ? ? let shareParames = NSMutableDictionary()
? ? ? ? shareParames.ssdkSetupShareParams(byText: "分享內(nèi)容",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?images : UIImage(named: "shareImg.png"),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? url : NSURL(string:"http://mob.com") as URL!,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title : "分享標(biāo)題",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?type : SSDKContentType.image)
? ? ? ? //2.進(jìn)行分享
? ? ? ? ShareSDK.share(SSDKPlatformType.typeSinaWeibo, parameters: shareParames) { (state : SSDKResponseState, nil, entity : SSDKContentEntity?, error :Error?) in
? ? ? ? ? ? switch state{
? ? ? ? ? ? case SSDKResponseState.success: print("分享成功")
? ? ? ? ? ? case SSDKResponseState.fail: ? ?print("授權(quán)失敗,錯(cuò)誤描述:\(error)")
? ? ? ? ? ? case SSDKResponseState.cancel: ?print("操作取消")
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? break
? ? ? ? ? ? }
? ? ? ? }
編譯并運(yùn)行后,點(diǎn)擊分享按鈕就成功發(fā)送到社交平臺(tái)的話說明你已經(jīng)基本集成成功了趾撵。但是侄柔,為了使您的用戶有更好的分享體驗(yàn),以及您的應(yīng)用有更多的分享量,更好地在社交平臺(tái)上傳播暂题,我們建議您參考“進(jìn)階功能”的指引進(jìn)行SSO(免登錄)和更多社交平臺(tái)的設(shè)置移剪。
可選:支持微信所需的相關(guān)配置及代碼
在微信開放平臺(tái)(http://open.weixin.qq.com/ )注冊(cè)應(yīng)用并取得應(yīng)用的AppID,然后打開下圖位置薪者,在URL Types中添加微信AppID
先在ShareSDK-Bridging-Header.h中導(dǎo)入微信的頭文件(上文介紹中已導(dǎo)入)
打開AppDelegate.swift文件纵苛,修改初始化方法(修改地方加粗顯示):
?func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
/**
?* ?初始化ShareSDK應(yīng)用
?*
?* ?@param activePlatforms ? ? ? ? ?使用的分享平臺(tái)集合,如:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeTencentWeibo)];
?* ?@param importHandler ? ? ? ? ? 導(dǎo)入回調(diào)處理啸胧,當(dāng)某個(gè)平臺(tái)的功能需要依賴原平臺(tái)提供的SDK支持時(shí)赶站,需要在此方法中對(duì)原平臺(tái)SDK進(jìn)行導(dǎo)入操作。具體的導(dǎo)入方式可以參考ShareSDKConnector.framework中所提供的方法纺念。
?* ?@param configurationHandler ? ? 配置回調(diào)處理,在此方法中根據(jù)設(shè)置的platformType來填充應(yīng)用配置信息
?*/
? ? ? ? ShareSDK.registerActivePlatforms(
? ? ? ? ? ? [ SSDKPlatformType.typeWechat.rawValue],
? ? ? ? ? ? // onImport 里的代碼,需要連接社交平臺(tái)SDK時(shí)觸發(fā)
? ? ? ? ? ? onImport: {(platform : SSDKPlatformType) -> Void in
? ? ? ? ? ? ? ? switch platform
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ?case SSDKPlatformType.typeWechat:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ShareSDKConnector.connectWeChat(WXApi.classForCoder())
? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ?},
? ? ? ? ? ? onConfiguration: {(platform : SSDKPlatformType , appInfo : NSMutableDictionary?) -> Void in
? ? ? ? ? ? ? ? switch platform
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case SSDKPlatformType.typeWechat:
? ? ? ? ? ? ? ? ? ? ? ? //設(shè)置微信應(yīng)用信息
? ? ? ? ? ? ? ? ? ? ? ? appInfo?.ssdkSetupWeChat(byAppId: "wx4868b35061f87885",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?appSecret: "64020361b8ec4c99936c0e3999a9f249")
? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? })
? ? ? ? return true
? ? }
}
可選:支持QQ所需的相關(guān)配置及代碼
登錄QQ互聯(lián)(http://connect.qq.com/ )注冊(cè)成為開發(fā)者并登記應(yīng)用取得AppId想括,然后打開下圖位置陷谱,在URL Types中添加QQ的AppID,其格式為:”QQ” + AppId的16進(jìn)制(如果appId轉(zhuǎn)換的16進(jìn)制數(shù)不夠8位則在前面補(bǔ)0瑟蜈,如轉(zhuǎn)換的是:5FB8B52烟逊,則最終填入為:QQ05FB8B52 注意:轉(zhuǎn)換后的字母要大寫)
轉(zhuǎn)換16進(jìn)制的方法:echo ‘ibase=10;obase=16;801312852′|bc,其中801312852為QQ的AppID铺根,見下圖
先在ShareSDK-Bridging-Header.h中導(dǎo)入QQ的頭文件(上文介紹中已導(dǎo)入)
打開AppDelegate.swift文件宪躯,修改初始化方法(修改地方加粗顯示):
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
/**
?* ?初始化ShareSDK應(yīng)用
?*
?* ?@param activePlatforms ? ? ? ? ?使用的分享平臺(tái)集合,如:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeTencentWeibo)];
?* ?@param importHandler ? ? ? ? ? 導(dǎo)入回調(diào)處理位迂,當(dāng)某個(gè)平臺(tái)的功能需要依賴原平臺(tái)提供的SDK支持時(shí)访雪,需要在此方法中對(duì)原平臺(tái)SDK進(jìn)行導(dǎo)入操作。具體的導(dǎo)入方式可以參考ShareSDKConnector.framework中所提供的方法掂林。
?* ?@param configurationHandler ? ? 配置回調(diào)處理臣缀,在此方法中根據(jù)設(shè)置的platformType來填充應(yīng)用配置信息
?*/
? ? ? ? ?ShareSDK.registerActivePlatforms(
? ? ? ? ? ? [SSDKPlatformType.typeQQ.rawValue],
? ? ? ? ? ? // onImport 里的代碼,需要連接社交平臺(tái)SDK時(shí)觸發(fā)
? ? ? ? ? ? onImport: {(platform : SSDKPlatformType) -> Void in
? ? ? ? ? ? ? ? switch platform
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case SSDKPlatformType.typeQQ:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ShareSDKConnector.connectQQ(QQApiInterface.classForCoder(), tencentOAuthClass: TencentOAuth.classForCoder())?
? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ?},
? ? ? ? ? ? onConfiguration: {(platform : SSDKPlatformType , appInfo : NSMutableDictionary?) -> Void in
? ? ? ? ? ? ? ? switch platform
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? case SSDKPlatformType.typeQQ:
? ? ? ? ? ? ? ? ? ? ? ? //設(shè)置QQ應(yīng)用信息
? ? ? ? ? ? ? ? ? ? ? ? appInfo?.ssdkSetupQQ(byAppId: "100371282",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?appKey: "aed9b0303e3ed1e27bae87c33761161d",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?authType: SSDKAuthTypeWeb)
? ? ? ? ? ? ? ? ? ? ?default:
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? })
? ? ? ? return true
? ? }
}
可選:配置新浪微博、Facebook的SSO
登錄新浪微博和facebook的開放平臺(tái)泻帮,獲取AppID 精置。新浪微博的url scheme的設(shè)置格式為wb+AppID,facebook的設(shè)置格式為fb+AppID锣杂。具體參考下圖:
附:目前的新浪微博SDK需要在項(xiàng)目的Build Settings中的Other Linker Flags添加”-ObjC”脂倦,如果不配置有可能會(huì)崩潰。步驟如下:
當(dāng)新浪微博需要客戶端分享或者增加關(guān)注微博的功能元莫,需要打開工程中的*AppDelegate.m(*代表你的工程名字)文件赖阻,導(dǎo)入新浪微博SDK的頭文件并增加新浪微博的外部庫文件接口: