我正试图通过提供的TwitterKit类来使用TWTRComposer来编写一个tweet。这是我所称的函数:
-(void) tweet:(UIViewController *) root {
TWTRComposer *composer = [[TWTRComposer alloc] init];
[composer setText:@"just setting up my Twitter Kit"];
// Called from a UIViewController
[composer showFromViewController:root completion:^(TWTRComposerResult result) {
if (result == TWTRComposerResultCancelled) {
NSLog(@"Tweet composition cancelled");
}
else {
NSLog(@"Sending Tweet!");
}
}];
}这方面有两个问题:
showFromViewController方法中的完成块,结果是TWTRComposerResultCancelled类型。我有一种感觉,这可能与Twitter的登录问题有关。由于我正在开发的应用程序不包括带有Twitter的Signup/Login。然而,我的印象是TWTRComposer处理所有的登录。
任何帮助都是非常感谢的,谢谢你的阅读!
发布于 2017-08-04 22:21:13
您是正确的:由于iOS 11中的更改,您需要在调用TWTRComposer之前登录。
iOS 11不再支持通过内置的社会框架使用Twitter。相反,您可以使用Twitter 3来Tweet,登录用户,并使用Twitter。下面的指南演示如何迁移旧代码。
登录(如果可能的话,按以下顺序登录: Twitter用于iOS / SFSafariViewController / UIWebView。(检查先决条件),然后组成:
ObjC:
// Check if current session has users logged in
if ([[Twitter sharedInstance].sessionStore hasLoggedInUsers]) {
TWTRComposerViewController *composer = [TWTRComposerViewController emptyComposer];
[fromController presentViewController:composer animated:YES completion:nil];
} else {
[[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {
if (session) {
TWTRComposerViewController *composer = [TWTRComposerViewController emptyComposer];
[fromController presentViewController:composer animated:YES completion:nil];
} else {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"No Twitter Accounts Available" message:@"You must log in before presenting a composer." preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alert animated:YES completion:nil];
}
}];
}斯威夫特
if Twitter.sharedInstance().sessionStore.hasLoggedInUsers() {
// App must have at least one logged-in user to compose a Tweet
let composer = TWTRComposerViewController.emptyComposer()
present(composer, animated: true, completion: nil)
} else {
// Log in, and then check again
Twitter.sharedInstance().logIn { session, error in
if session != nil { // Log in succeeded
let composer = TWTRComposerViewController.emptyComposer()
self.present(composer, animated: true, completion: nil)
} else {
let alert = UIAlertController(title: "No Twitter Accounts Available", message: "You must log in before presenting a composer.", preferredStyle: .alert)
self.present(alert, animated: false, completion: nil)
}
}
}医生:
发布于 2018-11-21 09:19:39
https://stackoverflow.com/questions/45514354
复制相似问题