利用iOS API編寫簡單微博客戶端全過程
要編寫社交網絡客戶端程序,可以大體上分為4個主要的步驟
下麵我們按照這個流程,介紹一下:
1、引入Accounts和Social框架
工程中需要引入Accounts和Social框架,Accounts框架中有進行用戶賬戶認證所需類,Social框架中SLRequest類是我們所需要的。添加具體步驟是選擇工程中的TARGETS→WeiBo→Build Phases→Link Binary With Libraries,選擇右下角的“+”按鈕,打開框架和庫選擇對話框。
分別選擇Social.framework添加,再選擇Accounts.framework添加。
2、用戶賬戶認證
用戶賬戶認證使用ACAccount、ACAccountStore和ACAccountType類,ACAccount類是封裝用戶賬戶信息,這些信息存儲在賬戶數據庫中,ACAccountStore類用來管理賬戶數據庫,ACAccountType類描述了賬戶類型。
認證過程的模板代碼如下:
ACAccountStore *account = [[ACAccountStore alloc] init]; ① ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier: ACAccountTypeIdentifierSinaWeibo]; ② [account requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) ③ { if (granted == YES) ④ { NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType]; ⑤ if ([arrayOfAccounts count] > 0) ⑥ { <認證通過> } }; }];
3、發送請求
用戶認證通過就可以進行發送使用SLRequest對象發送請求,創建SLRequest對象可以使用類級構造方法requestForServiceType:requestMethod:URL:parameters:,下麵是代碼是創建SLRequest對象:
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeSinaWeibo requestMethod:SLRequestMethodGET URL:requestURL parameters:parameters]; 上麵的代碼還隻是創建了SLRequest對象,我們還需要為請求對象設置賬戶信息,使用下麵的語句: request.account = weiboAccount; weiboAccount賬戶信息是我們從用戶賬戶信息數據庫中獲得的,設置給請求對象的account屬性,然後才能提交給社交網絡服務器進行認證。 具體開始請求是通過調用SLRequest 的performRequestWithHandler:方法實現的,代碼如下: [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { <處理請求結果> }];
4、處理請求結果
請求結束會調用代碼塊,我們在代碼塊中處理請求結果。基本工作是解析數據,以及UI的更新等操作。這3個社交網絡服務返回的都是JSON格式數據,其中代碼塊中的responseData參數可以使用NSJSONSerialization解析JSON對象:
id jsonObj = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&err];
解析的jsonObj對象結構根據社交網絡服務的不同而不同,詳細參數情況請參考不同服務的開發者網站。
下麵我們通過一個實例介紹一下SLRequest的使用,在表視圖畫麵中,可以下拉刷新視圖,獲得最新的社交網絡服務信息。點擊畫麵導航欄的Action按鈕,會彈出撰寫信息的模態視圖(右圖所示),撰寫完成之後點擊“Save”按鈕發送信息,可以點擊“Cancel”按鈕取消發送。
出自《iOS網絡編程與雲端應用最佳實踐》作者:關東升 @tony_關東升
最後更新:2017-04-03 18:51:50