I wanted to write-up the result of a code challenge that I completed a while ago. I was asked to create a tabbed iOS app with sectioned tables, pulling video thumbnails and article titles into different sections. Clicking on a thumbnail or article title would display the corresponding video or article in a separate view. Adding to the challenge, I was asked to provide bookmarking capability for the videos and articles. The bookmarked content would be visible in a second tab.
Challenge Details and GitHub app
The full details of the challenge and resulting project can be found at:
As a software professional I am interested in maintaining good relationships with my connections. While I never thought to use a CRM for such a purpose, that just might change after coming across Contactually.
Contactually allows you to collect and merge contact information from various sources including e-mail, calendars and social networks (LinkedIn, Facebook, Twitter). Contactually can help you with automatic reminders to follow-up with your connections, but that is just a small part of what the platform offers. Some of the key features are centered around Buckets, Templates, Programs and Pipelines.
Apple provides a nice framework for incorporating Address Book access into your iOS application, using the familiar UI from the Contacts app. They provide some nice documentation on this UI in the section User Interaction: Prompting for and Displaying Data.
Here is an example of the UI that Apple indicates is available:
The default UI is a little different
The above view of the controllers looks great, but getting them to work together as the images imply is not quite so straightforward. Consider the following code snippet used to present the People Picker:
I ran across a nice intro article to using assertions in iOS Working with Assertions to Debug your Apps. It describes the macros NSAssert, NSAssert1, NSAssert2, etc. and how to use them. One item mentioned in that article is different in XCode now – the macro NS_BLOCK_ASSERTIONS is defined by default for Release builds.
The article started me thinking about how one might report crashes and user-generated assertions in a production app. I came across the article Handling crashes and NSAssert gracefully in a Production App. Not only does it talk about how to continue using assertions in a Release build by subclassing NSAssertionHandler, but it also makes reference to using a service such as Flurry or Google Analytics to log them as well.
Web searches showed that Flurry and Google Analytics are both nice choices for getting app metrics and logging errors/exceptions. I spent some time looking through the Flurry web site and documentation and was impressed with what I saw. I found a nice article that talks about Flurry and includes a video on how to get started with it – Find errors in your iOS app before your users do!