swift 單獨集成QQ分享

基于xcode8.3.1 ?適配ios10以上系統(tǒng)

1.首先在騰訊開放平臺注冊自己的app,拿到appID和appKey(沒有審核不通過的也可以測試)

2.下載最新的完整版的SDK http://wiki.open.qq.com/wiki/IOS_API調用說明#1._iOS_SDK.E7.8E.AF.E5.A2.83.E6.90.AD.E5.BB.BA??

也同時下載iOS SDK環(huán)境搭建和iOS SDK API使用說明(特別說明:僅供參考版本太舊了)

3.將SDK里邊的TencentOpenApi_IOS_Bundle.bundle和TencentOpenAPI.framework(靜態(tài)庫)拖入到工程中

?

4.添加靜態(tài)庫(SDK中還需要手動導入.bundle文件,在這里不用了,系統(tǒng)已經自動找到了)

添加SDK依賴的系統(tǒng)庫文件。分別是”Security.framework”,“l(fā)ibiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“l(fā)ibsqlite3.dylib”、“CoreTelephony.framework”、“l(fā)ibstdc++.dylib”、“l(fā)ibz.dylib”。

5.在Build Settings->Linking配置區(qū),給“Other Linker Flags”配置項添加屬性值“-fobjc-arc

6.配置UrlScheme ? tencent+你的appID

7.配置白名單(這里我看有的需要配置20幾個白名單,可能跟需求的是登錄還是分享有關.大家可以根據自己的需求去網上找,我只是添加了這幾個可以實現(xiàn)分享了

(注意:在info里邊有些需要配置bundledisplayname,我這里沒有設置也通過,需要配置ATS允許http訪問)

8.使用橋接文件導入頭文件

#import ?<TencentOpenAPI/TencentOAuth.h>

#import <TencentOpenAPI/QQApiinterface.h>

#import <TencentOpenAPI/QQApiInterfaceObject.h>

#import <TencentOpenAPI/TencentOAuthObject.h>

#import<TencentOpenAPI/sdkdef.h>


9.在appdelegate里邊實現(xiàn)以下的方法

func application(_ app: UIApplication, open url: URL,

options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

return TencentOAuth.handleOpen(url)

}

func application(_ application: UIApplication, handleOpen url: URL) -> Bool {

return TencentOAuth.handleOpen(url)

}

10.在點擊分享按鈕的里邊創(chuàng)建授權 ?這里如果只是分享的話delegate可以設置為nil

? ?1. ? ?_ = TencentOAuth.init(appId: tencentID, andDelegate: nil)

(在分享以前首先判斷用戶是否安裝了qq或者版本是否支持)

QQApiInterface.isQQInstalled()

QQApiInterface.isQQSupportApi()

? ?2. 創(chuàng)建需要分享的文本 ?圖片 ?新聞 ?視頻 ??

(只有新聞和視頻,音頻才能分享到qq空間,其他的只能分享給好友,否則會分享不成功)請參考以下圖片

分享文本實例

//判斷文本是否超長 ?qq規(guī)定不能超過1530個字符

if txt.length >= Int(1530) {

? ? ? ? let end = txt.endIndex

? ? ? ?let sub = txt.index(end, offsetBy: 1500 - txt.length)

? ? ? ?txt = txt.substring(to:sub) + "..."

}

? ?let txtObj = QQApiTextObject(text: txt)

? ?txtObj?.cflag = UInt64(kQQAPICtrlFlagQZoneShareForbid)

? ? let req = SendMessageToQQReq(content: txtObj)

? ? let res = QQApiInterface.send(req)

? ? handleSendResult(sendResult: res)

}


//處理分享后的結果

func handleSendResult(sendResult:QQApiSendResultCode){

var message = ""

switch(sendResult){

case EQQAPIAPPNOTREGISTED:

message = "App未注冊"

case EQQAPIMESSAGECONTENTINVALID, EQQAPIMESSAGECONTENTNULL,

EQQAPIMESSAGETYPEINVALID:

message = "發(fā)送參數(shù)錯誤"

case EQQAPIQQNOTINSTALLED:

message = "QQ未安裝"

case EQQAPIQQNOTSUPPORTAPI:

message = "API接口不支持"

case EQQAPISENDFAILD:

message = "發(fā)送失敗"

case EQQAPIQZONENOTSUPPORTTEXT:

message = "空間分享不支持純文本分享,請使用圖文分享"

case EQQAPIQZONENOTSUPPORTIMAGE:

message = "空間分享不支持純圖片分享,請使用圖文分享"

default:

message = "發(fā)送成功"

}

print(message)

}

分享圖片實例

展示圖片不能大于5MB,預覽圖片不能大于1MB

?我試過了使用UIImagePNG方法轉成data不行, 使用UIImageJPEG的格式是可以

if let data = UIImageJPEGRepresentation(img, 1)? {

//預覽圖片不能大于1MB

if data.count >= 1048576? {

if let scaleData = UIImageJPEGRepresentation(img, 0.5)? {

preData = scaleData

}

}

let imgObj = QQApiImageObject(data: data, previewImageData: preData, title: tit, description: des)

//這里解釋一下cflag就是分享到哪里的限制 ?

/*

enum

{

kQQAPICtrlFlagQZoneShareOnStart = 0x01, ?//只有qq空間

kQQAPICtrlFlagQZoneShareForbid = 0x02, ?//除了qq空間

kQQAPICtrlFlagQQShare = 0x04, ? //qq所有的 ?默認的

kQQAPICtrlFlagQQShareFavorites = 0x08, //收藏

kQQAPICtrlFlagQQShareDataline = 0x10,? //數(shù)據線

};

*/

imgObj?.cflag = UInt64(kQQAPICtrlFlagQZoneShareForbid)

let req = SendMessageToQQReq(content: imgObj)

let res = QQApiInterface.send(req)

handleSendResult(sendResult: res)

}


還有其他的限制要求大家要注意:

URL地址,必填,最長512個字符

標題,最長128個字符

簡要描述,最長512個字符

預覽圖像數(shù)據,最大1M字節(jié)


如果以后有集成登錄的話,再接著給大家分享

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 這個過程其實很簡單,就是騰訊的文檔真的不敢恭維! 如果只是想把一段文字,或一張圖片分享到QQ(包括好友、群、討論組...
    iHTCboy閱讀 20,842評論 17 36
  • 導語: 第三方登錄和分享是現(xiàn)在App的「主流功能」,不管友盟,還是ShareSDK,都有很好的集成文檔,Pleas...
    面向copy編程的白丁閱讀 2,539評論 1 5
  • iOS支付 iOS支付分為兩類,第三方支付和應用內支付(內購)。 第三方支付包括:支付寶支付、微信支付、銀聯(lián)支付、...
    請輸入賬號名閱讀 6,478評論 3 22
  • 組件暫支持: 微信,QQ,圍脖,復制粘貼 集成微信相關的分享 按照官方文檔,集成sdkcompile 'com.t...
    Cosecant閱讀 1,394評論 3 7
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,604評論 19 139

友情鏈接更多精彩內容