微博分享iOS实现
SDK版本3.3.2 測(cè)試時(shí)間20220329
1.首先要有APPKey,這個(gè)不歸我管,沒有要自行申請(qǐng)
2.代碼實(shí)現(xiàn):
授權(quán)代碼:假設(shè)類名是 WeiBoShare
+(void)WeiBoAuth { #ifdef DEBUG[WeiboSDK enableDebugMode:YES]; #endifif ([WeiboSDK isWeiboAppInstalled]) {NSLog(@"weibo installed");}else{NSLog(@"weibo not installed");}[WeiboSDK banGetIdfa:NO]; //不要獲取IDFA[WeiboSDK registerApp:WeiBoAPPID universalLink:WeiBoUlink]; //UniversalLink跟申請(qǐng)微信的配置差不多,微博這邊壓根就沒啥指導(dǎo),可以去微信開放平臺(tái)參考一下。#ifdef DEBUG //下面這行是測(cè)試是否已經(jīng)連接成功。在打開app的時(shí)候可以看到連接圖標(biāo),調(diào)用微博的。調(diào)通后不需要這句。[WeiboSDK checkUniversalLink:^(WBULCheckStep step, NSError * _Nullable error) {NSLog(@"111step=%ld error=%@",step,error);}]; #endif}在AppDelegate.m里面的didFinishLaunchingWithOptions函數(shù)調(diào)用:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {//----[WeiBoShare WeiBoAuth];//----- }需要實(shí)現(xiàn)的反饋函數(shù)(可以放AppDelegate.m,也可以指定Delegate):
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request {NSLog(@"return:%@",request); }- (void)didReceiveWeiboResponse:(WBBaseResponse *)response { //從微博返回的一些信息,對(duì)于分享沒多大意義 } //回調(diào)需要考慮2種情況,例子簡(jiǎn)單,我都丟AppDeletege.m,注意 #import "WeiBoSDK.h"//設(shè)置Universal Links系統(tǒng)回調(diào) - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{return [WeiboSDK handleOpenUniversalLink:userActivity delegate:(id)self]; }- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {return [WeiboSDK handleOpenURL:url delegate:self]; }分享網(wǎng)頁(yè):
-(void)shareWeiBo:(NSDictionary *)info{if (![WeiboSDK isWeiboAppInstalled]) {return;}if (![WeiboSDK isCanShareInWeiboAPP]) {return;}WBMessageObject *message = [WBMessageObject message];NSString *title = info[@"title"];NSString *desc = info[@"desc"];NSString *link = info[@"link"];//聽說(shuō)WBWebpageObject沒法用,到時(shí)候只能用這個(gè)text接口了,3.3.2版本還能用WBWebpageObject,只不過(guò)樣式很挫。message.text = @""; //這里不填寫,貌似跳不到微博編輯界面;NSString *thumb_str = info[@"thumb"];NSURL *thumb_url = [NSURL URLWithString:thumb_str];NSData *orgData = nil;if (thumb_url) {orgData = [NSData dataWithContentsOfURL:thumb_url];}WBWebpageObject *pageObj = [[WBWebpageObject alloc] init];pageObj.objectID = [NSString stringWithFormat:@"%lld",(long long)[NSDate date].timeIntervalSince1970*1000];pageObj.scheme = link; //說(shuō)是回調(diào)的網(wǎng)頁(yè),但是不知道啥用pageObj.title = title;pageObj.description = desc;pageObj.webpageUrl = link; //這里很坑,說(shuō)是棄用了,但是如果不傳遞參數(shù)就會(huì)報(bào)錯(cuò)。NSData *resData = orgData; //32k限制,這里沒寫縮放圖片的代碼pageObj.thumbnailData = resData;// 圖片分享//WBImageObject *imageObj = [WBImageObject object];//imageObj.imageData = resData;//message.imageObject = imageObj;message.mediaObject = pageObj;//分享多媒體,數(shù)據(jù)對(duì)象類為WBBaseMediaObject (已經(jīng)棄用,不必實(shí)現(xiàn)這段代碼)WBSendMessageToWeiboRequest *request =[WBSendMessageToWeiboRequest requestWithMessage:message];[WeiboSDK sendRequest:request completion:^(BOOL success) {NSLog(@"success=%@",success?@"true":@"false");}];}見過(guò)微信SDK恨的牙癢癢,但是調(diào)通后用的還可以,但是微博分享SDK做的很差,這個(gè)啥功能都砍了,啥都要💰,另外讓我對(duì)微博觀感差的就是隨意關(guān)聯(lián)了個(gè)惡心的號(hào)到我手機(jī)號(hào),還是被封殺了的,弄的我調(diào)試還得換新號(hào),吐血三升。。。
最后關(guān)于info.plist設(shè)置:
這個(gè)版本不需要太多,只需要下面兩個(gè)key上填點(diǎn)就搞定,NSAppTransportSecurity已經(jīng)不需要配置。
<key>LSApplicationQueriesSchemes</key><array><string>sinaweibo</string><string>sinaweibohd</string><string>sinaweibosso</string><string>sinaweibohdsso</string><string>weibosdk</string><string>weibosdk2.5</string><string>weibosdk3.3</string></array><key>CFBundleURLTypes</key><array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>weibo</string><key>CFBundleURLSchemes</key><array><string>wb{微博APPID}</string></array></dict></array>20220330更新:
WBWebpageObject目測(cè)太挫了,還是用文字+圖片的形式更帥氣。
//..... 前省略。。。message.text = [NSString stringWithFormat:@"%@\n%@\n%@",title,desc,link];WBImageObject *imageObj = [WBImageObject object];imageObj.imageData = orgData;imageObj.delegate = (id)self;message.imageObject = imageObj; //.....總結(jié)
- 上一篇: 斯坦福大学 iOS 开发公开课总结
- 下一篇: Failed to connect to