Posts Tagged ‘apple’

Thoughts on Apple’s comment system

July 9th, 2010
, ,

Comments from customers are extremely valuable. Take I Can Has Cheezburger Pro Clock which was approved by Apple on July 5th. The very first review was a five star review:

Awesome – The best app ever!

The next review was a four star review with the comment:

This app would be 5* if you could make a setting so you could turn off the clock so it doesn’t change every min. Anyway it’s a great app :)

Another review asked for the ability to save LOLs direct to their photo album.

Immediately I thought – yeah, those are great ideas. So I spent time updating the app with those features, as well as adding a bunch of other features and new feeds (see here for info). Yesterday the new version was approved by Apple and this morning I was very pleased to see the quick turnaround acknowledged in the reviews:

Good job on the update. I wish more developers were as expeditious.

So the comment system is valuable, but it can also be incredibly frustrating. I don’t think there isn’t a developer who would argue otherwise.

So what’s wrong?

  1. Comments for each country must be viewed individually. When there’s 50+ countries to check and you have several applications, that is an incredibly time consuming task, and you’re going to miss some feedback.
  2. There’s no way to get in touch with customers. The person who wrote the comment “Awesome – The best app ever!” later updated the comment to “Idea – Needs a recent category for newest lolz and a option to scroll back in case you missed a pic u wanted to see otherwise it’s great P.S. I found lolrus bucket :P ”. I’d love to be able to feed back to him/her that there’s no way for me to retrieve newest lolz from the Cheezburger API, but I can’t. I’d also love to be able to ask him/her to restore their “Awesome – The best app ever!” review, because I want potential customers to see how happy he/she is with the app!
  3. If you don’t agree with a comment, you can’t reply to it. Someone actually orderedI Can Has Cheezburger Pro Clock and then complained “Don’t see the need for the clock”. What? That’s a slap-your-forehead-in-disbelief moment. The app was designed as a clock and is sold as a clock. Yes, you might want extra features, but to complain that an app does exactly what it says on the tin is, well, like buying a can of Coke and complaining because it has Coke inside. It is possible to request deletion of individual comments, but I’ve never actually done that.
  4. Old comments stay there. Say a user complains about a bug in an application and the developer fixes it and releases a new version solving the problem, unless the user explicitly changes their comment, it will stay there. When I’m purchasing apps, I find that confusing – does the bug still exist or not? As a developer, when I write apps and someone says “It doesn’t have feature X” and I add feature X, I find it very frustrating when the comment “It doesn’t have feature X” just stays there. Beer in Japan, for example, has been updated several times but there are still comments going back to version 1, before I added extra bars and improved the application.

I’d love to see all comments for a single application available on a single page, and I’d love to be able to respond both to users directly and to the public at large about individual comments. Will we ever get to that state? I very much doubt it, but I have my fingers crossed.

Click here for more on I Can Has Cheezburger Pro Clock.

Web technology makes cross platform mobile development easy, right?

July 6th, 2010
, , ,

A few days ago AppStoreHQ released stats to say that from all the iOS and Android developers, only 1,412 developer have released apps on both platforms. On individual platforms AppStoreHQ claims there are 43,185 iOS developers and 10,199 Android developers.

Only 1,412 developers writing apps for both Apple and Android platforms. That seems very low.

To date I’ve used web technologies to build my apps – HTML, CSS, Javascript, Jquery, and sometimes Jqtouch. I made that choice for two reasons: firstly, they are technologies that I’m very familiar wit, and secondly, web technologies had the lure of “write once, run anywhere”.

But I soon discovered it wasn’t that simple – even using web technologies, cross platform development is a female dog.

Take I Can Has Cheezburger Pro Clock as an example. I started to port it to Android from iOS. Having ported before, I already knew there were some differences I’d need to handle – very basic things such as preventing the web view from scrolling, both from touch and arrow keys (which don’t exist on Apple platforms) – so I handled them and expected the app to work. It didn’t.

Every time I port an app, I come across yet another “implementation difference”. I thought I’d got them all, but no. This time the “difference” is just maddening – click events on blank areas of the screen are being executed on other areas of the screen.

Arrrrrghhhhh.

Such issues are not limited to Android either. In June I wrote about the iPad’s localStorage bug. Darn, I wasted some time on that one.

The promise of web tech may be “write once run anywhere”, but as yet, it doesn’t achieve it. Just look at the bug list in Jquery and you’ll see some of the challenges. Search for Android in the list and you’ll see it doesn’t appear once, and I don’t think that’s because Jquery has a perfect record on Android – it’s more likely there are bugs there that have not yet been reported because of the comparatively few Android apps out there (Apple only has a handful of mentions but significantly more apps).

