初心者エンジニアが何か書く

〜技術ブログメイン〜

iPhoneでBacklogのAPI を使う

自分みたいな初心者向けに iPhone開発でBacklogのAPIを使う手順をまとめてみた。

  1. CocoaPodsをインストール
  2. Podfileを作成してXML-RPC通信のライブラリをインストール
  3. Basic認証するコード書く
  4. 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です。

f:id:inobo52:20140309014612p:plain

 

 

3:通信に必要なコードを書く

まず、てきとーなヘッダーファイル(~.hの奴)に

#import "XMLRPC.h"

#import "SHXMLParser.h"

 

を記入してインポートします。

同じヘッダーファイルに
<XMLRPCConnectionDelegate>を以下のように書き込みましょう。

f:id:inobo52:20140309014950p:plain

 

次にメソッドファイル(~.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です。ではでは。