18 Nov, 2011 20:17
Como integrar seu aplicativo com o Twitter no iOS 5
Antes dessa integração, já era possível compartilhar no Twitter usando suas APIs, mas o usuário precisava se autenticar pelo menos uma vez em cada aplicativo antes de compartilhar algo. Com a integração nativa, agora basta ele colocar seu usuário e senha uma vez nas configurações do aparelho e usar o mesmo login em todos os aplicativos que implementarem essa integração.
Implementando a integração
Existem duas formas de integrar o seu aplicativo com o Twitter no iOS 5. A mais complexa e flexível é utilizar a classe TWRequest, que é capaz de acessar a API do Twitter e suas mais diversas funcionalidades. A outra forma é bem mais rápida e prática, mas para um uso restrito, que utiliza a classe TWTweetComposeViewController. Trataremos nesse post apenas a segunda forma.
A primeira coisa que precisamos fazer é autenticar o usuário, para isso utilizamos o Accounts Framework, vale dizer que esse framework hoje só é usado pelo Twitter mas futuramente ele poderá ser usado por outras redes, como o facebook. Para usá-lo importe o framework Accounts.framework para o seu código e escreva no viewDidLoad da sua classe:
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError* error) {
ACAccount *account = [[ACAccount alloc] initWithAccountType:accountType];
NSLog(@"%@, %@", account.username, account.description);
}];
Esse código vai solicitar a permissão do usuário para acessar a sua conta do Twitter:
Se o usuário negar a permissão, a variável granted virá negativa no método de callback. O próximo passo é importar o framework Twitter.framework e usar o TWTweetComposeViewController para enviar o tweet. O código fica dessa forma:
if([TWTweetComposeViewController canSendTweet]) {
TWTweetComposeViewController *controller = [[TWTweetComposeViewController alloc] init];
[controller setInitialText:@"Testando a integracao com o Twitter"];
controller.completionHandler = ^(TWTweetComposeViewControllerResult result) {
[self dismissModalViewControllerAnimated:YES];
switch (result) {
case TWTweetComposeViewControllerResultCancelled:
break;
case TWTweetComposeViewControllerResultDone:
break;
default:
break;
}
};
[self presentModalViewController:controller animated:YES];
}
O callback retorna se o tweet foi enviado ou cancelado. A tela do TWTweetComposeViewController é uma tela padrão:
Como um usuário pode cadastrar várias contas na configuração do iOS 5, ele poderá escolher a conta na hora de twittar.
Cuidados com o iOS 4
Não podemos esquecer de que uma grande quantidade de aparelhos ainda possui o iOS 4, então é importante tomar os seguintes cuidados: importar os frameworks necessários (Twitter.framework e Accounts.framework) de forma opcional (ou weak) e verificar a existência das classes que não existem no iOS 4 antes de usá-las, conforme exemplo abaixo:
Class twitterClass = (NSClassFromString(@"TWTweetComposeViewControllerResult"));
// Verifica se a classe existe no sistema operacional
if (twitterClass != nil) {
Desta forma, você poderá usar a nova integração apenas nos aparelhos atualizados e continuar rodando o aplicativo nos aparelhos antigos.