I’m not picking on Jquery here – I think it’s fantastic – I’m just highlighting the challenges web developers face. It’s incredibly difficult to “write once, run anywhere”. The challenges don’t just stop at bugs and implementation differences either – there are emulator bugs on Android, and Apple and Android users interact with applications differently. I’ve written about some of those other challenges in this post: The top five things I learnt as an Apple developer moving to Android development

I was rather shocked when I saw how low the number of cross platform Apple Android developers there are – but thinking about it, and going through the experience of yet another porting, maybe it isn’t so surprising. I’d love to see stats on how many developers have started porting apps and given up. I’ve certainly considered giving up on Android development in the past myself because of the effort v sales ratio compared to Apple, but so far I’ve stayed with the platform because, fundamentally, I believe it’s important to support Android and help it grow. It has stopped me from porting all my Apple titles though.

I Can Has Cheezburger Pro Clock is available on AppStore now, and it will be available on Android once I can track down the 2.1 bug. Beer in Japan and Beer in Korea are both available on Android Market.

Apple & Softbank shocker!

June 30th, 2010
, , ,

In Japan there are 3 main mobile phone networks – Docomo, AU, and Softbank. Of the 3, Softbank has the worst reception. Guess which network Apple chose? Yup, Softbank.

Japan is the only country in the world where the iPad is locked to a particular carrier.

It’s always been assumed that this was due to an Apple/Softbank tie-in, but not according to Softbank:

At Softbank’s annual shareholder meeting in a grand Tokyo auditorium, Mr. Son fielded a question from an investor about whether Softbank is worried that Apple may use another carrier in Japan to sell its products. He said while there is no binding clause keeping Apple tied to Softbank, he is pleased to be able to play a role in getting these products out to as many consumers as possible.

So there we have it – Apple locks us to Softbank for fun. Most likely, Docomo refused the iPhone at first and so Steve has locked down the iPad to “punish” them.

The top five things I learnt as an Apple developer moving to Android development

June 15th, 2010
, , , , , ,

1. Android users use apps differently

On the iPhone and iPad, everything is touch. You navigate from A to B and want to go back to A, you expect that there’s a “back button” on the screen. You want to take an action, you expect there’s an on-screen thing to press to do it.

Android devices are not the same. Android devices have buttons, and people expect them to work. When I first wrote Beer in Japan for Android

Beer in Japan for AndroidBeer in Korea QR Code…my test users immediately raised the issue that the back button didn’t work. Replies of “just press the back button on screen, damn you!” were met with “it’s unintuitive” and “that’s so iPhone!”

When I installed Opera Mini on my $99 Android tablet, it confused me – because after entering a URL, there was no GO button on-screen. I thought it was a bug! But no, Opera Mini requires you to use the MENU key to do certain functions.

Android and iPhone apps are different. I suspect a lot of people who want to write web-apps once and roll them out across multiple platforms are going to get a nasty surprise.

2. You can’t trust the emulator

When I got my hands on my Android tablet, I was shocked to discover two things. Firstly, my apps which were supposed to “scale up” automatically to tablet size didn’t (despite me having the correct flags in the manifest set). Secondly, my apps which were detecting an internet connection were not working properly – they were reporting that there was no internet even when there was a working WIFI connection. Apologies to anyone who bought FailClock, lolcats!, or Engrish Crock – the issue is fixed now so please update!

I consistently get inconsistent behaviour when it comes to screen sizes and rotation on the emulator; the network on/off toggle is 3G only – it doesn’t simulate having a WIFI only connection; launching the mail app cannot be done on the emulator; market links cause apps to crash;…

Fact is, you need a device. And even if you have one, you better test across different screen sizes and devices. For any Android developer, a device like this is essential. It’s worth its weight in gold.

3. Android users buy apps differently, and the Android Market situation is a mess

On an iPhone, you buy an app and it’s bought (unless it’s a $1000 app that your kid buys by accident!)

On Android, users can refund apps within 24 hours. That really keeps you on your toes, because if you see an app being refunded often, it means it’s either buggy or it’s crap. In my case, some one of my apps were being refunded due to the WIFI issue – it took until I bought an Android tablet to know that.

In addition to refunds, there are Android Market issues. On Android Market, you can only price your app in one currency, and it’s determined by the country in the seller’s profile. If you are based in the UK, your apps will be priced in UKP, and that’s what buyers in the USA will see – a UKP price. That refund thing I mentioned earlier? Not uncommon for a US purchaser to see an app at 69p, buy it, then realise it’s 69p and not 69c and refund the app. And if you’re selling from outside the US, get prepared to see “Payment declined” quite frequently also – not all US credit cards allow purchases in other currencies.

It’s not all rosy for US sellers either – many UK buyers get slapped with an unexpected bank charge for dollar transactions if they use debit cards. Ouch.

