iOS5のTwitter APIの使い方

iOS5からOSレベルでTwitterがサポートされました。

これによって、つぶやくアプリが簡単に作れるようになりました。

Taiatariも最新バージョンではスコアを簡単につぶやく機能を実装しています。

iOS5も正式公開となったので、アプリでTwitter APIを利用する方法をメモっておきます。

iOS5のTwitter APIを使うと、アプリに簡単にTwitterの機能を実装できます。

特に面倒は認証に関する処理はOSにお任せなので、特に自前で実装する必要はありません。

アプリからTweetするには2つの方法があります。

ひとつはiOSで用意されたTwitterのダイアログを表示して、ユーザーにつぶやきを入力させる方法。

Safariからつぶやく時などと同様にこんな画面を表示してつぶやかせる方法です。

これをアプリから出すのは簡単です。こんな感じ。

TWTweetComposeViewController *Tweeter = [[TWTweetComposeViewController alloc] init];
[Tweeter setInitialText:twittertext];
[self presentModalViewController:Tweeter animated:YES];

Tweeter.completionHandler = ^(TWTweetComposeViewControllerResult result) {
switch (result)
{
case TWTweetComposeViewControllerResultCancelled:
//NSLog(@”Twitter Result: canceled”);
break;
case TWTweetComposeViewControllerResultDone:
//NSLog(@”Twitter Result: sent”);
break;
default:
//NSLog(@”Twitter Result: sent”);
break;
}
[self dismissModalViewControllerAnimated:YES];
};
[Tweeter release];

簡単ですね。2行目のtwittertextに文字列を設定しておけば、Twitterの画面にメッセージがプリセットされます。

Taiatariでは別な方法を使っています。

Tweetボタンを押すと、つぶやきを入力する画面は表示せずに、あらかじめ決められたメッセージが自動的につぶやかれます。

この場合はこんな感じです。

NSString *twittertext; //←つぶやくメッセージを設定しておく

if ([[[UIDevice currentDevice] systemVersion] floatValue] < 5.0) {

NSLog(@”Twitter API not available, please upgrade to iOS 5″);

}else{

}

NSDictionary *tparam = [NSDictionary dictionaryWithObject:twittertext forKey:@”status”];

NSURL *turl = [NSURL URLWithString:@”https://api.twitter.com/1/statuses/update.json”];

TWRequest *updateProfile = [[TWRequest alloc] initWithURL:turl parameters:tparam

requestMethod:TWRequestMethodPOST];

if (twAccount == nil) {

NSLog(@”Can’t tweet”);

return;

}

updateProfile.account = twAccount;

TWRequestHandler requestHandler = ^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)

{

dispatch_async(dispatch_get_main_queue(), ^{

if (error != nil) {

//error

} else {

//success

}

});

};

[updateProfile performRequestWithHandler:requestHandler];

}

 

いずれの方法でも、アプリからTwitter機能を利用する場合は、アプリがiOSで設定したTwitterのアカウントを使うことをユーザーが許可する必要があります。Twitter機能を使うアプリをはじめて起動したときにこんなメッセージが表示されるので、許可しないとアプリはTwitterを利用できません。

また、アプリからTwitterを使う場合iPhone側で予めTwitterのアカウント情報を設定しておく必要があります。

設定していなかった場合は、勝手に設定画面に飛ばされます。

順番が逆になってしまいましたが、Twitterのアカウントを使用するための準備がしたのコードです。

事前にこの処理をしておく必要があります。viewWillAppearあたりでやっておくのがいいと思います。

//Twitter Account
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 5.0) {
NSLog(@”Twitter API not available, please upgrade to iOS 5″);
} else {
accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:
^(BOOL granted, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (granted) {
NSArray *twitterAccounts = [accountStore accountsWithAccountType:accountType];
if (twitterAccounts.count > 0)
{
twAccount = [[twitterAccounts objectAtIndex:0] retain];
NSLog(@”Twitter account access granted:%@”,[twAccount username]);
} else {
twAccount = nil;
NSLog(@”Twitter account nothing”);
}
} else {
twAccount = nil;
NSLog(@”Twitter account access denied”);
}
});
}];
}

ここで使っているACAccountStoreもiOS5で追加されたものだと思います。

アカウント情報にアクセスするためのAPIで、初期化の後にACAccountTypeIdentifierTwitterでTwitterのアカウントを指定してます。

いまのところ指定できるのはTwitterのアカウントだけのようですが、いずれTwitter以外のアカウントもOSレベルでサポートされてアプリから使えるようになるのかもしれませんね。

 

Tags: , , ,