Mik*_*i P 8 twitter ios tweets twitterkit
我试图通过提供的TWTRComposer类使用TwitterKit撰写推文.这是我打电话的功能:
-(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!");
}
}];
}
Run Code Online (Sandbox Code Playgroud)
这有两个问题:
showFromViewController立即调用方法中的完成块,结果类型为TWTRComposerResultCancelled.我有一种感觉,这可能与Twitter的登录问题有某种关系.我正在处理的应用程序不包括使用Twitter注册/登录.但是,我的印象是TWTRComposer处理所有登录.
任何帮助都非常感谢,谢谢你的阅读!
你是对的:由于iOS 11的变化,你需要在通话前登录TWTRComposer.
iOS 11不再支持通过内置的社交框架使用Twitter.相反,您可以使用Twitter Kit 3来推文,登录用户并使用Twitter API.以下指南介绍了如何迁移旧代码.
登录(如果可能,使用以下顺序,Twitter for 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];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
迅速:
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
文档:
| 归档时间: |
|
| 查看次数: |
4031 次 |
| 最近记录: |