一、集成微博SDK
1.添加SDK文件
微博SDK
2.添加編譯選項
新浪微博 SDK 附帶的文檔中有這么一個說明:
在工程中引入靜態(tài)庫之后,需要在編譯時添加 -ObjC 編譯選項,避免靜態(tài)庫中類 加載 不全造成程序崩潰。方法:程序 Target->Buid Settings->Linking 下 Other Linker Flags 項添加 -ObjC
然而會崩潰查描,然后在網(wǎng)上看到遇到同樣崩潰錯誤的人有提到在編譯時添加 -all_load 編譯選項時也可以解決問題。
-all_load編譯選項
3.添加FrameWork文件到工程
FrameWork
二、使用微博分享
1.設(shè)置工程回調(diào)URL Schemes
什么是URL Schemes?
URL Schemes是蘋果給出的用來跳轉(zhuǎn)到系統(tǒng)應(yīng)用或者跳轉(zhuǎn)到別人的應(yīng)用的一種機制阁将。同時還可以在應(yīng)用之間傳數(shù)據(jù)。
備注:一個應(yīng)用是可以有多個URL Schemes的右遭。你可以再次點擊“+”來添加一個URL Schemes
如下圖所示:其中Identifier應(yīng)為自己的SSO授權(quán)回調(diào)地址做盅,URL Scheme則為"wb"+"app key"。
設(shè)置URL Schemes
2.添加URL Schemes白名單
iOS9以后窘哈,應(yīng)用需要在“Info.plist”中將要使用的URL Schemes列為白名單吹榴,才可正常檢查其他應(yīng)用是否安裝。
如下圖所示:在Info.plist中添加key為"LSApplicationQueriesSchemes" 滚婉,值為Array图筹。在Array中添加以下String類型的值:"sinaweibohd","sinaweibo"让腹,"weibosdk"远剩,"weibosdk2.5"
微博白名單
另附“QQ/QQ空間/支付寶/微信SDK”相關(guān)白名單
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 微信 URL Scheme 白名單-->
<string>wechat</string>
<string>weixin</string>
<!-- 新浪微博 URL Scheme 白名單-->
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<!-- QQ、Qzone URL Scheme 白名單-->
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkdataline</string>
<string>mqqopensdkgrouptribeshare</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqzoneopensdk</string>
<string>wtloginmqq</string>
<string>wtloginmqq2</string>
<string>mqqwpa</string>
<string>mqzone</string>
<string>mqzonev2</string>
<string>mqzoneshare</string>
<string>wtloginqzone</string>
<string>mqzonewx</string>
<string>mqzoneopensdkapiV2</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapi</string>
<string>mqzoneopensdk</string>
<!-- 支付寶 URL Scheme 白名單-->
<string>alipay</string>
<string>alipayshare</string>
</array>
3.代碼部分
(1)AppDelegate.m
注冊app
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//向微博客戶端程序注冊第三方應(yīng)用
[WeiboSDK registerApp:kAppKey];
//設(shè)置WeiboSDK的調(diào)試模式
[WeiboSDK enableDebugMode:YES];
// Override point for customization after application launch.
return YES;
}
在AppDelegate.m中復(fù)寫
將在從微博客戶端回到App時調(diào)用
//ios9以上
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<NSString *,id> *)options {
[WeiboSDK handleOpenURL:url delegate:self];
return YES;
}
//ios9 以下
- (BOOL)application:(UIApplication*)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{
[WeiboSDK handleOpenURL:url delegate:self];
return YES;
}
收到一個來自微博客戶端程序的響應(yīng)
#pragma mark -- WeiboSDKDelegate
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response {
if ([response isKindOfClass:WBSendMessageToWeiboResponse.class])
{
NSString *title = NSLocalizedString(@"發(fā)送結(jié)果", nil);
NSString *message = [NSString stringWithFormat:@"%@: %d\n%@: %@\n%@: %@", NSLocalizedString(@"響應(yīng)狀態(tài)", nil), (int)response.statusCode, NSLocalizedString(@"響應(yīng)UserInfo數(shù)據(jù)", nil), response.userInfo, NSLocalizedString(@"原請求UserInfo數(shù)據(jù)", nil),response.requestUserInfo];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
message:message
delegate:nil
cancelButtonTitle:NSLocalizedString(@"確定", nil)
otherButtonTitles:nil];
WBSendMessageToWeiboResponse* sendMessageToWeiboResponse = (WBSendMessageToWeiboResponse*)response;
[alert show];
}
}
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request {
}
(2)分享操作
WBMessageObject *wbmsg = [WBMessageObject message];
wbmsg.text = _textField.text;
WBImageObject *wbImg = [[WBImageObject alloc] init];
NSData *imageData = UIImagePNGRepresentation(_imageView.image);
wbImg.imageData = imageData;
wbmsg.imageObject = wbImg;
WBAuthorizeRequest *authRequest = [WBAuthorizeRequest request];
authRequest.redirectURI = @"http://www.sina.com";
authRequest.scope = @"all";
WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:wbmsg authInfo:authRequest access_token:nil];
/*app之間數(shù)據(jù)交互*/
// request.userInfo = @{@"ShareMessageFrom": @"ViewController",
// @"Other_Info_1": [NSNumber numberWithInt:123],
// @"Other_Info_2": @[@"obj1", @"obj2"],
// @"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
[WeiboSDK sendRequest:request];
這就是微博分享的環(huán)境搭建和基本使用的全部內(nèi)容了哨鸭。