On 11/03/2008, Ivan Pope <[EMAIL PROTECTED]> wrote:
> Thanks. And if I might make so bold - why do they do this?

Presumably it's because they want to send Flash to a PC, and MP4 only to phones.
Unfortunately user agent sniffing isn't really designed to do what
they are trying to do.
They would generally have to have a list of all phones user agents and
whether they support Flash or MP4 and serve accordingly.

There are better ways of doing this.
For instance the user agent (i.e your phone) can chose itself by being
given multiple options via a 300 response code.

Or check what the browser/phone actually wants, i.e. check the Accept
header to see if it wants .flv or .mp4

Or use the fallback of HTML object tags.
Present a Flash object tag and inside it put the HTML for MP4.
If flash is not present the browser should fallback to what's inside
the tag (may fail if Flash is present but incompatible, or wrong
version).

Of course most methods fail at some point so provide a link to the
user to override possible incorrect choices. User Agent sniffing is
certainly not a good solution if there is no user override for
correcting it's mistakes. It is certainly bad accessibility wise.

> What is it
> specific about the iPhone that this feed needs to be limited to iPhones?

Nothing, it's just their way of separating "PC" and "phone", if it
isn't an iPhone they assume it's a PC. Similar to some sites that
assume if a web browser is not IE it's Firefox/Netscape.

> Or, to put it another way, if it wasn't sniffing my phone, could I watch
> this feed on my N95 (insert any other capable phone or phone app here)

If your phone supports MP4 and HTTP then it should be fine.

For now fake user agent. In the long run complain to the BBC or the
BBC Trust. (This is NOT platform agnostic as requested by the trust,
specifically scanning for a certain product and delivering them better
content is extremely risky).

As I said it shouldn't take more than 10 minutes for the BBC to correct.

If they are doing things server side then just alter there code to
server MP4 if user agent is iPhone, OR if a certain argument in the
URL is set.

Something like:
<?php
  $version = 'flash';
  if (isset($_GET['force']))
    $version = $_GET['force'];
  else if (isIPhone())
    $version = 'mp4';
  else
    $version = 'flash';

  if ($version == 'flash')
    // serve flash stuff here
  else if ($version == 'mp4')
    // server mp4 here
  else
    echo 'Unrecognised version!!!';
?>

And then add links with force=flash and force=mp4 so the user can
correct mistaken user agent sniffing. Combining this with some of the
other above methods would be even better. But unless the BBC wants to
actually hire me I'm not going to do their jobs for them!

Of course that code may not work, I haven't done PHP for over 3 years
but it is the basic idea.



Andy

-- 
Computers are like air conditioners.  Both stop working, if you open windows.
                -- Adam Heath
-
Sent via the backstage.bbc.co.uk discussion group.  To unsubscribe, please 
visit http://backstage.bbc.co.uk/archives/2005/01/mailing_list.html.  
Unofficial list archive: http://www.mail-archive.com/backstage@lists.bbc.co.uk/

Reply via email to