如何使用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 */
}
}
答案 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];