The GoMongo app that I have been working on is fairly complex. It lets you share Mongo Photos to Facebook and Twitter. It lets you check in to bd’s Mongolian Grill locations around the country. It also uses Google Analytics to see what parts of the app people are actually using.
I once read something about how the best developers know when to NOT write code. So I tried to not write as much code as possible. Here are a list of the projects/tools that I used to make the GoMongo app.
If you want to utilize Facebook’s API you can write all of the requests yourself, handle the authentication yourself, and handle the responses yourself. Or, you can use the SDK that Facebook made that does all of that for you. It was very easy to add the Facebook integration into my app.
Plain OAuth is an easy to use OAuth implementation with a great sample project. I picked this over MGTwitterEngine (Which I’ve used in the past) because the sample project had Twitpic posting.
Google Analytics is probably the most popular way to see how users are using your website. Google was nice enough to add that functionality to iPhone apps in the form of a library that handles the pageview and event tracking for you. All you need to do is add the library and you can start tracking events. It will put them in a queue and send them up to Google in batches. It’s very very simple and easy to use.
One part of the iPhone SDK that is really lacking is XML parsing. For some reason, it doesn’t include NSXMLDocument, just NSXmlParser (an event based parser). Because of this, lots of people have written DOM parsers for the iPhone. The simplest and easiest one I found was GDataXMLNode, which is a part of Google’s GData Objective-C client. It’s very simple and easy to use.
Sharing a photo can take a bit of time. The common way of showing network activity is to show a spinning wheel icon that in the status bar. This is great for short background activity, but when it’s something a little longer, you want to give the user a better indication that something is happening. DSActivityView shows a popup with a large spinner to indicate network activity. I modified it so that it not only does that, but it will show whether or not the request succeeded or failed. I will hopefully submit that back to the project.
TestFlight is an awesome service that lets you send your app to other people for testing. It uses Apple’s ad-hoc distribution method. The service is so easy to use it seems magical. Not only does it help you send apps for testing, it helps you manage people’s device IDs. I used TestFlight to send out app updates every couple of days to my client. This way, they could actually play with the app on the phone, instead of just in the simulator.
If you have any questions about any of these things or have any other cool tools I should try out, let me know in the comments.