「iOS 7 App Development Essentials (English Edition) [Kindle版]」
を参考に、iOSアプリケーションからTwitterにつぶやいてみる。本の方では、ツィート数を取得しているサンプルなので、リクエストが違うので注意。
-(void)tweet{ ACAccountStore *account = [[ACAccountStore alloc]init]; ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; [account requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted , NSError *error){ if(granted == YES) { NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType]; if( [arrayOfAccounts count] > 0){ ACAccount *twitterAccount = [arrayOfAccounts lastObject]; NSURL *requestURL = [NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/update.json"]; NSMutableDictionary *parameters = [[NSMutableDictionary alloc]init]; [parameters setObject:@"TEST日本語はどうかな?" forKey:@"status"]; SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:requestURL parameters:parameters]; postRequest.account = twitterAccount; [postRequest performRequestWithHandler: ^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSLog(@"send"); NSLog(@"error=%@",[error localizedDescription]); }]; } }else{ NSLog(@"Handle failure"); } }]; }
試したiPad miniにはTwitterのアカウントを二つ登録してあって、二つ目(実際に使用されるアカウント)のパスワードをTwitterアプリの方で設定していなかったため、ツィートが失敗していたのだが、ソース中のgranted値はYESを返していたし、変数errorは何も語らなかったので、理由がわかるのにちょっと時間が掛かってしまった。
結局のところ、非常に簡単にツィートできることがわかった。iOS6以降で有効。
一つ気づいたのが、上記の方法でサポートしているSNSとして、LinkedInが無い。ヘッダの中で、ACAccountTypeIdentifierLinkedInが定義されているが、unavailableになっている。
最近のコメント