Back in December 2008, I wrote a blog entry that listed some of the very useful open source libraries that are available for the iPhone. Since then, I bumped into more libraries and some new ones are also added. Here is the list:
Twitter: Looks like I missed this one in my last post. This is written by Matt Legend Gemmell. He has a lot of other open source code on his site that is used by a long list of popular Mac apps. Note that Twitter is slowly phasing in OAuth based authentication and this library does not yet support that. And that brings us to …
OAuth: This is a library written by Karl Adam both for the Mac and the iPhone. In order to make OAuth work on the iPhone, you would need to host UIWebView so that users can authorize your app. Karl described using OAuth specifically for the iPhone here.
Networking and Web Service client libraries:
HTTP Server: So you need a small HTTP server running on your iPhone. (Perhaps to communicate with another phone?) Well you are in luck. There is a Cocoa based HTTP server originally for the Mac, that now also works on the iPhone. Check out their sample for the iPhone.
Quick SMTP client : May be you don’t want to wait for iPhone 3.0 for full UI based email support in your app. Or may be you need something with no UI. This is a quick SMTP client to send one-off emails from your app.
HTTP wrapper – ASIHTTPRequest: Here is a great wrapper around CFNetwork APIs to do HTTP requests. It supports all of GET/POST/PUT/DELETE requests, cookies, Basic/Digest/NTLM authentication support, GZIP for response data and more.
Restful Client, ObjectiveResource: This is an interesting library. It is an implementation of ActiveResource for ObjectiveC. Basically it attempts to simplify communicating with the RESTful servers, if you choose to have a RESTful server implementation in the back end. The project is very active and you can read more about it on iPhoneOnRails.com.
Simple Image Processing: CoreImage and CoreImage filters are unfortunately not available for the iPhone. However there is a simple open source library for the iPhone that performs some image processing tasks like edge detection, gaussian blurs, histogram equalization etc.
Route Me: Again if you can’t wait for the 3.0 release, or if you want to ensure your app works downlevel, or if you like to use other alternative tilesets from Microsoft Virtual Earth, Open Street Map or CloudMade, then this library is for you.
Plotting and graphing:
Core Plot: This is another very interesting open source project, that is planning to provide 2D data visualization. This is still in its early stages, but you can check-out source code from the trunk and start playing.
Utilities, toolkits, UI widgets:
Three20: This is Joe Hewitt’s collection of IPhone UI classes that were originally seen in the iPhone Facebook app. Includes things like an improved photo viewer, Internet aware high performance table view controllers and other utility classes. Very useful stuff. He also very recently added some CSS-like styling support.
UIColor Utilities: Some very useful helper method additions for the UIColor to directly handle RGBA to UIColor additions, additional named colors, color space helpers etc.
Regex – RegexKitLite: Arguably one of the biggest omissions from a modern framework like Cocoa Touch, is the lack of a built-in support for regular expressions. The upcoming NSPredicate support in 3.0, will bring advanced string searching but it is still not regex. RegexKit is a 3rd party open source library for the Mac OS X. RegexKitLite is a lighter weight version of RegexKit that works on the iPhone.
Plausible Crash Reporter: So you want to know if and why your apps are crashing out on the field. This library records the crash info on disk and then the next time your app launches, you can send the crash info back to your server to further analyze.
So this is it for now. Happy code sharing!