我正在使用以下代码片段在我的iOS 5应用程序中发布推文:
- (IBAction)postToTwitterClicked:(id)sender
{
if ([TWTweetComposeViewController canSendTweet])
{
TWTweetComposeViewController *tweetSheet = [[TWTweetComposeViewController alloc]init];
[tweetSheet setInitialText:@"Some sample message here"];
[tweetSheet addURL:[NSURL URLWithString:@"http://myURL"]];
[self presentModalViewController:tweetSheet animated:YES];
}
else
{
UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Unable to tweet"
message:@"Please ensure that you have at least one twitter account setup and have internet connectivity. You can setup a twitter account in the iOS Settings > Twitter > login."
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[av show];
}
}
这很好,但我怎么知道用户确实发布了推特,或者是否有问题?
由于这并没有实现委托,所以没有可以重写的"onError"方法。
我想知道用户是否成功发布了推特,这样我就可以采取一些行为,比如
- 禁用一个按钮,这样他们就不能再这样做了
- 通知他们帖子成功,很快就会出现在他们的订阅源中
在iOS Twitter API中,您无法看到推文实际上发布在服务器上。但您可以分析TWTweetComposeViewControllerResult
,看看推文是否成功完成撰写,或者推文是否被取消。
twitter.completionHandler = ^(TWTweetComposeViewControllerResult res) {
if (res == TWTweetComposeViewControllerResultDone) {
// Composed
} else if (res == TWTweetComposeViewControllerResultCancelled) {
// Cancelled
}
[self dismissModalViewControllerAnimated:YES];
};
实际上,您只能设置一个处理程序,以便在用户编写完tweet时调用:TWTweetComposeViewControllerCompletionHandler
。这个处理程序有一个参数,指示用户是完成还是取消了撰写推文。
你可以尝试发送一条推特,让它无法检查结果代码(幸运的是,它被取消了?)。
实现所需行为的另一个替代方案是使用另一个API。