一、獲取appkey
如何在我們的官網註冊應用得到appkey。
二、下載SDK
獲取ShareSDK-iOS :解壓壓縮包之後結構如圖所示:
![Sharesdk Swift調用的方法](http://p2.ttnews.xyz/loading.gif)
目錄結構 (使用時直接將SDK這個文件拖入工程)
SDK
| —– Required( MOB 基礎公共庫目錄 )
| —– MOBFoundation.framework:基礎功能框架。(必要)
| —– ShareSDK ( ShareSDK 目錄 )
| —– ShareSDK.framework:核心靜態庫。(必要)
| —– Support (ShareSDK 各組件)
| —– Required ( 必要 )
| —– ShareSDK.bundle:ShareSDK資源文件。(必要)
| —– ShareSDKConnector.framework:用於ShareSDK框架與外部框架連接的代理框架插件。(使用第三方SDK時必要。)
| —– PlatformSDK 第三方平臺SDK。(不需要的平臺的SDK可直接移除)
| —– PlatformConnector 對ShareSDKConnector模塊架構進行優化,根據平臺進行分包。(不需要的平臺的庫可以移除)
| —– Optional ( 可選 )
| —– ShareSDKUI.bundle:分享菜單欄和分享編輯頁面資源包。(如果自定義這些UI可直接移除)
| —– ShareSDKExtension.framework:對ShareSDK功能的擴展框架插件。(主要提供第三方平臺登錄、 一鍵分享、截屏分享、搖一搖分享等相關功能。需要使用以上功能時必要。)
| —– ShareSDKUI.framework:分享菜單欄和分享編輯頁面。(如果自定義這些UI可直接移除)
| —– ShareSDKConfigFile.bundle:用xml來初始化或者構造分享參數的資源文件。(用代碼來初始化,構造分享參數可直接移除,下載的時候也是可根據自己的要求勾選下載的)
| —– ShareSDKConfigFile.framework:用xml來初始化,構造分享參數,使用的分享的方法庫。用代碼來初始化,構造分享參數可直接移除,下載的時候也是可根據自己的要求勾選下載的)
三、快速集成
第一步:將下載的SDK解壓後導入到您的工程中,見下圖 :
![Sharesdk Swift調用的方法](http://p2.ttnews.xyz/loading.gif)
注意:請務必在上述步驟中選擇“Create groups for any added folders”單選按鈕組。如果你選擇“Create folder references for any added folders”,一個藍色的文件夾引用將被添加到項目並且將無法找到它的資源
第二步:添加依賴庫 添加步驟見下圖
必須添加的依賴庫如下(Xcode 7 之後 *.dylib庫後綴名更改為*.tbd):
- libicucore.dylib
- libz.dylib
- libstdc++.dylib
- JavaScriptCore.framework
以下依賴庫根據社交平臺添加:
新浪微博SDK依賴庫
- ImageIO.framework
- libsqlite3.dylib
QQ好友和QQ空間SDK依賴庫
- libsqlite3.dylib
- libsqlite3.dylib
Instagram需要依賴庫
- AssetsLibrary.framework
- Photos.framework
美拍需要依賴庫
- AssetsLibrary.framework
第三步:設置ShareSDK的Appkey並初始化對應的第三方社交平臺
在項目工程的Info.plist 中如圖增加 MOBAppkey 和 MOBAppSecret 兩個字段
在 MOBAppkey中 設置ShareSDK的appKey,如果尚未在ShareSDK官網註冊過App,請移步到登錄後臺進行應用註冊。
友情提示:如果您同時多個MOBSDK產品 在info.plist中的設置一次就可以了。
第四步:新建Header File,並建立橋接:
建立橋接(重要:這個橋接文件中寫入OC代碼的頭文件之後,Swift代碼就可以調用OC的代碼了,放大可看大圖步驟):
第五步:打開橋接文件(ShareSDK-Bridging-Header.h)導入OC文件頭
打開ShareSDK-Bridging-Header.h,導入OC代碼文件頭,示例:
#import
#import
#import
//騰訊SDK頭文件
#import
#import
#import "WXApi.h"
//新浪微博SDK頭文件
#import “WeiboSDK.h"
//人人SDK頭文件
#import
//Kakao SDK頭文件
#import
//支付寶SDK
#import "APOpenAPI.h"
第六步:初始化社交平臺
打開AppDelegate.swift文件
在 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool 中調用registerApp方法來初始化SDK並且初始化第三方平臺
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
/**
* 初始化ShareSDK應用
*
* @param activePlatforms 使用的分享平臺集合,如:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeTencentWeibo)];
* @param importHandler 導入回調處理,當某個平臺的功能需要依賴原平臺提供的SDK支持時,需要在此方法中對原平臺SDK進行導入操作。具體的導入方式可以參考ShareSDKConnector.framework中所提供的方法。
* @param configurationHandler 配置回調處理,在此方法中根據設置的platformType來填充應用配置信息
*/
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:
//設置新浪微博應用信息,其中authType設置為使用SSO+Web形式授權
appInfo?.ssdkSetupSinaWeibo(byAppKey: "568898243",
appSecret: "38a4f8204cc784f81f9f0daaf31e02e3",
redirectUri: "http://www.sharesdk.cn",
authType: SSDKAuthTypeBoth)
case SSDKPlatformType.typeWechat:
appInfo?.ssdkSetupWeChat(byAppId: "wx4868b35061f87885",
appSecret: "64020361b8ec4c99936c0e3999a9f249")
case SSDKPlatformType.typeQQ:
//設置QQ應用信息
appInfo?.ssdkSetupQQ(byAppId: "100371282",
appKey: "aed9b0303e3ed1e27bae87c33761161d",
authType: SSDKAuthTypeWeb)
default:
break
}
})
return true
}
}
第六步:添加實現代碼
打開需要集成分享功能的視圖源碼,把如下代碼複製並粘貼到你要分享的位置,例如到響應分享按鈕的方法中。並且修改相應的參數即可。
// 1.創建分享參數
let shareParames = NSMutableDictionary()
shareParames.ssdkSetupShareParams(byText: "分享內容",
images : UIImage(named: "shareImg.png"),
url : NSURL(string:"http://mob.com") as URL!,
title : "分享標題",
type : SSDKContentType.image)
//2.進行分享
ShareSDK.share(SSDKPlatformType.typeSinaWeibo, parameters: shareParames) { (state : SSDKResponseState, nil, entity : SSDKContentEntity?, error :Error?) in
switch state{
case SSDKResponseState.success: print("分享成功")
case SSDKResponseState.fail: print("授權失敗,錯誤描述:\(error)")
case SSDKResponseState.cancel: print("操作取消")
default:
break
}
}
編譯並運行後,點擊分享按鈕就成功發送到社交平臺的話說明你已經基本集成成功了。但是,為了使您的用戶有更好的分享體驗,以及您的應用有更多的分享量,更好地在社交平臺上傳播,我們建議您參考“進階功能”的指引進行SSO(免登錄)和更多社交平臺的設置。
在微信開放平臺(http://open.weixin.qq.com/ )註冊應用並取得應用的AppID,然後打開下圖位置,在URL Types中添加微信AppID
先在ShareSDK-Bridging-Header.h中導入微信的頭文件(上文介紹中已導入)
打開AppDelegate.swift文件,修改初始化方法(修改地方加粗顯示):
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
/**
* 初始化ShareSDK應用
*
* @param activePlatforms 使用的分享平臺集合,如:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeTencentWeibo)];
* @param importHandler 導入回調處理,當某個平臺的功能需要依賴原平臺提供的SDK支持時,需要在此方法中對原平臺SDK進行導入操作。具體的導入方式可以參考ShareSDKConnector.framework中所提供的方法。
* @param configurationHandler 配置回調處理,在此方法中根據設置的platformType來填充應用配置信息
*/
ShareSDK.registerActivePlatforms(
[ SSDKPlatformType.typeWechat.rawValue],
// onImport 裡的代碼,需要連接社交平臺SDK時觸發
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:
appInfo?.ssdkSetupWeChat(byAppId: "wx4868b35061f87885",
appSecret: "64020361b8ec4c99936c0e3999a9f249")
default:
break
}
})
return true
}
}
可選:支持QQ所需的相關配置及代碼
登錄QQ互聯(http://connect.qq.com/ )註冊成為開發者並登記應用取得AppId,然後打開下圖位置,在URL Types中添加QQ的AppID,其格式為:”QQ” + AppId的16進制(如果appId轉換的16進制數不夠8位則在前面補0,如轉換的是:5FB8B52,則最終填入為:QQ05FB8B52 注意:轉換後的字母要大寫)
轉換16進制的方法:echo ‘ibase=10;obase=16;801312852′|bc,其中801312852為QQ的AppID,見下圖
先在ShareSDK-Bridging-Header.h中導入QQ的頭文件(上文介紹中已導入)
打開AppDelegate.swift文件,修改初始化方法(修改地方加粗顯示):
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
/**
* 初始化ShareSDK應用
*
* @param activePlatforms 使用的分享平臺集合,如:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeTencentWeibo)];
* @param importHandler 導入回調處理,當某個平臺的功能需要依賴原平臺提供的SDK支持時,需要在此方法中對原平臺SDK進行導入操作。具體的導入方式可以參考ShareSDKConnector.framework中所提供的方法。
* @param configurationHandler 配置回調處理,在此方法中根據設置的platformType來填充應用配置信息
*/
ShareSDK.registerActivePlatforms(
[SSDKPlatformType.typeQQ.rawValue],
// onImport 裡的代碼,需要連接社交平臺SDK時觸發
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:
//設置QQ應用信息
appInfo?.ssdkSetupQQ(byAppId: "100371282",
appKey: "aed9b0303e3ed1e27bae87c33761161d",
authType: SSDKAuthTypeWeb)
default:
break
}
})
return true
}
}
可選:配置新浪微博、Facebook的SSO
登錄新浪微博和facebook的開放平臺,獲取AppID 。新浪微博的url scheme的設置格式為wb+AppID,facebook的設置格式為fb+AppID。具體參考下圖:
附:目前的新浪微博SDK需要在項目的Build Settings中的Other Linker Flags添加”-ObjC”,如果不配置有可能會崩潰。步驟如下:
當新浪微博需要客戶端分享或者增加關注微博的功能,需要打開工程中的*AppDelegate.m(*代表你的工程名字)文件,導入新浪微博SDK的頭文件並增加新浪微博的外部庫文件接口:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
/**
* 初始化ShareSDK應用
*
* @param activePlatforms 使用的分享平臺集合,如:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeTencentWeibo)];
* @param importHandler 導入回調處理,當某個平臺的功能需要依賴原平臺提供的SDK支持時,需要在此方法中對原平臺SDK進行導入操作。具體的導入方式可以參考ShareSDKConnector.framework中所提供的方法。
* @param configurationHandler 配置回調處理,在此方法中根據設置的platformType來填充應用配置信息
*/
ShareSDK.registerActivePlatforms(
[ SSDKPlatformType.typeSinaWeibo.rawValue],
// onImport 裡的代碼,需要連接社交平臺SDK時觸發
onImport: {(platform : SSDKPlatformType) -> Void in
switch platform
{
case SSDKPlatformType.typeSinaWeibo:
ShareSDKConnector.connectWeibo(WeiboSDK.classForCoder())
default:
break
}
},
onConfiguration: {(platform : SSDKPlatformType , appInfo : NSMutableDictionary?) -> Void in
switch platform
{
case SSDKPlatformType.typeSinaWeibo:
//設置新浪微博應用信息,其中authType設置為使用SSO+Web形式授權
appInfo?.ssdkSetupSinaWeibo(byAppKey: "568898243",
appSecret: "38a4f8204cc784f81f9f0daaf31e02e3",
redirectUri: "http://www.sharesdk.cn",
authType: SSDKAuthTypeBoth)
default:
break
}
})
return true
}
}
{!-- PGC_COLUMN --}閱讀更多 Mob開發者服務平臺 的文章