【iPhone】【Objective-C】Twitterにつぶやきをポストする

Posted by: daichi  /  Category: iphone開発

最近Twitter熱が僕の回りでも加速してきたけど、アプリ標準機能として搭載すべく、iPhoneアプリ内でtwitterポストするためのサンプルコードを書いてみた。

Twitter API Wiki / Twitter REST API Method: statuses update

詳細は公式Wikiに譲るとして、最低限のAPI仕様は

  1. http://twitter.com/statuses/update.xmlへ
  2. ベーシック認証つきで
  3. POSTメソッドを使い
  4. statusパラメータ=「つぶやき」のリクエストを投げる
上記4点が満たされていればOK。

そんな条件を満たしたポストコードが以下。



?View Code OBJECTIVE-C
- (void)update:(NSString *)tweet {
	static NSString *udpateUrl = @"http://%@:%@@twitter.com/statuses/update.xml";
 
	NSString *url;
	NSString *postString;
	NSMutableURLRequest *request;
 
	url = [NSString stringWithFormat:udpateUrl, username,password];
	postString = [NSString stringWithFormat:@"status=%@&source=%@",
						[tweet stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
						clientName]; 
 
	url = [url stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
	request = [[[NSMutableURLRequest alloc] init] autorelease];
	[request setURL:[NSURL URLWithString:url]];
	[request setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData];
	[request setTimeoutInterval:20];
	[request setHTTPShouldHandleCookies:FALSE];
        [request setHTTPMethod:@"POST"];
	if (postString) {
		[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
	}
	NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
 
}


まず接続先URLとして
http://%@:%@@twitter.com/statuses/update.xml
を宣言。

ドメイン名前に”%@:%@”があるのは、後でそれぞれユーザ名、パスワードを挿入して、URLによるベーシック認証を行うため。

その後、つぶやき文字tweetをUTF-8でエンコードしてリクエストのBodyを用意。

BodyにはrequestのsetHTTPBodyでセット。
セットする際に、NSDataに変換するのを忘れずに。

最後にリクエストを投げてポスト完了。

事前にtwitterクライアント名を申請しておくと、パラメータsourceが有効になって、ポストしたクライアント名を送ることができるらしい。

はやりのPush Notification搭載のiTwitterはまだ「web」からの投稿扱いになってるっぽい。

ネットワーク接続エラー対応等は別で必要。

参考

takuma104’s ntlniph at master – GitHub

タグ: API, iphone, NSString, objecti, objective-c, Push Notification, twitter, XML, アプリ, 変換

関連する投稿

4 Responses to “【iPhone】【Objective-C】Twitterにつぶやきをポストする”

  1. 2009/07/07 « Twitter Daily Says:

    [...] 【iPhone】【Objective-C】Twitterにつぶやきをポストする | iphoneアプリで稼げるのか [...]

  2. iPhone&ガジェ 8casetteBLOG Says:

    [...] ■iPhoneアプリでTwitterにつぶやきをポストする 【iPhone】【Objective-C】Twitterにつぶやきをポストする | iphoneアプリで稼げるのか [...]

  3. いす Says:

    はじめまして。最近iphoneプログラミングを初めたものです。

    上記のソースで質問があるのですが、clientNameにはどのような値が入るのでしょうか?

  4. daichi Says:

    clientNameは自分のアプリ名でよいと思います。
    が、上記のBasic認証を使ったアクセスは6月で廃止されるので、xAuth対応することをお勧めします。

コメント

Additional comments powered by BackType

Get Adobe Flash playerPlugin by wpburn.com wordpress themes