Sharesdk Swift調用的方法

1、獲取appkey
如何在咱們的官網註冊應用獲得appkey。
2、下載SDK
獲取ShareSDK-iOS :解壓壓縮包以後結構如圖所示:


目錄結構 (使用時直接將SDK這個文件拖入工程)c++

SDKsql

  | —– Required( MOB 基礎公共庫目錄 )swift

        | —– MOBFoundation.framework:基礎功能框架。(必要)bash

  | —– ShareSDK ( ShareSDK 目錄 )微信

        | —– ShareSDK.framework:核心靜態庫。(必要)架構

        | —– Support (ShareSDK 各組件)app

              | —– Required ( 必要 )框架

                   | —– ShareSDK.bundle:ShareSDK資源文件。(必要)優化

                   | —– ShareSDKConnector.framework:用於ShareSDK框架與外部框架鏈接的代理框架插件。(使用第三方SDK時必要。)ui

              | —– PlatformSDK 第三方平臺SDK。(不須要的平臺的SDK可直接移除)

              | —– PlatformConnector 對ShareSDKConnector模塊架構進行優化,根據平臺進行分包。(不須要的平臺的庫能夠移除)

              | —– Optional ( 可選 )

                    | —– ShareSDKUI.bundle:分享菜單欄和分享編輯頁面資源包。(若是自定義這些UI可直接移除)

                    | —– ShareSDKExtension.framework:對ShareSDK功能的擴展框架插件。(主要提供第三方平臺登陸、 一鍵分享、截屏分享、搖一搖分享等相關功能。須要使用以上功能時必要。)

                    | —– ShareSDKUI.framework:分享菜單欄和分享編輯頁面。(若是自定義這些UI可直接移除)

                    | —– ShareSDKConfigFile.bundle:用xml來初始化或者構造分享參數的資源文件。(用代碼來初始化,構造分享參數可直接移除,下載的時候也是可根據本身的要求勾選下載的)

                    | —– ShareSDKConfigFile.framework:用xml來初始化,構造分享參數,使用的分享的方法庫。用代碼來初始化,構造分享參數可直接移除,下載的時候也是可根據本身的要求勾選下載的)

3、快速集成

第一步:將下載的SDK解壓後導入到您的工程中,見下圖 :


注意:請務必在上述步驟中選擇「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

微信SDK依賴庫

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 <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"

 #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
    }
}

複製代碼
相關文章
相關標籤/搜索