使用iOS5中的Twitter框架提示登录提醒?

时间:2012-03-12 13:28:45

标签: objective-c ios twitter

大家都知道,因为iOS5有一个原生的Twitter框架,可以很容易地从你的应用发布推文。

有没有办法提示将用户转发到设置应用并要求输入用户名和密码的提醒?

我知道我可以使用以下代码解决问题:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];

但那是未记录的代码..

提前致谢

关心比利 (我关于SO的第一篇文章)

4 个答案:

答案 0 :(得分:8)

在iOS5.1中,我们应该使用TWTweetComposeViewController来显示对话框,因为苹果使用prefs拒绝应用程序:root = TWITTER。

但是,我不喜欢显示推文屏幕和键盘 所以我想出了隐藏它们的方法,但是显示弹出屏幕。

<强>更新 Apple使用这个技巧批准我的应用程序。


enter image description here

    TWTweetComposeViewController *viewController = [[TWTweetComposeViewController alloc] init];

    //hide the tweet screen
    viewController.view.hidden = YES;

    //fire tweetComposeView to show "No Twitter Accounts" alert view on iOS5.1
    viewController.completionHandler = ^(TWTweetComposeViewControllerResult result) {
        if (result == TWTweetComposeViewControllerResultCancelled) {            
            [self dismissModalViewControllerAnimated:NO];
        }
    };
    [self presentModalViewController:viewController animated:NO];

    //hide the keyboard
    [viewController.view endEditing:YES];

    //this approach doesn't work since you can't jump to settings
//    [self dismissModalViewControllerAnimated:NO];

答案 1 :(得分:6)

您不需要实现此功能,如果您设置Twitter集成以在Twitter上发布帖子并且iOS检测到没有设置Twitter帐户,它将自动为您执行此操作!

这是我在iOS 5.1上的iPhone 4S上运行的一个应用程序的屏幕截图

删除“首选项”链接是指开发人员的自定义操作,如链接到您自己的首选项菜单。这不适用,因为Twitter不仅是iOS 5的内置功能,而且弹出通知您的UIAlertView不是由开发人员处理的,它是iOS的自动功能。

enter image description here

答案 2 :(得分:2)

我找到了方法:

如果您的设备设置上未设置Twitter帐户,则显示自定义提醒:

    if (![TWTweetComposeViewController canSendTweet]) {
            UIAlertView *alertViewTwitter = [[[UIAlertView alloc] 
            initWithTitle:@"No Twitter Accounts" 
            message:@"There are no Twitter accounts configured. You can add or create a Twitter account in Settings." 
            delegate:self 
            cancelButtonTitle:@"Settings"
            otherButtonTitles:@"Cancel",nil] autorelease];

            [alertViewTwitter show];
   }


 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

          if (buttonIndex==0) {
                 TWTweetComposeViewController *ctrl = [[TWTweetComposeViewController alloc] init];
                 if ([ctrl respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) {
                     [(id <UIAlertViewDelegate>)ctrl alertView:alertView
                             clickedButtonAtIndex:0];
                 }
                 [ctrl release];
          }
   }

希望这有意义:)

答案 3 :(得分:0)

如果用户尚未登录,则无法自动要求用户登录。

iOS 5.1开始删除该功能,如here

所示