iOS prototype – communication equipment tracker

(This video contains no sound)

An app intended to record and maintain communication equipment. I developed this prototype between November ’14 and January ’15 to demonstrate the solutions our company was capable of developing for our client’s problem domain.

The app was written in Objective C using Xcode, and works on any iPad device running iOS 7 or 8. I gained experience using the UIKit, MapKit, MediaPlayer and CoreData frameworks, as well as designing apps using Apple’s latest human interface guidelines. I also became acquainted with CocoaPods, a fantastic tool for quickly obtaining third party libraries and keeping them up to date with the newest versions. Just be careful to keep any changes you make to the pods under source control or you may find them going missing when you next do a pod update. CocoaPods used in the development of this application were:

SZTextView – used to add placeholder text to the multi-line text views in the feature creation screens.

MRoundedButton – The green circular button used to record points is an instance of MRoundedButton. Required some heavy tweaking to get into a satisfactory state, but the end result was well worth the effort.

MWPhotoBrowser – displays the photo preview with caption seen at 2:20 in the video. Super easy to get working and looks great.

ASPolylineView – used to render the polylines representing cable ducts and facilities. I replaced the standard MKPolylineRenderer with the ASPolylineRenderer so I could display a border on the currently selected polyline.

RestKit – used to map Core Data objects to GeoJSON and vice versa. See below.

Functionality that I didn’t capture in the video includes:

Support for portrait mode (just rotate the device). Constraints were used in every XIB file to ensure the screen was laid out appropriately regardless of resolution or orientation.

Full search mode categorised by feature type. Type in the search box to narrow down the list of features.

Ability to delete a feature from the feature’s edit screen.

Ability to post cable chamber features to a REST service in GeoJSON format. These features could then be displayed in Leaflet to be interacted with on an ASP.NET MVC web site developed by a colleague.

Ability to download cable chamber features from the same REST service. The RestKit library was used to parse the GeoJSON and convert it into a set of Core Data objects with minimal wheel-reinventing.