le lab

AppSales

A great app for all iPhone developers / editors. Don't use it too often though, it gets updated only once a day.

http://code.google.com/p/appsales-mobile/

Checking email in iPhone Code

I just spent a lot of time doing something that would have been ridiculously easy with Cocoa's NSPredicate : checking an email address to know if it is valid, before sending something to it. NSPredicate is not available on the iPhone.

I used instead RegexKitLite, which in turn uses libicucore, this time available on your iPhone, to check things. I just added the core class, and the RKLMatchEnumerator too, which adds a matchEnumeratorWithRegex to NSEnumerator. Et voilà!

@@

 NSEnumerator *matchEnumerator = NULL;
 NSString    *emailRegEx = @"A-Z0-9a-z._%+-+@A-Za-z0-9.-+\\.A-Za-z{2,4}";

 matchEnumerator = emailAddress matchEnumeratorWithRegex:emailRegEx;

 //Validate email address 
 if (matchEnumerator nextObject == NULL) {
   UIAlertView *alert = [UIAlertView alloc initWithTitle:@"" message:NSLocalizedString(@"EmailNotValid", @"No search") delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
   alert show;	
   alert release;
   return;
 }

@@

Nouveau site

Il faut savoir surfer sur la vague des succès : je viens d'ouvrir un nouveau site bestiPhoneApps.eu, un site très simple, mais de parti pris. Il recense les meilleures applications pour l'iPhone, vu de mon point de vue (donc forcément parfaitement subjectif).

Je suis resté honnête : je n'ai pas encore mis mes propres applications dedans car je ne considère pas qu'elles fassent partie de ce lot de 'meilleures applications'.

Si vous pensez par contre que vous méritez d'y être, utilisez la nouvelle fonctionnalité essentielle d'itunesconnect : les bons d'achat. Vous pouvez offrir jusqu'à 50 exemplaires de votre application. Envoyez moi un de ces bons si vous voulez que je la teste (prévenez moi avant, je vous dirai si elle est susceptible de m'intéresser ;-)

Réunion de geeks, euh non de développpeurs

La semaine prochaine, le jeudi 2 octobre à 18h, j'organise une réunion de développeurs iPhone à La Cantine, un espace de travail collaboratif. Cette réunion est ouverte et participative. Ce ne sera pas un mini barcamp mais presque...

Personnellement, j'essaierai de partager mon expérience de l'AppStore avec les personnes présentes pour leur éviter les soucis que j'ai rencontré, et je ferai une présentation du travail de Jeff LaMarche avec SQLPersistentObjects.

Alors il y a un problème avec ce type de réunion : l'accord de confidentialité. Celui dont je ne peux parler en termes explicites. A priori, s'il y a accord de confidentialité, pas moyen de parler du SDK. La beauté de la chose c'est que la réunion en question parlera de choses qui ne concernent pas à proprement parler le SDK iPHone : SQLPersistentObjects est écrit pour Cocoa.

Par ailleurs, j'espère que les personnes présentes auront les mêmes relations que moi avec Apple.

Récupérer ses stats AppStore dans un mode lisible

Pour récupérer les stats de vente de mes applications sur l'AppStore (car mon application a été acceptée), j'utilise l'excellent appstorestats.py. Mais comme je suis encore plus flemmard que cela, j'ai rajouté un petit script pour traiter rapidement toutes les stats non traitées et ouvrir directement dans Numbers:

#!/bin/sh
cd /Users/cyril/iPhone/TrackMe/AppStore/iTunesConnect
gunzip *.gz
./appstorestats.py
open -a /Applications/iWork\ \'08/Numbers.app /Users/cyril/iPhone/TrackMe/AppStore/iTunesConnect/all_apps_downloads_per_day.txt

Si je pouvais en plus récupérer les stats avec curl ce serait top, mais l'application Piano ne permet pas encore cela. Ils ont promis d'y réfléchir.