What third-party plugins, frameworks and projects do you use on your projects?
I get asked this question a lot. With the recent iOS open-source movement spearheaded by Github, reinventing the wheel when writing code is pointless when you can easily find something that already exists to solve your problem. But with thousands of Objective-C open-source projects, it can be tough to determine which are the best, which are well-written, and which are potentially harmful to include in your app. All of these projects listed that I use are top-notch in terms of how frequently they are updated to fix bugs and optimize, how vocal the community is behind them, how lightweight they are and how responsive the developer is.
AFNetworking is a fantastic wrapper around
CFNetworkthat makes life much easier when making network calls in your app. It uses block based syntax for everything, includes
XMLand other parsers by default, and even includes a category on
UIImageViewto make dynamic image loading a snap. AFNetworking is currently the most-starred Objective-C repository on Github, and can also be used on OS X.
Despite it’s humble beginnings and odd name, AppiRater has evolved into a fantastic repository. The average app user will only review if something is wrong in the app. This leads to an unfairly negative skew in the ratings, when the majority of satisfied customers don’t leave reviews and only the dissatisfied ones do. In order to counter-balance the negatives, AppiRater prompts the user to write a review, but only after the developer knows they are satisfied. For example, you may only show the popup if the user has been using it for more than a week, and has done at least 5 significant events (the core functionality of your app). The rules are fully customizable for your specific app and easy to setup.
I use AppiRater in all of my App Store Apps.
I created my own rating popup library that is much better than AppIRater. Check out UAAppReviewManager on Github
Getting anonymous stats on how your users are actually using your app is invaluable in iOS development. Flurry Analytics allows you to add a few lines in key methods/pages of your app to see how and when they are used. I have tried Google Analytics here, and a few others, but always end up coming back to Flurry as they update their SDK far more frequently than Google, and are much more stable on iOS as well. Installation is made simple with Cocoapods (see below).
Speaking of Cocoapods, you should definitely be using it to manage your third party software in your app. For those of you familiar with Ruby on Rails, Cocoapods manages Xcode projects like
bundlemanages your rails gems. I use Cocoapods in every project I start.
Crashlytics is a fantastic framework you add to your projects that intercepts all exceptions thrown and aggregates them for you to see, with stack traces, online. This is very useful for catching bugs after release, when you would otherwise not have a ton of options in collecting stack traces and other pertinent info surrounding the crash. It is fully customizable and even provides hooks for passing crashes on to ticketing systems and other sites. While the main app is not open-source, Crashlytics does open-source many of the components it uses.
I use Crashlytics in all of my App Store Apps, and it has been very useful in finding and debugging those tough issues that arise when a user simply reports a bug as "it doesn't work".
UAModal panel snuck onto this list, well, because I wrote it. None-the-less, it currently has over 750 stars on Github and has been featured in many apps.
UAModalPanel is a highly customizable, alternative modal panel that you can popup in your view controllers to show content that might not need an entire new screen to show. It has a bounce animation, content fade-in, and a fancy noisy-gradient title bar. It works on the iPhone and iPad, with or without rotation.
I use this panel in almost all of my App Store Apps. As I mentioned, it is highly configurable, and looks much nicer than a full-screen modal
UIViewController. I usually use it for info panels, settings panels, or secondary/tertiary information that relates to the current
That's it for now. Let me know in the comments if you use anything else on almost all of your projects,and maybe I will add it to the list.