微博分享iOS实现
SDK版本3.3.2 測試時間20220329
1.首先要有APPKey,這個不歸我管,沒有要自行申請
2.代碼實現:
授權代碼:假設類名是 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跟申請微信的配置差不多,微博這邊壓根就沒啥指導,可以去微信開放平臺參考一下。#ifdef DEBUG //下面這行是測試是否已經連接成功。在打開app的時候可以看到連接圖標,調用微博的。調通后不需要這句。[WeiboSDK checkUniversalLink:^(WBULCheckStep step, NSError * _Nullable error) {NSLog(@"111step=%ld error=%@",step,error);}]; #endif}在AppDelegate.m里面的didFinishLaunchingWithOptions函數調用:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {//----[WeiBoShare WeiBoAuth];//----- }需要實現的反饋函數(可以放AppDelegate.m,也可以指定Delegate):
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request {NSLog(@"return:%@",request); }- (void)didReceiveWeiboResponse:(WBBaseResponse *)response { //從微博返回的一些信息,對于分享沒多大意義 } //回調需要考慮2種情況,例子簡單,我都丟AppDeletege.m,注意 #import "WeiBoSDK.h"//設置Universal Links系統回調 - (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]; }分享網頁:
-(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"];//聽說WBWebpageObject沒法用,到時候只能用這個text接口了,3.3.2版本還能用WBWebpageObject,只不過樣式很挫。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; //說是回調的網頁,但是不知道啥用pageObj.title = title;pageObj.description = desc;pageObj.webpageUrl = link; //這里很坑,說是棄用了,但是如果不傳遞參數就會報錯。NSData *resData = orgData; //32k限制,這里沒寫縮放圖片的代碼pageObj.thumbnailData = resData;// 圖片分享//WBImageObject *imageObj = [WBImageObject object];//imageObj.imageData = resData;//message.imageObject = imageObj;message.mediaObject = pageObj;//分享多媒體,數據對象類為WBBaseMediaObject (已經棄用,不必實現這段代碼)WBSendMessageToWeiboRequest *request =[WBSendMessageToWeiboRequest requestWithMessage:message];[WeiboSDK sendRequest:request completion:^(BOOL success) {NSLog(@"success=%@",success?@"true":@"false");}];}見過微信SDK恨的牙癢癢,但是調通后用的還可以,但是微博分享SDK做的很差,這個啥功能都砍了,啥都要💰,另外讓我對微博觀感差的就是隨意關聯了個惡心的號到我手機號,還是被封殺了的,弄的我調試還得換新號,吐血三升。。。
最后關于info.plist設置:
這個版本不需要太多,只需要下面兩個key上填點就搞定,NSAppTransportSecurity已經不需要配置。
<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目測太挫了,還是用文字+圖片的形式更帥氣。
//..... 前省略。。。message.text = [NSString stringWithFormat:@"%@\n%@\n%@",title,desc,link];WBImageObject *imageObj = [WBImageObject object];imageObj.imageData = orgData;imageObj.delegate = (id)self;message.imageObject = imageObj; //.....總結
- 上一篇: 斯坦福大学 iOS 开发公开课总结
- 下一篇: Failed to connect to