从objective-c iOS 9启动设备twitter设置

时间:2015-10-23 22:34:05

标签: ios objective-c iphone twitter slcomposeviewcontroller

如何使用objective-c从我的应用程序启动设备上的Twitter设置?

我正在开发一个在Twitter上共享链接的应用程序,我正在使用SLComposeViewController并且它可以工作,但是当没有安装Twitter应用程序且没有在设置上配置Twitter帐户时它什么也没做。

我想显示一条警报,邀请用户登录Twitter以便能够共享链接,当用户点按按钮时,应用应启动设备上的Twitter设置。

我一直在阅读,因为iOS 5.1

,所以不允许使用这样的网址方案
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];

我看过它只允许用这个启动您的应用设置:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

但我在一些应用程序中发现它实际上打开了这样的Twitter设置:

screenshot of meme generator app that opens twitter settings

你知道怎么做吗?

这是我用于SLComposeViewController的代码:

- (IBAction)twitterAction:(id)sender {
    UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc]
                                       initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    activityView.center=self.view.center;
    [activityView startAnimating];
    [self.view addSubview:activityView];


 if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {

SLComposeViewController *composerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];

[composerSheet setInitialText:@"text to post"];
[composerSheet addURL:[NSURL URLWithString:@"http://urltoshare.com"]];
[composerSheet addImage:[UIImage imageNamed:@"postimage.JPG"]];
[composerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
  [activityView stopAnimating];

  switch (result) {
    case SLComposeViewControllerResultCancelled:
      NSLog(@"Post Canceled");
         // some code ...
      break;
    case SLComposeViewControllerResultDone:
    [self changeSharedStatus];
      NSLog(@"Post Sucessful");
        // some code ...
      break;

    default:
      break;
     }
}];

    [self presentViewController:composerSheet animated:YES completion:nil];
}else {
/*  code to show the alert that invites the user to open settings */
    }
}

1 个答案:

答案 0 :(得分:0)

为什么您找到的应用会打开Twitter设置, 这是因为当你要求iOS“创建”推文时,如果iOS中没有设置帐户,iOS会向你显示这个提醒视图,询问你是否要进入向iOS添加推特账号的设置。

因此,如果您调用SLComposeViewController,如果iOS中没有Twitter帐户,代码将触发此alertview:

SLComposeViewController *controllerSLC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[controllerSLC setInitialText:@"text"];
[self presentViewController:controllerSLC animated:YES completion:nil];