Archive for March, 2009

Snippet: App Store Links

So, you ever wondered how to get your iPhone “Lite” app to trigger the App Store to load the full version’s page? And you didn’t stumble across QA1629? Well, here’s the quick notes version for you.

Step 1: Copy the URL of your full app from the App Store by right-clicking its name, which will be something like

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=306469222&mt=8

Step 2: Replace “itunes” with “phobos”. This is so it doesn’t start Safari.

http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=306469222&mt=8

Step 3: Have the system load it.

NSString *iTunesLink = @"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=306469222&mt=8";
[[UIApplication sharedApplication]
   openURL:[NSURL URLWithString:iTunesLink]
];

Ah, but what if you want to use your iTunes affiliate account? After all, no point leaving 5% off the table! Well, that’s a trifle more complicated, since there’s redirects involved. So take your big long LinkShare string, change “itunes” to “phobos” as above, and create a NSURLConnection to sort out the URL that actually needs to be loaded. Like this:

- (IBAction)buyFullVersion
{
   NSString *referralLink = @"http://click.linksynergy.com/yadayadayada";
   self.iTunesURL = [NSURL URLWithString:referralLink];
   NSURLRequest *referralRequest = [NSURLRequest
   requestWithURL:self.iTunesURL
   ];
   NSURLConnection *referralConnection = [[NSURLConnection alloc]
      initWithRequest:referralRequest
   delegate:self
   startImmediately:YES
   ];
   [referralConnection release];
}

// Save the most recent URL in case multiple redirects occur
- (NSURLRequest *)connection:(NSURLConnection *)connection
   willSendRequest:(NSURLRequest *)request
   redirectResponse:(NSURLResponse *)response
{
   self.iTunesURL = [response URL];
   return request;
}

// No more redirects; use the last URL saved
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   [[UIApplication sharedApplication] openURL:self.iTunesURL];
}

And that, dear friends, is how you get 75% instead of 70% on your in-app referrals. You’re welcome.

[UPDATE: And check out this followup post on how to get individually tracked analytics into your Linkshare links!]

Continue Reading →
21

Library: Oolong Engine

Here’s an open source 3D library that we haven’t mentioned before: the Oolong Game Engine. It appears to take notable advantage of the PowerVR SDK, and provides a comprehensive feature list:

  • OpenGL ES 1.1 support
  • Math library that supports floating-point calculations with an interface very similar to the D3D math library
  • Support for numerous texture formats including the PowerVR 2-bit, 4-bit and normal map compression formats
  • Support for PowerVR’s POD (Scene and Meshes) and the 3DS files formats
  • Touch screen support
  • Accelerometer support
  • Text rendering to support a basic UI
  • Timing: several functions that can replace rdstc, QueryPerformance etc.
  • Profiler: industry proven in-game profiler
  • Resources streaming system
  • Bullet SDK support (for 3D Physics)
  • Audio engine with OpenAL support
  • Networking with the ENet library
  • Industry proven memory manager from http://www.fluidstudios.com
  • Code is up at Google Code and under the permissive MIT license, so that should definitely be on your short list of options to check out for your next 3D iPhone game!

    Continue Reading →
    1

    App Store sales tracking

    So now that Trollwerks is actually an active publisher (and it’s going well so far, thank you; a perfect five-star review record! Woo-hoo! ‘Course, that is out of a very limited sample, “two” to be exact, but hey) we’ve got to sort out plans for making reports to our authors, and the tax man, and yadayadayada. And Apple’s sales reports are … not the most elegant. So we dug around a bit, and here’s a roundup of what we found.

    PART 1: DESKTOP APPLICATIONS

    First off, there’s omz:software’s AppSales — which you can download for free here. However, it’s no longer being developed, and the author recommends what appears to be by far the most popular desktop application, Ideaswarm’s AppViz. It’s $29.95 to buy, but has a 30 day free trial; so we downloaded that. Certainly couldn’t be any easier, all you do is enter your iTunes Connect ID and password and it goes off and fetches all your reports, and makes pretty graphs. And as an extra convenience, fetches all your reviews too. So for the next while, we’ll see how we get on with that . If it seems reliable, hey we may not be motivated to look further. But if we are, there’s a just slightly cheaper desktop application called iPhone Sales Report to check out as well, although our superficial impression is that AppViz is more complete. And prettier. It’s all about the pretty.

    [EDIT: Then here's this AppStore Clerk application -- with source, no less -- but it only parses downloaded reports; and there's this new one App Store Sales which looks like an AppViz competitor...]

    PART 2: IPHONE APPLICATIONS

    We’re not too sure that we’re obsessive enough to actually want to carry a sales checker app around on the phone, especially since the main point here is to easily pass individual reports along, but there’s two choices here. First off, there’s AppSales Mobile, the mobile relative of the above-mentioned orphan AppSales, which is not only free but open sourced on Google Code. [EDIT: Now on github!] Which would make that a most excellent choice if we wanted to add our own automation, no doubt. There is also Sales Report, “The Must-Have App for iPhone Developers” — but for $14.99 and not open source, we’re probably not going to bother looking any closer at that one if AppSales Mobile is anywhere close to whatever our mobile needs might turn out to be.

    [EDIT: And then there's this poor fellow who had "MyAppSales" rejected for ... doing the same exact thing as "Sales Report". Apple, gotta love 'em. But he's selling the source code for $15!]

    PART 3: WEB SERVICES

    Whilst we have an instinctual bias towards things that run, you know, on our computer and don’t need a network to be functional — particularly since getting the appropriate applications’ reports extracted and prepared for delivery is just the kind of task we’d relegate to our out of network reach time by choice — there’s always a place for the cloud thing too. In this category we have Heartbeat, a really quite comprehensive solution to not just formatting Apple’s reports but all sorts of other goodies as well. However, we’re thinking that it’s just plain too expensive for what we need. At least at the moment. We’ll keep an eye on this one. An apparent future competitor currently in beta is AppStatz, but it’s just not looking in the same class as Heartbeat so far.

    [EDIT: And here's another free one in beta to check out.]

    PART 4: MISCELLANEOUS

    There’s a variety of homebrew solutions, strategies, and snippets we stumbled across of possible usefulness. We’re pretty sure if we decided to actually put some work into something we’d start with the AppSales Mobile source, but we’ll list them here for completeness.

    Jonathan Johnson’s appstorestats.py

    appdailysales on Google Code

    appstorereports on Google Code; screenshot here

    itunes-connect-scraper on Google Code

    appstorestats on Google Code from Jonathan Johnson

    maddyhome.com’s bash shell script; discussion here

    Analyzing iPhone App Sales with Zoho DB

    Process Transaction Report droplet

    iTunesConnectArchiver from Rogue Amoeba

    Maddox‘s Piano on GitHub

    And from that last, we’ll share the author’s description with you, for a parting comment which sums up pithily why all of the above was necessary in the first place:

    Piano

    Because Apple hates you.

    POSTSCRIPT: OTHER ROUNDUPS

    09.04.17: Sales Stats Tools For iPhone Apps

    09.05.15: The Definitive List of Sales Report Tools

    09.05.18: The Ultimate App Store Sales Tracking Software Roundup

    Continue Reading →
    7
    Page 3 of 3 123