好脾氣的程序員也會一邊看騰訊的SDK一邊罵娘! ---- 一哥哥php
作完騰訊官方的集成才感覺到來自鵝廠的一萬點傷害,相比之下私覺得沒有比環信SDK更有愛的了,有事沒事都能騷擾在線客服,吐槽結束,下面介紹如何集成QQ的官方分享c++
1,在騰訊開放平臺申請分享須要使用的APPID (點擊我進入騰訊開發平臺)程序員
2,下載官方最新版本的SDK(進入下載頁面)sql
1,添加SDK依賴的系統庫文件。分別是」Security.framework」, 「libiconv.dylib」,「SystemConfiguration.framework」,「CoreGraphics.Framework」、「libsqlite3.dylib」、「CoreTelephony.framework」、「libstdc++.dylib」、「libz.dylib」。app
2,添加URL schemes,注意QQ的URL schemes爲 tencent + 你的appid測試
3,添加白名單(方法點此查看)url
1,AppDelegate.h中 導入頭文件#import <TencentOpenAPI/TencentOAuth.h>spa
2,遵循<QQApiInterfaceDelegate>協議3d
3,在didFinishLaunchingWithOptions方法中註冊:orm
TencentOAuth *OAuth = [[TencentOAuth alloc] initWithAppId:@"你的appid" andDelegate:nil];
4,重寫AppDelegate 的handleOpenURL和openURL方法
由於你不必定只集成QQ分享,因此在這兩個方法裏,須要作判斷,以下圖:
其中TENCENT_CONNECT_APP_KEY就是你的appid ,源碼爲
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
if ([url.absoluteString hasPrefix:[NSString stringWithFormat:@"tencent%@",TENCENT_CONNECT_APP_KEY]]) {
[QQApiInterface handleOpenURL:url delegate:self];
return [TencentOAuth HandleOpenURL:url];
}return YES;
}
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
if ([url.absoluteString hasPrefix:[NSString stringWithFormat:@"tencent%@",TENCENT_CONNECT_APP_KEY]]) {
[QQApiInterface handleOpenURL:url delegate:self];
return [TencentOAuth HandleOpenURL:url];
}
return YES;
}
5,進行分享:
代碼以下:
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURL *preimageUrl = [NSURL URLWithString:@"http://www.sizzee.com/index.php/catalog/product/view/id/55730/s/10196171/?SID=au0lhpg54f11nenmrjvhsh0rq6?uk=Y3VzdG9tZXJfaWQ9Mjc0fHByb2R1Y3RfaWQ9NTU3MzA"];
QQApiNewsObject* img = [QQApiNewsObject objectWithURL:url title:@"測試分享" description:[NSString stringWithFormat:@"分享內容------新聞URL對象分享 ------test"] previewImageURL:preimageUrl];
//請求幫助類,分享的全部基礎對象,都要封裝成這種請求對象。
SendMessageToQQReq* req = [SendMessageToQQReq reqWithContent:img];
QQApiSendResultCode sent = [QQApiInterface sendReq:req];
NSLog(@"QQApiSendResultCode %d",sent);
其中[QQApiInterface sendReq:req] 裏的sendReq爲發送到QQ好友列表,SendReqToQZone爲發送到QQ空間,詳細的方式能夠點擊QQApiInterface進行查看
至此,QQ分享就完成了,如下爲親身實遇的幾個bug:
1,QQApiSendResultCode 2 控制檯打印出這個錯誤說明沒有配置白名單
2,QQApiSendResultCode -2 這個錯誤是最值得罵孃的,固然捱罵的是鵝廠,我由於這個錯誤整整修了五天,最後排查出的結果居然是SDK錯了,多試試幾個版本的SDK就行了,坑爹呢?
老規矩,有問題下方留言或者評論,必定及時和你們探討,歡迎歡迎🙏