Guides

HOW TO: Develop an iOS C++ app in two days.



Follow along as an app (BusRadar) is developed from concept to final product. This app is a transit app radar showing stops and buses in the area of the user. Cocos2d-x is used for C++ multi platform development that can be deployed to iPhone, iPad, Android, Windows, Mac, and the Windows phone.

On the server side development uses Python, PHP, C++, Apache, MariaDB(MySQL) running on CentOS.

The development environment is XCode and Sublime Text although cocos2d-x development can be done on Windows and Linux.

This particular app is initially for travelling the Edmonton Transit Service but the General Transit File Specification is used and thus this app will probably expand to other transit systems.

The actual development time is 20 hours spread primarily over 2 days. This is sped up to fit into roughly 3 hours of tutorial. One interesting aspect of the development is that the protocol buffer transit data GTFS is extracted both using Python and C++. Geolocation is used via CoreLocation.

My hope is that by following along people will see that the steps involved in developing a mobile app aren’t that terribly hard or confusing.

The assumption is that the viewer has adequate programming skills in at least C++ and at least a passing knowledge of SQL, Python, and PHP.

I very much endeavour to keep this as simple as possible. The goal is not a tutorial in perfect programming and without a doubt I am going to discover a few bugs, memory leaks, or logic flaws that will need correction.

There is no unit testing in this particular video and for those interested I have already created another video on the subject of unit testing the GUI within a cocos2d-x C++ environment.

https://busradar.lessonstudio.com

Two things not covered:

NSLocationWhenInUseUsageDescription needs to be set in the info.plist for location to work properly.

A cronjob needs to be created to run the get_locations.py script.

6 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *