My Experience in Developing Maxis Circle Watch

Maxis Circle Watch is a mobile application project funded by Maxis Berhad and developed by SecqMe Sdn. Bhd. It is a location base security mobile apps. You can monitor the location of your family members on a map at any minute. If any of the family members is in trouble, he/she can trigger an emergency and you will receive the notification though the app/sms/email. I am the iOS developer for SecqMe Sdn. Bhd.

Maxis Circle Watch is the First major iOS mobile development project that I developed entirely by myself. It is a complex mobile Application. There are a lot of programming works required on both the server end and front end (mobile apps – iOS/Android).

MenuVC
Menu View Controller
MapVC
Map View controller
CircleVCCircle View controller

Maxis Circle Watch Project Complexity

– There are a lot of APIs call between the front end and the server end.
– Sometimes, we have to go through a lengthy discussion to decide whether a certain programming logic should be done on the Server end or the front end mobile application. The decision is important to make sure the consistency of the mobile application in future updates.
– Sometimes after I found a bug/crash, I could not pinpoint the exact location of the problem immediately. I have to do some steps-by-steps troubleshooting to diagnose the problem to see if it is my fault on the front end or the fault on the server end programming by my colleague.
– There are a few different types of membership with different access/function rights. (eg: Admin rights, Guardian rights, paid users (pay using mobile billing vs In App Purchase), trial users, Maxis users, non-maxis users, members using SSO, members without SSO, Android users, iOS users).
– Before calling any APIs. We have to check if the user has the rights to call.
– After an APIs is called, the information returned from the server could be currently used by a few current active view controllers. We will have to update those view controllers accordingly. (eg: When I add a new member into a circle, I call the addMember API and got the new circle list from the server. After I updated the latest circle list in a shareModel, I have to notify some active classes (Map and Circle Table) which are using those properties to reflect the latest changes.

WatchOverMeVCWatchOverMe View Controller
ShakeToTriggerVCShakeToTrigger View controller
EmergencyVC
Emergency View Controller

Project Planning and Development

The project was started about 3 months earlier before I joined SecqMe Sdn. Bhd on August 2013. So, the server end programming and also the Android project has started 3 months ahead of the iOS version.

The design for this app was done before the release of iOS 7. So, the current design for this app is really targeted only for iOS 6 and below.

My colleague and my boss have been very helpful, they have provided me a lot of resources in order to catch up with the Android development.

The iOS version has been released only about 2 weeks later than the Android version.

Circle Watch iOS Project Development and Technical Features

I have to make a few key decisions when developing Circle Watch.

Apple Map vs Google Map
One of them is choosing either the Apple Native Map or Google Map. I was new to location and map technology when I started. My colleague who was the Android developer was using Google map. After I did some research on Google Map for iOS, I learned that it had all the APIs and functions that were needed for the purpose of our project. During that time (August 2013), I believed that the Google Map technology was very stable and far more superior than Apple Map. So, I decided to use Google Map in this project.

Container View Controller
Circle Watch has been designed to have a unique navigation. There are at least 4 active view controllers at the same time. There are 5 active view controllers when “Shake to Trigger” is activated. It is not a common navigation that you see in most apps.

When I first started, I didn’t plan carefully on the navigation. I only utilised the default UINavigationController that is provided by Xcode. After about 2 weeks into developing the project, then only I realised my mistake. I quickly researched into other Xcode technology that can be used and I found Container View Controller.

I fall in love with Container View Controller every since. It is such a powerful technology that makes the complex navigations look like a child play.

Getting Location in iOS 7
Since the release of iOS 7, some well established iOS applications have problem with getting the location from the phone in the background continuously without being terminated by the OS. I have faced the same issue as well. After a few weeks of researching and trying different solutions to solve the issue, I found a solution to solve that problem. You can see the details here: Background Location Update Programming for iOS 7.

Battery Consumption
Before I found the solution stated above, one other solution that works well but it consumes more than 10% of battery per hour. The solution above only consumes about 5% of battery per hour.

I understand the solution that I applied on this project might not be the most elegant solution. I believe if I have time to learn more about multithreading and also the background services API in iOS 7, I definitely will be able to develop a better solution that consumes less battery.

CircleMembersVC
Circle Member View Controller
MemberDetailsVC
Member Details View controller
SafeZoneVC
SafeZone View Controller

Future Project Development for Circle Watch

Maxis Berhad has been going through a major company re-organization with a new CEO and a new team of management. Some employees have been laid off and some projects have been cancelled.

Circle Watch is one of the lucky few projects that is still alive and ongoing. However, they are not able to provide additional funding to develop additional features that are not planned during the initial project agreement.

Thus, the design for Circle Watch still looks like the design for iOS 6.

Maxis hasn’t start to market this app yet. So, We do not have a lot of downloads for Circle Watch yet. We were informed that it is under their marketing plan later this year (2014).

Final Thoughts

Thanks to my boss and colleague, the help that they have provided has enable me to learn and develop this complex project in a “fast tracking” way. Of course, I put a lot of effort myself as well by working voluntarily during the weekend and after office hours (without claiming any OT).

There are a lot of improvements can be done in the current project. For example: add extra animation when moving from one View Controller to another. Make the transition for different view controllers more smoothly. I didn’t have time to improve that because I have to work on another complex project (Watch Over Me 3.0) immediately when the Circle Watch was completed.

Circle Watch just had its soft launch. It is still too early to tell if this project will be successful or not. I personally think this project will see a higher chance to be successful if Maxis is willing to provide additional funding to enhance the design and also add additional social features.

With a more polished design, social features and also marketing campaigns, the chance for this app to reach users who are willing to pay to use this service will be greatly increased.

If you are from Malaysia, you should able to download the app from both the Apple Appstore and Google Playstore: Maxis Circle Watch.

Circle Watch Video Demonstration from the XCode with Simulator

My Experience in Developing WatchOverMe
Market Share for iOS 7

Speak Your Mind

*