play logo

Sure, "in-app purchases" becomes a bit of a dirty phrase when we're talking about games that abuse the privilege, but they're a critical element of any profitable app ecosystem, and today Google's making a bunch of IAP features easier and smoother for developers and, by extension, you. Here are some of the new improvements.

Easier Purchasing Implementation


Previously, if you bought an item in an app, the purchase was handled via an "asynchronous notification through a background service." This meant that the app would call out to Google to announce a purchase, but then have to talk to a separate service in order to find out how it went. Now, the new API will simply report right back to the application, making it dead simple for developers to implement.

More importantly, Google Play will now manage all purchases made. In other words, Google will keep a record of everything you've bought within an app and the developer can access this information easily at any time. This should make it much simpler to, for example, maintain a library of purchased items. Speaking of...

Local Caching


I love my Marvel app. It's not only my favorite comic reader, but it's one of my favorite apps altogether. Among other features, it contains a library of every comic I've ever purchased. This collection has grown over the years and is now pretty large. Up until version 3 of these APIs, it would've required a call to a server to find out which ones I've bought. Alternatively, a developer could build their own caching solution. It wasn't impossible before, but it meant more man hours to do it.

Now, thanks to local caching, an app can store information about the things I've paid money for right on the device without the need for the developer to create the functionality from scratch. This will save programmers plenty of time and generally make things run faster.

Product Information


This API will allow developers to easily query information about a particular virtual item as its entry appears in the Play Store. What this means is that it's possible to change something in an in-app purchase (like price) in the Developer Console and the new price will show up without ever needing to touch the app's code.

Currently, if a developer wants to, for example, display the price of an item in the user's local currency, that would need to be done on the app's end. Now, they can ask Google what's shaking with this new sale price thing and Google will be all "Oh yeah, that? Now it's €0.99" instead of returning an amount in dollars and forcing the app to convert. This should simplify things a lot.

And More

In general, most things here aren't going to be things the end-user will notice, but the whole process should function a lot more smoothly. Google also promises a "more robust architecture resulting in fewer lost transactions." In other words, things should be broken a lot less and you won't have to wonder where your purchase went.

Now I'll wait for you to make a Nexus 4 order joke.

Source: Android Developers (Blog)

Eric Ravenscraft
Eric is a snarky technophile with a taste for the unusual. When he's not obsessing about Android, you can usually find him obsessing about movies, psychology, or the perfect energy drink. Eric weaves his own special blend of snark, satire, and comedy into all his articles.

  • NickAVV

    Oh thank god, I tried to implement IAP once and had an awful time of it. The new API (IAP-API? hehe) looks a bit easier to wrap my head around, will be giving it another go.

  • http://twitter.com/Quietlyawesome Tyler Cooke

    Thanks, Eric. You've got that blasted Daft Punk song stuck in my head again. :P

  • Jon

    So whit this, we finaly can buy IAP, and when we install the app in other device, or we reset.
    We don't need to buy it agian ?

    • defred34

      no it is something different. what you refer to has been possible for a very long time already. generally, if you buy coins in a game (consumable) they don't get transferred across devices. but if you buy some additional feature (like extra levels in a game, or unlock the full version of an app), that purchase will stay with you for ever (restorable).

  • moelsen8

    wait, so IAP's will be saved now? like, unlocking features of an app etc? this was one of my biggest reasons for being against IAPs - that things that should save, don't. this sucked bad when using more than one device or doing a factory reset. although i wonder if dev's can just let the app forget even if google remembers?

    • http://codytoombs.wordpress.com/ Cody Toombs

      That still depends on what you're talking about. If you're talking about permanent purchases (unlocking levels, removing ads, etc.), then they've always been accessible by the app, but there's now a built-in mechanism to store that locally (rather than building it yourself). I suspect you're asking about consumables (virtual money, single use power-ups, etc.), then those things are still going to be per-installation unless the developer keeps track of that stuff on their own servers... The difference is that the app can now ask Google what stuff you've bought, but there's still no mechanism for tracking what you've used.

      The takeaway should be that nothing has changed for users, especially regarding consumables. These changes will just make apps a lot less likely to crash or forget that you purchased those extra levels. It should also make it possible for developers to remove those annoying 'Checking License' waits (and frequent fails) when you start up some games.

      • moelsen8

        no, i'm talking about permanent purchases, things like premium features of an app etc. it's like hit or miss with apps that remember this information. It's ridiculous to permanently unlock something and not have the app remember upon uninstall/reinstall or installing on another device, factory reset, whatever. that's been my major issue with this stuff. i don't like IAPs one bit, but sometimes it's the only way to get the "pro" version of some apps.

        • http://codytoombs.wordpress.com/ Cody Toombs

          Ahh, then that's usually a problem with the developers of those apps. They should have been using the market API to find that stuff out and caching the results. This new API will make that easier, but there are still developers who will screw it up :)

  • donrhummy

    Why do oyu use the Marvel app instead of Comixology? (BTW, comixology makes the marvel app) Using comixology means you get all the marvel comics but you also get DC and more.

  • adrian

    hm, I still prefer centralized approach. just like steam on pc.
    setup a secure server and let paid user login. can login from different device but not at the same time. can transfer app, save, & in-app purchase between device. isn't that wonderful ?

  • http://codytoombs.wordpress.com/ Cody Toombs

    I know this is a bit of an odd thing to ask, but I'd like to see this topic spark a weekly polling question. I'm really curious what method people prefer for upgrading from a free version (with ads or limited functionality) to a paid version. Options would be:

    * In-App Purchase (IAP) - this has a tendency to be buggy, but might get better with this update
    * Unlock App (like Titanium Backup & PowerAmp) - your device gets messy with installed apps
    * Separate Trial and Paid versions - can be a pain if it requires repeating setup steps
    * I'm cheap and don't pay for apps

    I admit, this is a totally selfish request, but I'm sure other developers would like to see these results as well. Just a thought if there aren't any other more interesting things to do for a poll.