And the issues don’t end there. People in countries such as Ireland and Belgium can’t even buy applications. Maybe Google worries that the Irish and Belgians will always be drunk on Guinness and Leffe? Want to sell to those users? (I love drunk users!) You have to deal with alternative market sites such as SlideMe.org – and those sites insist you fill out US tax forms if you are an overseas resident. I tried reasoning with SlideMe – neither Google nor Apple requires tax forms, and they don’t withhold tax either – but the replies I got back just reinforced the impression that SlideMe is run by a teenage kid out of his bedroom.

The issues don’t end there either. Some devices – such as the one I bought and those from Archos – don’t have Android Market at all, not even for free apps.

Oh, and the issues don’t end there either. How do you direct link to an app you’ve written for Android? Unlike Apple, there are no nice http links for Android apps. market:// links only work on devices with Android Market (and they crash apps in the emulator!) The only solution I’ve found – codes like this one:

FailClock QR CodeAt least Google are fixing this issue.

Fact is, selling on Android ain’t easy.

There isn’t a day goes by when I’m not approached by another new alternative Android Market opening, often because a device maker is locked out of Google’s market. Google really needs to sort this out. It’s barely worth my time uploading for Android Market as it is without every device maker having their own market. Am I really going to spend my time uploading to Archos market when sales are likely to be less than pitiful?

If any device maker does want my apps on their market, at least send me a test device. I need to make sure my apps work!

4. You have to go native, at least partially

My first thought for transferring my apps to Android was to use PhoneGap. That should work, right? Hmm, the PhoneGap “instructions” page wasn’t encouraging – as well as looking horrendous to set up, too many people said that it just didn’t work as it should. Unanswered from Sept 2009:

Having the same issues as Tavis and Ed Turner … Also, still wondering about all the missing images on this page. Tried with the standard download and github build, no dice. Keep in mind I am able to create and run standard projects with the same eclipse install, AVD and all, but if I wanted to write Java, I won’t be here.

It seems like I’m missing a step in the project setup.

Anyone?

My next thought was to use Titanium. What a mistake-a-to-make-a. From installation, Titanium was bugged – it didn’t allow apps to be run in the Android emulator. Once I hacked that to work by searching Google, I found that 80% of the time my builds were not being installed in the emulator – I had to delete and rebuild the emulator all the time.

When I did get something running, I discovered the iPhone tricks I used to prevent page scrolling (essential for displaying maps on the Beer in Japan application), detecting internet connection (for FailClock and lolcats!), etc simply didn’t work. JQtouch had blinking issues when animating. Items rendered differently.

Cross platform web apps with Titanium and PhoneGap? I wish! In the end, it was simpler to build my own webview wrapper and hook my own calls into it from Java. At least then when I had an issue – such as with rotation – I could solve it easily by looking in Google’s official documentation, rather than trying to hunt around for hacks in PhoneGap and Titanium due to lack of documentation.

(As an aside, I’ve also working on moving away from PhoneGap for my iPhone apps – web apps are a good idea, but performance with JQtouch and JQuery on an iPhone 3G isn’t optimal.)

5. Apps uploads are immediate in Market

With Apple, app submissions take around a week. Once an app gets approved, it then appears across the world over the next 24 hours. You get used to that as an iPhone developer. I’ve got in the habit of uploading my apps and the next day going back and spending time changing the descriptions later.

You can’t do that with Android. As soon as you upload an app, it’s there instantly. Immediately. Everywhere. Not only that, it’s sucked into a million and one websites that attempt to provide a web based front end to the Android Market (since Google doesn’t). You better make sure your words are perfect.

(Of course the fact that you can update apps instantly has advantages, especially when you discover bugs – sometimes I hate the week long Apple wait.)

A final note…

This post isn’t anti-Android and I’m not some Apple lover – heck, I’ve had enough insane rejections and review issues to make me think twice about Apple. This post is simply the lessons I learnt as an iPhone / iPod Touch / WebApp developer moving to Android – a post that I hope will be useful for others Apple developers thinking of writing for Android.

I plan to write a similar post for iPad development in the near future.

My Android Apps

lolcats for Android
lolcats QR Codelolcats!

failclock for AndroidFailClock QR CodeFailClock

Beer in Japan for Android
Beer in Japan QR codeBeer in Japan

Beer in Korea - new for AndroidBeer in Korea QR CodeBeer in Korea

World Cup Factoids and HistoryWorld Cup Factoids & History QR CodeWorld Cup Factoids & History

My iPhone apps include: FailClock, Beer in Japan, Flickr Clock Photoframe, and World Cup Factoids & History.

My iPad apps include: Diet Cakes, Cat Fun and Dog Fun, and Start The Day With Power.