App Store Keyword Searching Tips

From the iTunes Connect FAQ: [Developer login required]

Your app is search­able by your app name, your keywords and your com­pany name.”

This means you don’t have to waste valu­able keywords by includ­ing your app or com­pany name in the 100 byte keyword limit.

To gain a few more char­ac­ters you can also remove the spaces in-between keywords and sep­ar­ate them with com­mas: just,like,this.

However; don’t be a dick. It’s tempt­ing to fill your app name up with many keywords, this makes your app look cheap — don’t do it!

HTML5 Boilerplate Build Script: no manifest.appcache generated!

The HTML5 Boilerplate build script can auto gen­er­ate your manifest.appcache file but it doesn’t out of the box.

Slightly hid­den away in the docs:

To enable the appcache, just uncom­ment the file.manifest line in the project.properties file. It’ll cre­ate a manifest.appcache file and wire it all up.

You’ll find the project.properties file in build/project.

Now just do ant build and your HTML5 mani­fest file will be cre­ated and auto­mat­ic­ally ref­er­enced in your HTML file.

Xcode 4.2 Doesn’t Show Exception Stack Trace in Console

When using Xcode 4.2 for iOS devel­op­ment there’s an annoy­ing bug where any excep­tions crash to the main.m file instead of high­light­ing the line. Luckily you can set a cus­tom break­point to restore the old and cor­rect behaviour:

  1. Open the Breakpoint nav­ig­ator (CMD + 6)
  2. Click the + but­ton in the bot­tom left
  3. Select Add Exception Breakpoint 
  4. Click Done

Xcode 4.2 Window

Voila!

Status Barred: iOS Screenshot Status Bar Remover App

So many iOS apps developers for­get to remove the screen­shots from their apps on the App Store; often reveal­ing the hor­rendous times the screen­shots were taken and detract­ing from the actual app.

iTunes Connect recom­mends the removal of the status bar, and Status Barred removes the status bar per­fectly regard­less of the screen­shot being ret­ina, iPhone, iPad, land­scape or por­trait. For $0.99 it saves a bunch of time whenever sub­mit­ting or updat­ing an app.

Available on the Mac App Store

iOS: Show Users the Reason You Require Their Location

A great, but under­used loc­a­tion fea­ture on iOS is the pur­pose prop­erty of the CLLocationManager.

So many apps ask for your loc­a­tion — give your users con­fid­ence in shar­ing their loc­a­tion by telling them why you need it!

Example:

 
locationManager.purpose = @"We'll only use your location to show you local events nearby.";
 

You need to do this before you start the loc­a­tion mon­it­or­ing, so:

 
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.purpose = @"We'll only use your location to show you local events nearby.";
locationManager.delegate = self;
[locationManager startUpdatingLocation];
 

Your users will now get a pleas­ant reason when you request their per­mis­sion:
iOS iPhone Screen Location Prompt

I’ve no idea why this is so rarely used, it’s been avail­able since iOS 3.2.

Tip from the Apple docs:

You must set the value of this prop­erty prior to start­ing any loc­a­tion ser­vices. Because the string is ulti­mately dis­played to the user, you should always load it from a loc­al­ized strings file.

Using Boolean Values with TouchJSON

When cre­at­ing an NSDictionary to seri­al­ize as JSON with TouchJSON you can’t set a BOOL value in the dic­tion­ary because it requires an object.

Use an NSNumber, which will be con­ver­ted to true or false by the TouchJSON library.

Eg:

 
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:[NSNumber numberWithBool:YES forKey:@"shouldBeOn"];
[dictionary setObject:[NSNumber numberWithBool:NO forKey:@"shouldBeOff"];
NSError *error = NULL;
NSData *jsonData = [[CJSONSerializer serializer] serializeObject:dictionary error:&error];
 

Produces:

{
    "shouldBeOn": true,
    "shouldBeOff": false
}

The software for this printer is currently unavailable [Lion]

Lion no longer installs all the printer drivers out of the box, I guess to cut down on unne­ces­sary down­load­ing from the Mac App Store. On 10.7.1 it wouldn’t let me add a printer with the error:

The soft­ware for this printer is cur­rently unavail­able. Please con­tact the printer’s man­u­fac­turer for the latest software.

However by run­ning Software Update (from the Apple menu bar) after con­nect­ing the printer, it suc­cess­fully down­loaded the cor­rect drivers. The Add Printer option then auto­mat­ic­ally installs the printer once selected.

Update, thanks to Rob in the com­ments for his sug­ges­tion that seems to be help­ing a lot of people:

If run­ning Apple’s Software Update doesn’t fix it for you, open Preferences->Print & Scan and then hit ctrl-click (or right mouse) over the list of print­ers and select “Reset Printing System…”. That will unin­stall all your print­ers but then I was able to add the Officejet by click­ing the “+” but­ton and the error went away.

Last.fm doesn’t autostart with iTunes in Lion [Fix]

Update 04/08/2011: last.fm have updated their cli­ent, either use the Check for updates.. in the app or down­load it.

Still no scrob­bling but the release notes show they’ve fixed it for Lion:

1.5.4.28012 (mac) (04/08/11)
—————————-
* Plugin fix for iTunes 10.5
* 64bit ver­sion of the plu­gin for iTunes on Lion

Original:
Sadly the last.fm cli­ent doesn’t auto­start under Lion when you run iTunes; and there’s yet to be an offi­cial update. In fact the entire cli­ent has been rather neg­lected, see­ing its last update in October 2010.

If like me, you’ve lost a bunch of scrobbles because you’ve for­got­ten to open it, you can add last.fm to your login items so it’ll auto­mat­ic­ally open when your Mac starts.

Open System Preferences then > Users & Groups; select your user­name and toggle to the Login Items page. Click the + and select the last.fm app to add to the list.

Mac System Preferences - adding last.fm to login items

If like myself, you have the last.fm not show in the dock (and only the menu bar), select the Hidden checkbox.

Unfortunately there’s no iPhone / iPad scrob­bling sup­port on Lion yet, and I’m not sure how iOS 5 WiFi sync will be able to handle it..