Pull to refresh

Интегрируем Twitter в приложения для iPhone

Reading time 6 min
Views 1.3K
Original author: Brandon Trebitowski
Если вы разработчик (что вероятнее всего, учитывая факт чтения данной статьи), то, по всей вероятности, у вас уже есть или должна появиться учетная запись в Twitter. В последнее время эта социальная сеть обрела такую популярность, что было бы глупо не интегрировать Twitter тем или иным способом в собственные приложения iPhone.

Сделать приложения более социально ориентированными с помощью Twitter можно разными способами. Например, предусмотрев автоматическое подключение к сети при нахождении определенного предмета в игре или победе над персонажем. При этом все друзья узнают о достижениях пользователя, а вам подобный ход добавит популярности. Кстати, а как насчет создания собственного Twitter-клиента (только не рассчитывайте продать мой урок в App Store).

Twitter предлагает элементарный пользовательский интерфейс, с помощью которого с сетью легко и просто взаимодействовать. В моем персональном блоге я как раз публикую серию статей о создании Twitter-клиента для Mac, кодом из которой мы частично воспользуемся.
Перед началом хочу остановиться ещё на одном моменте: создание интерфейса и установку связей со спецификаторами "IBOutlet" я рассмотрю очень бегло. Если что-то будет непонятно, лучше начать с более простых уроков.

Урок будет базовым: я покажу, как обновлять в Twitter собственный статус, а также создавать приложение, работающее исключительно в альбомной ориентации — два зайца одним выстрелом. Приступим....

1. Создаем приложение на основе представления




1. Придумайте для проекта название позаковыристее (для своего я обошелся банальным TwitUpdate). Первым делом создадим спецификаторы "IBOutlet" и "IBAction". После чего загружаем изображения для урока и в XCode перетаскиваем в папку "Resources".





2. Настраиваем спецификаторы «IBOutlet» и «IBAction»


Откройте файл "TwitUpdateViewController.h" и добавьте приведенный ниже код:



При желании переменные для "UIButton" можно опустить (я оставил их на случай экспериментов с кнопкой). Все достаточно просто: статус в Twitter вводится в «UITextView». Для публикации информации о статусе вызывается "IBAction". Не забудьте синтезировать свойства в файле "TwitUpdateViewController.m" или будете объясняться с компилятором. Еще один представленный здесь момент — "UIActionSheet". При публикации сообщения он будет играть роль экрана "Loading" (Загружаю...).

3. Создайте интерфейс


Следующим шагом откройте файл "TwitUpdateViewController.xib".
Тех, кто не знает, как перевести редактор Interface Builder в альбомный режим, спешу успокоить — все очень просто, хотя и не очевидно (лично я ломал голову целый день). Нужно лишь найти маленькую стрелку (см. фото ниже) в верхнем правом углу представления. Щелкните на ней — и оно перейдет в альбомный режим.



Теперь, когда интерфейс в альбомном режиме, избавимся от панели состояния. Щелкнув на представлении, в окне инспектора атрибутов из раскрывающегося списка для элемента "Status Bar" выберите значение "None" — получите чуть больше свободного места на экране.

Перетащите на представление объект "UIImageView" и растяните его на весь экран. Укажите для его атрибута "Image" значение "twit_background.png" — и наслаждайтесь красотой собственноручно созданного мной интерфейса! Теперь нам предстоит добавить "UITextView".

Выделив "UITextView", перетащите объект на представление и растяните по размеру кружка с сообщением (не забудьте удалить внутри текст lorem ipsum).

Последним элементом интерфейса добавляем кнопку обновления. Перетащите на представление объект "UIButton". В атрибутах кнопки укажите тип "Custom", а в качестве изображения выберите "btn_update.png". Обратите внимание: перетаскиваем кнопку уже при обновленном изображении. Итоговый интерфейс будет выглядеть так:



Соедините относящийся к "File’s Owner" объект "twitterMessageText" с "UITextView", а "updateButton" с пользовательской кнопкой. Не забудьте связать относящийся к "UIButton" метод "TouchUpInside" с "postTweet IBAction". В результате при щелчке на "File’s owner" свойства связей должны выглядеть так:



Нажмите для увеличения

Закройте редактор IB.

4. Создание класса запроса для Twitter


