It’s funny how things never go the way you expect them to.
Actually, no, it isn’t funny. It’s annoying.
I persevered and finally overcame the stream of minor issues that held up Transmutation’s release.
One particularly frustrating issue happened after I installed the Prime31 AdMob plugin that replaced the broken MoPub one.
While AdMob worked fine on my higher end tablets, it only worked intermittently on the craptacular tablet. My code would call the CreateBanner method, but 90% of the time the success and/or failed methods wouldn’t fire because the app hadn’t detected a reply from AdMob. This is with test ads which should have worked every time.
I think I’ve figured out what caused this: Because the ad request methods are asynchronous, the app has to keep an eye open for a response from the ad vendor. The craptastic tablet is so slow that it can get bogged down doing startup tasks and it will miss the reply coming in from the ad network.
To bypass the issue, I had to make two changes. First, after the custom splash appears, the app requests a ChartBoost interstitial, then waits until it receives a success/failure response, which allows the CPU to focus entirely on watching the network. Once a response is received, the app will then resume the startup process, and the final task before control is handed to the player is to request an AdMob banner. This isn’t a foolproof solution, but it took the success rate from about one in ten to nine in ten attempts. ChartBoost seems to be working 100% of the time now (even if it just returns “failed”), and although AdMob occasionally chokes, the worst case scenario just grants the player an ad-free session.
One of the things that held me up with the release of Transmutation was a new module that I’ve added to my framework which is an attempt to automate some of the processes needed for switching an app to different platforms. I’ve created a custom editor which is a collection of buttons for Amazon/Google Play/iOS/etc. Whatever can’t be automated is displayed as a checklist of things to complete before a build can be created, to help me cut down on mistakes. I’d built something similar when I was working with Shiva, except it was a bash script and it was completely automated, just choose a market and hit “Go”. This solution isn’t quite as neat, but it’s better than re-building the same version of an app over and over because I forgot to switch the billing API over, or to disable something.
A final change I made just before release was to disable Google Play game integration. The in-app achievements and scoring I created does exactly the same job without the headache of having to juggle the user logging into Google or switching from internal scoring to Google and back. If I end up creating something that would really benefit from online leaderboards and achievements, then I’ll activate it as needed.
I released Transmutation a couple of hours ago for Google Play, and I’m currently testing the Slide Me/Android other version, which will also be free, but the ads can’t be disabled. The only non-Google markets that I’ve had any luck selling apps on are AppsLib and SlideMe. In both cases, it was because my apps were promoted to the front page, but sales stopped as soon as the apps disappeared into the murky soup that is the rest of the market place. Unfortunately, it’s really not worth releasing paid versions of apps outside of the main markets.
Speaking of other markets, yesterday I purchased a Kindle Fire HD 8.9″ so I can test for release on Amazon. I’ll also be finishing off my application to become an iOS developer now that Apple is back in business after being hacked.
For my next project, I hope to be able to come up with something I can release on Ouya as well as the other market places, now that I’ve got one of the units plugged into my TV as well.