8 месяцев назад, в честь закрытия Google Reader, компания Яндекс обновила API для своего сервиса Подписки. Я довольно давно им пользуюсь, там собираются все интересные мне новости. И я давно уже хотел клиент для iPad. Лично мне с него читать новости гораздо удобнее, особенно в дороге. Но время шло — а ни одного клиента так и не появилось. Ну а раз нет — напиши сам.
К счастью, в обновлённом API все данные можно получать в JSON. Нужно просто пройти OAuth-авторизацию (хорошая статья на эту тему на Хабре), чтобы получить Access Token — и в путь.
Логичным было выбрать для реализации UISplitViewController — слева список подписок и постов в них, справа содержимое новостей. В левой часте в таблицу делаем кастомный UITableViewCell, чтобы выводить число непрочитанных новостей, в правой же части просто UIWebView, который выводит в зависимости от переключателя или анонс новости, или открывает оригинал на сайте-источнике.
В целом, получился довольно простой RSS-ридер с той разницей, что всю работу по сбору подписок и парсингу RSS-лент на себя берёт Яндекс (а про это, у них, кажется, была даже отдельная статья о том, с какими кривостями-невалидностями приходилось им встречаться), а в клиент отдаются просто данные.
Но именно такой простоты мне и не хватало. Да и веб-версия Подписок, по-моему, для бразуера тяжеловата. Особенно когда в статях в ленте кучу куча картинок. Например, если вы подписаны на новые раздачи на каком-то торрент-трекере с фильмами — там и постер, и скриншоты, и миллион значков различных вроде логотипов IMDB и Кинопоиска, а грузится это в браузере сразу вне зависимости от того — развёрнута у вас запись или нет, и 50 новостей с 10 картинками в каждой превращаются в 500 картинок на странице разной степени тяжести.
Утром, за чашечкой чая, открыл новости, например, на ноутбуке, и продолжил читать их уже где-нибудь в дороге с iPad. Все прочитанное уже отмечено как прочитанное, всё синхронизировано, красота.
Кроме того, в клиенте для iPad можно поделиться интересной новостью в соц. сетях, потравить по почте/sms/iMessage или сохранить статью в Список для чтения в Safari, чтобы позже её прочитать даже без доступа к сети. Ну и, само собой, можно добавлять новые новостные ленты или удалять уже существующие. Для добавления — достаточно ввести просто адрес сайта, а RSS будет выдран самим сервисом, если он там есть.
Технические особенности, с которыми я столкнулся при разработке, в основном касаются API.
Во-первых, при добавлении новой RSS-ленты — все уже существующие посты имеют флаг archive, то есть, они в архиве, и, к сожалению, их нельзя пометить как непрочитанные, чтобы позже вернуться и сразу их заметить. Прочитано/непрочитано будут иметь только посты, появившиеся в ленте после момента подписки.
Во-вторых, иногда для новой RSS-подписки сервису требуется время для того, чтобы «всосать» в себя ленту. Например, мою личную RSS-ленту с Хабра сервис всасывал минут 40, прежде чем показать мне хотябы список постов.
Приложение бесплатное. Если вам стало интересно — ссылка: itunes.apple.com/ru/app/ajpodpiski-rss-klient-dla/id855118050?mt=8
P.S. если у вас есть какие-то идеи по улучшению приложения — готов выслушать в комментариях.
Автор: Makaveli