首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在TwitterKit 11上发送带有iOS的Tweet

无法在TwitterKit 11上发送带有iOS的Tweet
EN

Stack Overflow用户
提问于 2017-08-04 19:40:31
回答 2查看 4.8K关注 0票数 8

我正试图通过提供的TwitterKit类来使用TWTRComposer来编写一个tweet。这是我所称的函数:

代码语言:javascript
复制
-(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!");
        }
    }];
}

这方面有两个问题:

  1. 在我的设备上安装Twitter应用程序时,会显示TWTRComposer对话框,但不久之后,顶部会出现另一个警报,其标题为“没有Twitter帐户”,并有以下消息:“没有配置Twitter帐户。您可以在设置中添加或创建Twitter帐户。”我可以忽略这个对话框,然后发送tweet (成功),但是这显然是非常糟糕的UX。而且,这个错误对话框很奇怪,因为iOS 11在设置中已经没有Twitter了。
  2. 当我的设备上没有安装Twitter应用程序时,TWTRComposer对话框就根本不显示了。相反,将立即调用showFromViewController方法中的完成块,结果是TWTRComposerResultCancelled类型。

我有一种感觉,这可能与Twitter的登录问题有关。由于我正在开发的应用程序不包括带有Twitter的Signup/Login。然而,我的印象是TWTRComposer处理所有的登录。

任何帮助都是非常感谢的,谢谢你的阅读!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-04 22:21:13

您是正确的:由于iOS 11中的更改,您需要在调用TWTRComposer之前登录。

iOS 11不再支持通过内置的社会框架使用Twitter。相反,您可以使用Twitter 3来Tweet,登录用户,并使用Twitter。下面的指南演示如何迁移旧代码。

登录(如果可能的话,按以下顺序登录: Twitter用于iOS / SFSafariViewController / UIWebView。(检查先决条件),然后组成:

ObjC:

代码语言:javascript
复制
// 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];
        }
    }];
}

斯威夫特

代码语言:javascript
复制
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)
        }
    }
}

医生:

票数 7
EN

Stack Overflow用户

发布于 2018-11-21 09:19:39

从2018年6月12日起,回调锁定将不再是可选的。iOS应用程序的正确回调格式是:

代码语言:javascript
复制
twitterkit-MY_CONSUMER_KEY://

url.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45514354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档