title:      ★ iPheeds.org, une version iPhone pour votre blog
slug:       ipheedsorg-une-version-iphone-pour-votre-blog
date:       2008-07-23 06:58:44
type:       post
vignette:   images/logos/ipheeds.png
contextual_title1:  Son propre TinyURL en Python et HTML5 avec webpy
contextual_url1:    20090221-son-propre-tinyurl-en-python-et-html5-avec-webpy
contextual_title2:  Enfin un design pour biologeek !
contextual_url2:    20080829-enfin-un-design-pour-biologeek
contextual_title3:  ★ Mieux que gratuit : le business model réinventé
contextual_url3:    20080227-mieux-que-gratuit-le-business-model-reinvente

Je m'intéresse au web mobile depuis un moment et hier soir j'ai enfin pris le temps de regarder la conférence de Dominique Hazaël‑Massieux : [Bonnes pratiques du Web mobile](http://2007.paris-web.fr/Presentations-des-intervenants) donnée lors de Paris Web l'année dernière. J'avais prévu de faire une version iPhone de ce site mais ça allait à l'encontre du [One Web](http://www.w3.org/2007/02/mwbp_flip_cards#design_for_one_web), j'ai donc réfléchi un moment et je suis arrivé à la conclusion qu'il ne m'était pas nécessaire d'avoir un site entier dédié à l'iPhone mais qu'une représentation des derniers billets serait suffisante.

## Service

De là est née l'idée de créer un site qui permette juste d'afficher un flux de syndication (RSS ou Atom). Il y a des montagnes d'agrégateurs mais je n'ai trouvé aucun site proposant ce service tout simple.

J'ai sorti ma boîte à outils et j'ai commencé à mettre les mains dans le cambouis, et plus j'avançais, plus j'étais persuadé qu'un tel service devait exister mais impossible de mettre la main dessus. Au final je suis arrivé à une solution assez élégante qui permet à ce blog de rediriger les utilisateurs munis d'un iPhone (qui arrivent sur l'accueil ou sur le journal) s'ils le souhaitent.

Mais la bonne nouvelle pour vous c'est que **n'importe quel blog peut maintenant avoir la même représentation de son contenu « compatible iPhone »** !

## Utilisation

Le site d'iPheeds est tout simple : un champ URL permettant de soumettre le flux pour créer votre URL iPhone qui va permettre d'afficher les derniers billets de votre site.

Ce qui donne par exemple pour ce blog :

* http://ipheeds.org/?ipheed=http://www.biologeek.com/data/atom/

Mais l'avantage c'est que vous pouvez iPhoniser n'importe quel flux, allant de votre service préféré aux torrents de vos séries TV (pas de lien mais vous aurez compris le principe).

## Promotion

Une fois en possession de cette URL, vous avez plusieurs moyens d'en faire la promotion pour vos visiteurs, plus ou moins intrusives.

### Simple lien avec détection

C'est la méthode la plus douce, elle permet d'afficher un message sur vos pages lorsqu'un iPhone est détecté, laissant le choix à l'utilisateur de suivre ou non le lien proposé. Si vous souhaitez la mettre en place sur votre site, il faut suivre les étapes suivantes :

Déclarer un container prêt à accueillir votre bannière spéciale :

    <div id="icontainer"></div>

Ajouter un bout de JavaScript qui vérifie s'il s'agit d'un iPhone ou pas :

    <script type="text/javascript">
    if(/iPhone|iPod/i.test(navigator.userAgent)){
        document.addEventListener("DOMContentLoaded", function() {
            document.getElementById('icontainer').innerHTML="message + lien iPheeds";
        }, true)
    }
    </script>

À vous d'adapter pour que ça soit visible, c'est souvent fait dans un h1 ou en tout cas bien visible et en haut de page.

### Popup iPhone

Cette méthode consiste à afficher une popup iPhone à l'utilisateur, c'est la méthode que j'ai retenu ici car elle est intermédiaire et même si elle est relativement intrusive je trouve normal de poser explicitement la question à l'utilisateur.

Cette fois plus besoin de préparer un container mais il faut tout de même un bout de JavaScript :

    <script type="text/javascript">
    (function () {
        if(/iPhone|iPod/i.test(navigator.userAgent)){
            var question = confirm("Voulez-vous consulter la version iPhone de ce site ?")
            if (question){
                window.location = "http://ipheeds.org/?ipheed=http://www.biologeek.com/data/atom/";
            }
        }
    }());
    </script>

Vous devriez alors avoir une popup de cet ordre là :

<p>
    <img
        src="/static/david/biologeek/images/biologeek_iphone.jpg"
        alt="Biologeek iPhonized"
        style="margin: 0pt auto; display: block;"/>
</p>

Qui vous redirige vers iPheeds si vous acceptez.


### Redirection directe

Je déconseille vivement cette méthode qui ne permet pas d'interagir avec le site original ce qui serait problématique dans le cas d'iPheeds vu le manque d'interactions possibles dans la version actuelle. Tiens pour la peine je la donne pas.


## Outils

Je ne sais pas encore si je vais ouvrir le code mais je ne peux pas terminer sans parler de plusieurs outils que j'ai utilisé. Tout d'abord [iUI](http://code.google.com/p/iui/) qui est la bibliothèque à ne pas manquer lorsqu'on veut faire une interface web pour l'iPhone qui respecte les standards Apple.

Au niveau du backend, c'est propulsé avec Django mais [shove](http://pypi.python.org/pypi/shove) et [feedcache](http://www.doughellmann.com/projects/feedcache/) font tout le travail, et le font bien. Bon après ça dépend bien sûr de la popularité du service, si le serveur ça commence à trop chauffer j'aviserais.

Enfin j'ai découvert **deux « astuces » iPhone** ce soir (après 6 mois d'utilisation quand même...), la première grâce à [Rik](http://hanblog.info/blog/) consiste à rester appuyé sur la touche .com pour afficher d'autres extensions. La seconde, je l'ai trouvé en fouillant les paramètres, il s'agit de double taper sur la barre d'espace pour afficher ". " (point suivi d'un espace), ce qui s'avère très pratique pour tout ce qui est mails et sms.

Bon avec tout ça j'ai pas terminé d'intégrer le super design que j'ai dans les cartons... je crois que je suis de moins en moins fan des CSS :-(.

En tout cas, j'espère que vous apprécierez le service, les suggestions sont les bienvenues comme toujours.

**[edit du 25]** : le flux est maintenant [auto-détecté](http://diveintomark.org/archives/2002/05/31/rss_autodiscovery_in_python) si vous soumettez directement l'URL de votre site.

**[edit du 5 août]** : nouvelle version, plus stable, j'ai finalement mis une base de données derrière.
