Emirates Confederation Cup iPad Apps

Baldscone was recently contracted by Stereo Creative to produce an app (actually two) for an Emirates event at the Confederation Cup in Brazil.

The two iPad apps collected data for a goal kicking competition around the stadiums and a second app collated all the data from multiple ipads into a single database to draw the prizes and view/export user data.

Here is a screen capture of the two apps in use (that was used for tutorial purposes).

Alpaca Farm Game v2.0

Baldscone has recently finished developing the second installment of the mobile game Alpaca Farm for Pomegranate. The latest version of the game now has an additional four levels of different gameplay, character customisation and in-app purchases. It is also now available on both the Apple App Store and Google Play Store.

On the iPhone the game was coded natively in Objective C using the very useful Sparrow framework. For Android, Sparrow’s little brother Starling was used to port the game across using AS3.

The app features in-app purchasing, particle effects, SSO Facebook integration, inbuilt stats collecting and of course plenty of new gameplay levels and GUI goodness. Watch the new teaser video game trailer here or check out the app’s Facebook page here.

Download Alpaca Farm for iOS
Download Alpaca Farm for Android

pList Validation

Ahh – its 3am and that pList config file you have been pouring over suddenly won’t compile anymore in xCode ;(
Looking through lines of xml markup at these hours isn’t fun (or easy).

Solution: Terminal + plutil!
Thank you for whoever wrote this genius little utility at Apple.
Just type plutil [path to your plist] and hit return. It will list any formatting errors and even give you a line number.

Invoice Split App

Baldscone has produced a simple iPhone app to help with Tim’s accounting.

Invoice Split helps you to calculate the correct amounts of income tax and/or VAT to save every time an invoice gets paid. Quickly calculate the amount of VAT to keep aside for HMRC, how much to set aside for income tax, and more importantly how much ends up being your money to spend! Easily work out how much VAT was included without having to grab a calculator.

For more on Invoice Split visit the app’s dedicated page here.

Best Place To Work iPhone App

Baldscone was recently asked to develop this iPhone application for a client. The application allows users to browse, download and view PDF files. It is a free app and uses several custom coded views – namely the main menu slider view. New PDFs can be updated or added at anytime by the client while the user can navigate each PDF using pinch gestures to zoom, double tap to resize and swipes to flip pages etc.

Download it from the App Store for free now if you are interested in a job!

Using Property Lists

A simple way to get values or settings into a project without having to mess around too much! Just create a property list in xcode called Settings.plist for example and add any key values you need. Then when you instantiate your model load it in as an NSDictionary in and voila!

//Load in Settings
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *plistPath = [path stringByAppendingPathComponent:@"Settings.plist"];
NSDictionary *plistDictionary = [[NSDictionary dictionaryWithContentsOfFile:plistPath] retain];

//Now get out a value using the key name that we have entered in our pList in xcode
NSString *jsonStringURL =  [plistDictionary objectForKey:@"JSON_URL"];

//Show an alert with the value
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"pList Settings" message: jsonStringURL delegate: self cancelButtonTitle: @"OK" otherButtonTitles: nil];
[alert show];
[alert release];

Setting background transparent on UI objects

You can just use [UIColor clearColor] whenever you want to set something with a fill transparent inObjective C.

You can also do this in Interface builder by selecting the object and opening the colors window. Then adjust the alpha value with the slider at the bottom.
This works for all sorts of UI elements – buttons, textfields etc.

[label setBackgroundColor:[UIColor clearColor]];

Defining project constants

Just a quick tip for creating a globally accessible bunch of constants for your iOS project. In AS3 I would use a class with a public static variable but in Objective C you can use constants or definitions and there are probably several other ways to do it.

To use constants globally:

  1. Define a new Objective C class which extends NSObject for example called ProjectConstants
  2. Above the implementation line in its header (ProjectConstants.h) file add this:
    extern NSString * const PAGE_TITLE;
  3. In the implementation (ProjectConstants.m) file add:
    NSString * const PAGE_TITLE = @"My Page Title";
  4. Access it globally by importing the ProjectConstants.h and then you can use PAGE_TITLE anywhere in the project:
    NSString *pgTitle = PAGE_TITLE;
    myLabel.text = pgTitle;

Another quicker way is to use definitions in your implementation of your .m file such as: #define PAGE_TITLE @"Title"
The disadvantage of that is you can’t compare strings using pointer comparison i.e. (myString == MyConstant) but you can still use [myString isEqualToString:MyConstant] but its not as easy to read, and apparently not that fast either.

iPhone simulator launches but only shows black

I was working on upgrading a clients app today to use Apple’s retina display when I ran into this problem that had me stumped for a couple of hours. The application compiled OK but when it installed and launched in the simulator after showing the default.png splash image it went completely black. Huh? The app apparently had worked fine on the original developers computer and after fixing a few compiler warnings that I thought may be the problem I stumbled upon this thread and thankfully the solution.

Apparently this can happen after installing some iOS 3.0 and 4.0 updates. Some of these major updates seem to change the MainWindow.xib file in your project so that the checkbox in Interface Builder > Attributes marked “Visible at launch” is de-selected. Heaven knows why, but I turned it back on and voila it all worked. I thought posting this may help someone else someday a few hours of pain chasing your tail. If anyone knows whether Apple did this for a good reason please post a reply – I would love to know why!?

Opening Safari from your iPhone app

A very simple task I know but when you are starting out its nice to find it on a blog!
Somewhat similar to using URLRequest in AS3 really.
NSString *urlString = @”http://www.mywebsite.com”;
NSURL *url = [[NSURL alloc] initWithString: urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

[webView loadRequest:request];//UIWebView instance named webView declared earlier
[request release];
[url release];