iOS專案開發實戰——使用ShareSDK進行QQ和微信分享

乞力馬紮羅的雪CYF發表於2015-09-15

      ShareSDK是一款非常強大也非常方便的第三方分享API。在IOS平臺上使用ShareSDK可以方便的把你的內容分享到十幾個社交平臺上,這裡我們簡單介紹下如何分享到QQ和微信。

(1)申請QQ平臺和微信平臺的APP ID和APP KEY。詳見我的部落格《成為騰訊開發者——如何使用QQ開放平臺和微信開放平臺》。

(2)進入ShareSdk的官網 http://mob.com/#/index  。進行註冊,然後登陸。

(3)下載對應平臺的SDK。

(4)然後進入後臺,建立一個應用。如圖:


(5)應用建立完成後,進入後臺,可以看到有APP KEY和APP Secret。在後續的專案開發中將會用到。


(6)然後開始在Xcode建立一個應用,我以Swift為例,進行和OC的混合程式設計。我已經把ShareSDK上傳到百度網盤中,大家可以下載http://pan.baidu.com/s/1sjOLVnn。下載解壓後拖入到專案中即可。


(7)新增依賴庫。進入Build Phases-->Link Binary With Libraries進行新增。需要新增的依賴庫如下:


(8)然後需要建立一個橋接檔案。在橋接檔案中寫入如下程式碼:

#import <ShareSDK/ShareSDK.h>
#import "WXApi.h"
#import "WeiboSDK.h"
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
#import "WXApi.h"
#import <QZoneConnection/ISSQZoneApp.h>

(9)然後就可以寫程式碼了。在AppDelegate.swift中實現如下三個方法:

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    //各平臺申請key的方法可參閱:http://bbs.mob.com/forum.php?mod=viewthread&tid=275&page=1&extra=#pid860
    //1.初始化ShareSDK應用,字串"4a88b2fb067c"換成你申請的ShareSDK應用的Appkey,這個key來源於ShareSDK官網上申請獲得
    ShareSDK.registerApp("輸入你在ShareSDK官網上申請應用的APP KEY")
    
    /**---------------------------------------------------------**/
    
    //2.初始化新浪微博
//    ShareSDK.connectSinaWeiboWithAppKey("1916892007", appSecret: "0e5456c4c4380661c103acd38bc9a8f7", redirectUri: "http://www.nbdpc.gov.cn/", weiboSDKCls: WeiboSDK.classForCoder())
    //上面的方法會又客戶端跳客戶端,沒客戶端條web.
    
    //下面這方法,如果不想用新浪客戶端授權只用web的話就可以使用。
    
    //[ShareSDK connectSinaWeiboWithAppKey:<#(NSString *)#> appSecret:<#(NSString *)#> redirectUri:<#(NSString *)#>]
    
    /**---------------------------------------------------------**/
    
    //初始化微信,微信開放平臺上註冊應用
    ShareSDK.connectWeChatWithAppId("在微信平臺上申請的APP KEY",appSecret:"在微信平臺上申請的APP Secret",wechatCls:WXApi.classForCoder());
    
    //如果在分享選單中想取消微信收藏,可以初始化微信及微信朋友圈,取代上面整體初始化的方法
    //微信好友[ShareSDK connectWeChatSessionWithAppId:<#(NSString *)#> appSecret:<#(NSString *)#> wechatCls:<#(__unsafe_unretained Class)#>]
    //微信朋友圈[ShareSDK connectWeChatTimelineWithAppId:<#(NSString *)#> appSecret:<#(NSString *)#> wechatCls:<#(__unsafe_unretained Class)#>]
    
    /**---------------------------------------------------------**/
    
    //初始化QQ,QQ空間,使用同樣的key,請在騰訊開放平臺上申請,注意匯入標頭檔案:
    /**
    已經在橋街檔案ShareSDK-Bridging-Header.h中匯入
    
    #import <TencentOpenAPI/QQApiInterface.h>
    #import <TencentOpenAPI/TencentOAuth.h>
    **/
    //連線QQ應用
    ShareSDK.connectQQWithQZoneAppKey("在騰訊平臺上申請的APP ID", qqApiInterfaceCls: QQApiInterface.classForCoder(), tencentOAuthCls: TencentOAuth.classForCoder())
    //連線QQ空間應用
    ShareSDK.connectQZoneWithAppKey("在騰訊平臺上申請的APP ID", appSecret: "在騰訊平臺上申請的APP Secret", qqApiInterfaceCls: QQApiInterface.classForCoder(), tencentOAuthCls: TencentOAuth.classForCoder())
    
    
    
    /**---------------------------------------------------------**/
    
    return true
  }
  
  //新增兩個回撥方法,return的必須要ShareSDK的方法
  func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {
    
    return ShareSDK.handleOpenURL(url, wxDelegate: self)
  }
  
  func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject? ) -> Bool{
    
    return ShareSDK.handleOpenURL(url, sourceApplication: sourceApplication, annotation: annotation, wxDelegate: self)
  }

(10)然後新增一個按鈕的監聽事件。實現如下:

@IBAction func shareBarButtonItemPressed(sender: UIBarButtonItem) {
    
    //定製分享資訊
    var pic = NSBundle.mainBundle().pathForResource("appicon", ofType: "png")
    
    var publishContent : ISSContent =
    ShareSDK.content(這個是描述內容,
      defaultContent:"預設內容",
      image:ShareSDK.imageWithPath(pic),
      title:這個是標題,
      url:"這個是分享的連結",
      description:"這是一條測試資訊",
      mediaType:SSPublishContentMediaTypeNews)
    
    ShareSDK.showShareActionSheet(nil, shareList: nil, content: publishContent, statusBarTips: false, authOptions: nil, shareOptions: nil) { (ShareType, state:SSResponseState, statusInfo :ISSPlatformShareInfo!, error:ICMErrorInfo!, end:Bool) -> Void in
      
      if (state.value == SSResponseStateSuccess.value){
        println("分享成功")
      }else if (state.value == SSResponseStateFail.value){
        println("分享失敗,錯誤碼:\(error.errorCode()),錯誤描述:\(error.errorDescription())")
      }else if (state.value == SSResponseStateCancel.value){
        println("分享取消")
      }
      
    }
    
    
    
  }

(11)執行程式,點選按鈕,就可以實現分享。


     總結下,在ShareSDK官網上有相應的Demo和文件可以下載,這樣可以更加方便快捷的進行開發。


github主頁:https://github.com/chenyufeng1991  。歡迎大家訪問!

相關文章