Introducing Easy Reader for iOS
When Google Reader was discontinued, sadly we didn’t just lose it, we lost many Google Reader backed iOS RSS readers as well. Google Reader was one of (if not the) most widely used RSS feed manager and powered countless other sites and applications. To fill the hole left in our browsers, apps, and hearts, today we are proud to present Easy Reader for iOS!
Easy Reader is an open source RSS feed reader and manager, available on the iOS App Store, with universal support for both iPhones and iPads. Easy Reader let's you start your day the right way, with a quick scroll through your favorite blogs, webcomics, and news sites, organized the way you want them and available at the tap of a finger.
We ignored many of the infrequently used bells and whistles that weigh most RSS Readers down, and cut straight to the point - your content. A breeze to navigate and search through, Easy Reader automatically populates our most popular RSS feeds to get you started. From there, you can search, organize and delete any RSS feeds that come your way. Can't find your favorite Blog in our list? Simply add in the RSS URL. Easy!
Don't miss a single thing
Haven't checked your feeds in a week or two? No problem. Unlike many RSS readers that simply load the current feed data (which is often just the last few items posted), Easy Reader is fed by a powerful Ruby on Rails backend that regularly checks your feeds for updates (even if you don't!) and keeps a history of postings so you'll never miss a beat. Just fire up Easy Reader and you can scroll through every article since the feed was first added.
Finding new feeds made easy!
Sometimes finding new feeds can be cumbersome. There are so many interesting sites out there, but many have RSS links hidden in the footer of their pages or buried under several layers of menus. This can make setting up a feed reader quite time consuming. To help eliminate this problem, Easy Reader has a hand-picked, frequently updated database of interesting and popular feeds that you can easily search through right from the app. With simply the tap of a button you can add the feeds you like right to the side menu.
How it works (see the referenced code here)
The core of Easy Reader is powered by one of our favorite Objective-C libraries, AFNetworking. This library is a great NSURLConnection wrapper that really simplifies handling web interactions. Easy Reader uses AFNetworking to load feed data and SDWebImage to pre-fetch and cache thumbnail images.
To handle interactions between the various models, controllers, and web response blocks inside the controllers, Easy Reader heavily makes use of key-value observing. Using this technology makes it incredibly easy to separate out interface updates from data changes, giving a much more logical flow to the code. We created a chain of event listeners to handle every action needed between when a user clicks on a feed in the menu and the final UI updates that occur after downloading and processing.
When a user first selects an item on the menu the CSMenuLeftViewController
gets a reference to the current user objects and sets the appropriate active feed. CSHomeViewController
is registered as an observer for the user's active feed, so when that changes we can react by downloading the newest feed data. When the feed data download is complete it's added to the feedData
array, which is also observed. The listener for feedData
then triggers a refresh of the UI.
All in all the use of KVO gives a seamless appearance to the app while maintaining very logical separation of code. KVO lets simple actions such as selecting a feed or adding a new feed propagate changes throughout the app on multiple view controllers nearly instantly and with great ease. Taking advantage of this technology can simultaneously decrease development time and increase reliability and responsiveness of an app.
The technology inside our back-end
Easy Reader is a more than just an app. Behind the iOS interface stands a powerful server-side feed manager which scrapes and processes thousands of feeds every day, ensuring Easy Reader users have up-to-date information and never miss an article. The Easy Reader server API is a built on Ruby on Rails with MySQL and utilizes Amazon Web Services to create a fast and highly scalable architecture. Throughout the day the server visits each feed and processes any new articles and updates.
The Easy Reader server-side setup
Since many RSS feeds don't provide images appropriate for thumbnails, we've set up the Easy Reader API server to automatically look through article descriptions and content to try and ensure there are images for as many items as possible. Article and description parsing are handled by Nokogiri and ruby-readability, which let us grab a prominent image and, through the power of MiniMagick, generate an appropriately sized thumbnail. We then store these thumbnail images on Amazon S3 so they can be rapidly delivered to you.
We also leverage the incredible power of memcached to ensure no unnecessary processing takes place and we can get data back to you as quickly as possible.
Enjoy!
Easy Reader was built to serve as both a simple yet powerful RSS reader and an open source example of iOS API interactions and key-value observing. We hope you can both use and learn from it! Check it out on the iOS App Store and let us know what you think!