iPhoneでBacklogのAPI を使う
自分みたいな初心者向けに iPhone開発でBacklogのAPIを使う手順をまとめてみた。
1:CocoaPodsのインストール
CocoaPodとはでのライブラリの利用を著しく簡単にしてくれる便利なやつです。
ググってくれれば良い記事がたくさんあると思いますので詳細は割愛。
初めてのCocoaPodsだったら 以下のコードをターミナルで実行させる。
sudo gem install cocoapods
pod setup
そうすると、~/.cocoapods が作成されます。
もし、今後 cocoapods を利用してエラーを吐き続けた場合は
rm -rf ~/.cocoapods
を実行して消去して、再インストールしまいましょう。
2:Podfileを作成してライブラリをインストール
Xcodeプロジェクトのディレクトリの直下で以下のコマンドを実行する
cd ~/Xcode/[BacklogのAPIを利用するプロジェクト名]
touch Podfile
Podfileに以下の内容を書き込む
platform :ios,'7.0'
pod 'xmlrpc', '~> 2.3'
pod 'SHXMLParser', '~> 1.1.0'
最後に以下のコマンドを実行させる
pod install
しばらく待てばライブラリの導入ができあがったプロジェクトファイルが完成。
すげー便利です。
以下のコマンドでプロジェクトを開きましょう
open *.xcworkspace
すると、以下のような画面がでます。
自分が作成したプロジェクト以外に「Podsプロジェクト」があればOKです。
3:通信に必要なコードを書く
まず、てきとーなヘッダーファイル(~.hの奴)に
#import "XMLRPC.h"
#import "SHXMLParser.h"
を記入してインポートします。
同じヘッダーファイルに
<XMLRPCConnectionDelegate>を以下のように書き込みましょう。
次にメソッドファイル(~.m)についてです。
以下のメソッドがデリゲートメソッドなので記入します。
#pragma mark -
#pragma mark XMLRPC Delegate
-(void)request:(XMLRPCRequest *)requestdidReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
NSURLCredential* credential =
[NSURLCredential credentialWithUser:@"USER_ID_HERE" password:@"PASSWORD_HERE"
persistence:NSURLCredentialPersistencePermanent];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
-(void)request:(XMLRPCRequest *)request didReceiveResponse:(XMLRPCResponse *)response{
SHXMLParser *parser = [[SHXMLParser alloc] init];
NSData *dataUTF8 = [response.body dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *resultObject = [parser parseData:dataUTF8];
NSLog(@"%@",[resultObject description]);
}
-(BOOL)request:(XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace{ return YES; }
-(void)request:(XMLRPCRequest *)request didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{ }
-(void)request:(XMLRPCRequest *)request didFailWithError:(NSError *)error{ }
-(void)request:(XMLRPCRequest *)request didSendBodyData:(float)percent{ }
赤字の部分がBasic認証をやってくれてるコードです。
赤字のUSER_IDとPASSWORDには、
普段Backlogにログインする際に使っているユーザIDとパスワードを入力。
青字の部分では、受信したXMLのデータをNSDictionaryに変換してます。
最後に、同じメソッドファイルにBacklogのAPIのリクエストを投げるコードを記入。
#pragma mark -
#pragma mark public method
-(void)sendRequest{
NSString *spaceName = [NSString stringWithFormat:@"YOUR_SPACE_ID_HERE"];
NSString *stringUrl = [NSString stringWithFormat:@"https://%@.backlog.jp/XML-RPC",spaceName];
NSURL *URL = [NSURL URLWithString: stringUrl];
XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL];
XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager];
[request setMethod: @"backlog.getProjects" withParameter:nil];
[manager spawnConnectionWithXMLRPCRequest: request delegate:self];
}
これでOKです。ではでは。