Mobile content experts Volantis have noticed a peculiar flaw with the iPhone 4. Thanks to a problem with the way iOS 4 identifies itself to web-sites, people visiting websites on a brand-new iPhone 4 will get the same experience as those browsing on an older iPhone 3G or 3GS. We spoke to Paul Duffin, Volantis’ Lead Product Architect, to get an in-depth explanation of the problem.
In order to really understand the problem here, you have to understand User-Agent Headers. Don’t worry, it’s not complicated! User-Agent Headers are a widely supported standard that exist on thousands and thousands of devices. It’s a simple way for the device to store some information about itself, like what kind of software and hardware it’s running. When a device opens a website, the server can check it’s User-Agent Header, and use that information to tailor the website to the phone. It also allows for the collections of statistical information.
…and now on to the interview with Paul Duffin
What’s the problem with iOS4?
The basic flaw in iOS 4 is that when it makes a request to a website, the exact same set of User-Agent Headers are used for both an iPhone 4 or iPhone 3G/3GS. That causes problems because the iPhone 4 has such a better display than the earlier models. Apple made a big fuss about how good the new screen is, but websites can’t identify whether the device is running iOS 4 on an iPhone 4 or an iPhone 3G. And that makes it very difficult to tailor your website to create the experience on both devices.
For developers who’ve made a single mobile website – even if it is specifically optimized for the iPhone – their website will look the exact same whether it’s on the iPhone 3G or the iPhone 4. The only real difference you’ll notice when browsing on an iPhone 4 is that the text on the screen will be crisper. But images, videos and other visual media look no different. And that is something that iOS 4 does.
What we want to do is be able to differentiate between the devices so that we can send images that are suitable to the device. We want to send images with twice the resolution to an iPhone 4 as we send to an iPhone 3. But because we can’t tell the difference using headers, it’s not really possible. People browsing on an iPhone 4 aren’t getting as good an experience as they should be getting.
Without being able to differentiate, we have two choices. The first is to send high-res images to both devices – and that doesn’t work for the 3GS, because it’s already struggling to run the iOS 4 software and can’t really handle the extra workload. The second option is to send low-res images to both – and that doesn’t work for iPhone 4 owners because they’re not seeing the benefit of their purchase. And for advertisers and marketers, it means they have to consider whether or not it’s worth investing in high-resolution images for iPhone 4.
Is there a workaround for this? Or will the solution have to come from Apple?
It is possible to work around it – but it’s a solution that has implications for the experience of both the iPhone 4 and iPhone 3 user. When we get a request for a device that’s running iPhone 4, we need to figure out what the hardware is. So we send a page down to the phone that runs a Java script to query some info available on the phone, like the display resolution, and we then use that information to differentiate between the two. It makes things MUCH more complicated. Instead of being to do this transparently and quickly, you now have to send a page to the phone. And if the phone has its Java-script switched off, then it causes huge problems. And not every web page or service has the ability to send a page down to the device.
How did Volantis become aware of this problem?
I’ve worked out a basic time-line for this. iOS 4 was released in late June. We first became aware of the problem about a week later, because one of our European operator partners was doing some testing. They hit a website with an iPhone 3G running iOS 4, and noticed the graphical problems. They contacted Apple directly, and got a reply telling them “that’s how it’s meant to work”. That’s when they came to us.
We contacted Apple on July 6th and got told that using the User-Agent Header wasn’t “a good solution”. This is a standard that is specifically used to deal with device issues and for gathering statistics! I also asked them about UAProf (User Agent Profiles) – it’s an Open Mobile Alliance standard whose sole purpose is to provide web-servers with information about the device’s capabilities, so that the server can optimize the pages. Again, Apple wasn’t interested. But we’re still in contact with them, trying to get this sorted.
We’ve also had an urgent call from an enterprise customer who again found problems during user experience testing. Someone happened to test their product on an iPhone 3G running iOS 4. We sent them our solution based on sending the page down to the device – and that worked for them. Unfortunately it was specifically tailored for the customer, so we’re working on trying to make this a widely useable solution.
What does Volantis think the ideal outcome of this is? What do you want to happen next?
The absolute minimum that we need is for them to make a one-character change to the header settings for the different devices. Just to tell us whether it’s an iPhone 3 or an iPhone 4. That’s all we need: one character. What would be best for iPhone 4 users is if Apple starts to use UAProf to provide servers with information about their devices display capability. There are plenty of websites out there that can use that information automatically to improve the web performance. If Apple would just supply that information, iPhone 4 browsers would notice a huge visual improvement on their web browsing.
The same website can have a lot of different devices with different capabilities all accessing it using the same software – Android is a good example. Do they suffer from the same problem?
No. We’ve got over 7,000 devices in our device repository that provide us with information about their capabilities. Apart from one or two where there was an acknowledged bug in the device, we’ve never had a problem. They all provide some information that allows us to identify the software and the hardware.iOS 4