Как публиковать сообщения в твиттере, скрывая экземпляр SLComposeViewController *tweetSheettweet

Мое приложение должно поддерживать iOS 5.

У меня есть собственный пользовательский интерфейс, в котором пользователь может ввести твит-сообщение, и когда он нажимает кнопку публикации, он должен опубликовать сообщение в твиттере.

Я уже написал код для публикации через экземпляр SLComposeViewController *tweetSheet, но в этом случае я не могу напрямую нажать кнопку отправки, представленную tweetSheet, без представления ее

[self presentViewController:tweetSheet animated:YES completion:nil];

Можно ли обойти эту презентацию и установить текстовое сообщение и опубликовать его в твиттере через мой пользовательский интерфейс, в котором есть кнопка публикации ??

  if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
    {
        SLComposeViewController *tweetSheet = [SLComposeViewController
                                               composeViewControllerForServiceType:SLServiceTypeTwitter];


        tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) {
            switch(result) {
                    //  This means the user cancelled without sending the Tweet
                case SLComposeViewControllerResultCancelled:
                    NSLog(@"Tweet message was cancelled");
                    break;
                    //  This means the user hit 'Send'
                case SLComposeViewControllerResultDone:
                    NSLog(@"Done pressed successfully");
                    break;
            }

            //  dismiss the Tweet Sheet
            dispatch_async(dispatch_get_main_queue(), ^{
                [self dismissViewControllerAnimated:NO completion:^{
                    NSLog(@"Tweet Sheet has been dismissed.");
                }];
            });
        };

        [tweetSheet setInitialText:self.textViewPostedText.text];

        [self presentViewController:tweetSheet animated:YES completion:nil];
    }

Как предоставить опцию выбора, если у пользователя есть несколько учетных записей Twitter ???


person bhavya kothari    schedule 27.08.2013    source источник
comment
см. эту ссылку, это сработало для меня stackoverflow.com/questions/9423447/   -  person Shankar BS    schedule 27.08.2013
comment
в приведенной выше ссылке, которая полностью избегает использования SLComposeViewController, вы можете напрямую публиковать сообщения на стене твиттера   -  person Shankar BS    schedule 27.08.2013
comment
Я получаю сообщение об ошибке Неопределенные символы для архитектуры i386: _OBJC_CLASS_$_TWRequest, на который ссылается: я уже включил #import ‹Social/Social.h› #import ‹Accounts/Accounts.h› #import ‹Twitter/Twitter.h› #import ‹Social/SLRequest.h› и необходимая структура   -  person bhavya kothari    schedule 27.08.2013
comment
в какой строке вы получаете эту ошибку   -  person Shankar BS    schedule 27.08.2013
comment
и проверьте, установили ли вы также учетную запись пользователя Twitter в настройках устройства   -  person Shankar BS    schedule 27.08.2013
comment
Код работает нормально, но возникает ошибка void _WebThreadLockFromAnyThread(bool), 0xac2f080: получение веб-блокировки из потока, отличного от основного или веб-потока. UIKit не следует вызывать из вторичного потока. С помощью NSLog я также получаю сообщение об ошибке Tweet   -  person bhavya kothari    schedule 27.08.2013
comment
я использовал тот же код, но немного изменил, я не получил никаких ошибок, подождите, я собираюсь опубликовать свой код   -  person Shankar BS    schedule 27.08.2013
comment
Я могу успешно запустить свой проект, но я не получаю твит-сообщение, отправленное в мою учетную запись, вместо этого я получаю вышеуказанное сообщение в области отладки.   -  person bhavya kothari    schedule 27.08.2013
comment
давайте продолжим это обсуждение в чате   -  person bhavya kothari    schedule 27.08.2013
comment
см. мой обновленный ответ :)   -  person Shankar BS    schedule 28.08.2013


Ответы (1)


person    schedule
comment
как я могу дать пользователю возможность выбрать учетную запись Twitter, на которую должно быть отправлено твит-сообщение ??? - person bhavya kothari; 27.08.2013
comment
Приведенный выше код работает отлично, единственное, как мы можем предоставить список учетных записей, которые пользователь предварительно настроил на своем устройстве, и выбрав любую учетную запись, на которую будет отправлено твит-сообщение. - person bhavya kothari; 27.08.2013
comment
что вы можете проверить в NSArray *arrayOfAccounts = [account accountWithAccountType:accountType]; этот метод, поскольку он дает все учетные записи, которые пользователь настроил на своем устройстве, и на основе этого вы можете выбрать учетную запись для публикации, я проверю и обновлю ее. - person Shankar BS; 27.08.2013
comment
Хм, я проверил и обновил проверку ответов, дайте мне знать, если возникнут трудности :) - person Shankar BS; 28.08.2013
comment
эй, у меня это не работает, я получаю следующий ответ HTTP-ответ Twitter: 403 - person ViruMax; 05.02.2014
comment
извините за задержку, возможно, есть небольшое изменение в URL-адресе. Попробуйте использовать этот URL-адрес, http://api.twitter.com/1.1/statuses/update.json для ios 6 и https://api.twitter.com/1.1/statuses/update.json для iOS 7, вы должны получить код ответа 200 - person Shankar BS; 05.02.2014
comment
хм, проблема была в версии API, текущая версия API для твиттера 1.1, спасибо - person ViruMax; 05.02.2014