iOS Twitter Framework: как получить (при обратном вызове) последнюю учетную запись Twitter, которая использовалась для твита?

После того, как пользователь написал что-то в Твиттере, мне нужно определить, какой твиттер-аккаунт он использовал. Предположим, что у пользователя будет настроена 1 или несколько учетных записей на телефоне.

Мне нужно знать это после того, как твит будет успешным, поэтому правильным местом будет обратный вызов. Я попытался получить учетные записи с помощью ACAccountStore, но он предоставляет массив со всеми учетными записями, настроенными на телефоне, а не информацию о последней использованной учетной записи (даже порядок массива).

Кто-нибудь знает, помнит ли TWTweetComposeViewController эту учетную запись и как ее получить?

Спасибо

Мой код:

if ([TWTweetComposeViewController canSendTweet])
{
    TWTweetComposeViewController *tweetSheet = 
    [[TWTweetComposeViewController alloc] init];
    [tweetSheet setInitialText:@"initial text"];
    [tweetSheet addImage:[UIImage imageNamed:image]];

    // Callback
    tweetSheet.completionHandler = ^(TWTweetComposeViewControllerResult result) {
        // if tweet was successful
        if(result == TWTweetComposeViewControllerResultDone) {

            // Get the accounts
            account = [[ACAccountStore alloc] init];
            ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

            [account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) 
             {
                 // if access granted I populate the array
                 if (granted == YES) {
                     NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];

                     ACAccount *account1 = [arrayOfAccounts objectAtIndex:0];
                     ACAccount *account2 = [arrayOfAccounts objectAtIndex:1];

                     NSString *username1 = account1.username;
                     NSString *username2 = account2.username;

                     // Always same order
                     NSLog(userName1);
                     NSLog(userName2);

                 }
             }];

            [self furtherMethodsInCaseOfSuccessfulTweet];


        } else if(result == TWTweetComposeViewControllerResultCancelled) {
            NSLog(@"twit canceled");
        }
        [self dismissViewControllerAnimated:YES completion:nil];
    };


    [self presentModalViewController:tweetSheet animated:YES];

}
else
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"No tweet is possible on this device" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alertView show];

}   

}


person Jorge Piedrafita    schedule 18.07.2012    source источник


Ответы (1)


Я нашел путь.

Вместо поиска имени пользователя в экземпляре TWTweetComposeViewController давайте воспользуемся GET users/lookup для запроса имен, собранных ACAccountStore.

http://api.twitter.com/1/users/lookup.xml?screen_name=username1,username2 (используйте json вместо xml)

Анализируя результаты, мы можем получить дату/время последнего твита пользователей (тег «статус»), и вуаля, у нас есть последняя использованная учетная запись. Кроме того, вы можете протестировать результаты qwery на консоли.

Благодаря @theSeanCook

person Jorge Piedrafita    schedule 20.07.2012