Взаимодействовать с Twitter мы будем посредством запроса "NSMutableURL" и "NSURLConnection". На этом этапе у вас два пути на выбор: загрузить представленные ниже файлы и добавить их к рабочему проекту или отправиться сюда и прочесть о том, как создавать их самостоятельно (рекомендованный вариант). Дело в том, что я уже подробно расписал все шаги в уроке, опубликованном в моем блоге.

Если задача — отработать урок и двигаться дальше, загружайте файл, распаковывайте архив и перетаскивайте файлы в проект. Чтобы публиковать в Twitter обновленный статус, к файлам придется добавить код. Откройте "TwitterRequest.h" и обновите следующий код:



Мы добавили булево значение, фиксирующее наличие или отсутствие HTTP POST запроса (Twitter использует и POST, и GET). Предусмотрена и строка, соответствующая запросу POST. В нашем случае значение устанавливается на «status=foo» (foo — обновление статуса).

Для обновления статуса также добавлена подпись метода. Она принимает "NSString" — текст статуса. Объяснение по остальным переменным можно найти в моем уроке на brandontreb.com. Теперь откройте "TwitterRequest.m" и добавьте следующий код:



Начинаем с метода "status_update". За некоторыми исключениями он очень похож на метод "friends_timeline". Во-первых, устанавливаем "isPost = YES". Затем request body = "status=%@", где %@ — обновленный статус.

Переходим к более сложному коду. В методе запроса нашего класса необходимо добавить код для HTTP POST (а не GET). Именно так мы сообщим Twitter новый статус. Первым делом настраиваем "HTTPMethod" на запрос публикации POST. Следующим шагом настраиваем поле "Content-Type", чтобы сообщить сети о виде пересылаемых данных. После этого отправляется тело запроса — реальные данные, которые увидит Twitter. Последним шагом передается информация об объеме данных (в байтах). Если все сказанное малопонятно, рекомендую ознакомиться с дополнительной информацией по POST и GET.

Уф-ф… С этим разобрались. Переходим к финальной части реализации метода "postTweet".

5. Метод «postTweet»


Откройте файл "TwitterUpdateViewController.m" и добавьте следующий код:



Здесь все проще, поскольку самую тяжелую часть работы берет на себя класс "TwitterRequest". На всякий случай напомню, что метод "postTweet" вызывается при нажатии кнопки "Update". Здесь первым делом создаем новый объект "TwitterRequest", настраиваем поля с именем пользователя и паролем. Обратите внимание: вводить нужно СВОИ логин и пароль. Теперь вызываем метод "resignFirstResponder" на "UITextView" (чтобы скрыть клавиатуру).

Чтобы держать пользователя в курсе происходящего, отобразим простой перечень действий без кнопок — с надписью "Posting to Twitter…". И, наконец, вызовем метод "statuses_update" в классе "TwitterRequest".

Теперь дело за классом "Twitter request", который волшебными пассами вызывает заданный ранее метод внешнего вызова ("status_updateCallback") и отправляет ему возвращенные сетью Twitter данные. После этого сразу же отпускаем перечень действий, а затем выводим ответ от Twitter на терминал.

Полученный от Twitter ответ необходимо проанализировать и вывести на экран или обработать иным образом, но это уже тема другого урока. Отмечу только, что при вводе неверного логина или пароля приложение зависнет на тексте "Posting to Twitter". Для решения проблемы обратитесь к методу возврата ошибок (и снова ссылка на урок).

6. Запустите приложение в альбомном режиме


В последней части урока нам предстоит перевести приложение в альбомный режим, а также скрыть панель состояния. Откройте файл "TwitUpdate-Info.plist". Щелкнув на таблице правой кнопкой мыши, выберите "Add Row". В поле "Initial interface orientation" (Исходное положение интерфейса) укажите значение "Landscape" (правое или левое). Снова щелкните правой кнопкой мыши и установите флажок "Status bar is initially hidden" (Скрывать панель состояния), как показано ниже:



На повороты интерфейса реагирует файл "TwitUpdateViewConroller.m". Откомментируйте следующий метод в "TwitUpdateViewConroller.m" и отредактируйте следующим образом:



После этого представление будет поворачиваться вместе с iPhone. Надеюсь, урок был полезным — жду интеграции Twitter в ваши собственные приложения.

Исходный код к уроку скачать можно здесь.
Tags:
Hubs:
+5
Comments 2
Comments Comments 2

Articles