Интеграция с Твиттером iOS6

Кажется, есть разница между симулятором iPhone и реальным устройством при проверке доступности Twitter.

Я проверяю, настроена ли учетная запись Twitter, используя этот код: [SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter];

В симуляторе есть хорошая UIAlertView, информирующая пользователя о том, что нет настройки учетных записей Twitter, и две кнопки: одна для настроек и одна для отмены.

Однако, когда я запускаю свое приложение на своем устройстве, оно не будет отображать вышеуказанное UIAlertView. Почему это? И как я могу поймать, какая кнопка нажата в приведенном выше UIAlertView (так как я не создавал экземпляр?)

Вот как это выглядит на симуляторе:

введите здесь описание изображения


person Peter Warbo    schedule 02.10.2012    source источник


Ответы (2)


Чтобы обработать результат вызова Twitter, вы можете использовать этот фрагмент:

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
        SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){

        [twitterController dismissViewControllerAnimated:YES completion:nil];

        switch(result){
        case SLComposeViewControllerResultCancelled:
        default:
        {
            NSLog(@"Cancelled.....");

        }
            break;
        case SLComposeViewControllerResultDone:
        {
            NSLog(@"Posted....");
        }
            break;
    }};

    [twitterController setCompletionHandler:completionHandler];
    ...
    ...
   }
person Jean    schedule 03.10.2012
comment
Это не отвечает на мой вопрос. - person Peter Warbo; 03.10.2012
comment
Удаление этой проверки заставляет все работать должным образом if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { - person Alex McPherson; 09.09.2013

У меня также возникла та же проблема, что устройство не отображает UIAlert, как это делает симулятор. Пока Apple не исправит это, это то, что я делаю (не так чисто и красиво, как симулятор, и требует, чтобы пользователь вручную переходил на домашний экран). Apple, пожалуйста, исправьте это!

Редактировать: стандартные приложения Apple, конечно, отлично отображают UIAlert, например: при обмене фотографией из фотоприложения без учетной записи Twitter/Facebook будет отображаться правильный UIAlert.

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
    {
        mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
        [mySLComposerSheet setInitialText:@"Check out the app:"];
        [mySLComposerSheet addImage:[UIImage imageNamed:@"test.png"]];
        [mySLComposerSheet addURL:[NSURL URLWithString:@"http://urlofyourapp.com"]];
        [self presentViewController:mySLComposerSheet animated:YES completion:nil];
    }
    else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"You need to setup an account in the Settings app under Twitter to use this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
    }
    [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {

        if (result == SLComposeViewControllerResultCancelled){[mySLComposerSheet dismissModalViewControllerAnimated:YES];}
        else if (result == SLComposeViewControllerResultDone){[mySLComposerSheet dismissModalViewControllerAnimated:YES];}

    }];
person klcjr89    schedule 06.10.2012