plop à tous … encore un article « borderline » et completement useless …
Cette fois pour tester les notifications C2DM (cloud to device messaging), l’équivalent Android des push iphone en un peu plus complexe nécessité d’avoir un compte google devant s’authentifier pour ensuite envoyer un message par device_id (le device id pouvant expirer, tout comme l’authentification), pour les push iphone il suffisait d’avoir les tokens et basta ^^).
Mais au final le système répond plutôt rapidement, cela dit, en suivant de nombreux tuto sur le developement d’application utilisant C2DM (ici un premier tuto complet et ici un second tuto assez complet et intéressant).
Le problème c’est que pour tester le C2DM, la méthode nécessitant une authentification, et l’utilisation d’un header spé, pour tester l’envoi de notifications, certains recommendent de créer une seconde appli android pour envoyer les push, ou bien encore d’utiliser curl pour les requêtes, un outil qui n’est jamais installé de base sur une machine (la plupart des sytèmes unix intégrant wget, pourquoi utiliser curl?).
Donc pour le fun, voici ma version wgeté (j’ai découvert l’usage des headers sur wget) :
#!/bin/bash
if [ $# != 3 ]
then
echo "Usage : $0 'mail' 'reg_id' 'message'"
exit
fi
email="$1"
registration_id="$2"
message="$3"
post_data="registration_id=$registration_id&data.message=$message&collapse_key=0"
if [ ! -f /tmp/ClientLogin ]
then
read -p "Password : " -e password
wget "https://www.google.com/accounts/ClientLogin" --post-data="Email=$email&Passwd=$password&accountType=GOOGLE&service=ac2dm" -qO- > /tmp/ClientLogin
fi
auth=`cat /tmp/ClientLogin|grep "Auth"|awk '{split($0,array,"Auth="); print array[2]}'`
wget "https://android.apis.google.com/c2dm/send" --header="Authorization: GoogleLogin auth=$auth" --post-data="$post_data" --no-check-certificate -qO-
Si le script ne renvoit rien, c’est bon, si il répond par un Error=UnMessageDerreur, c’est pas bon, bon dev 😉