Formations et Tutoriels sur les technologies mobiles
Catégorie :Développement iPhone OS
iOS, anciennement iPhone OS, est le système d’exploitation mobile développé par Apple pour l’iPhone, l’iPod touch, et l’iPad. Il est dérivé de Mac OS X dont il partage les fondations (le kernel hybride XNU basé sur le micro-noyau Mach, les services Unix et Cocoa, etc.) – WikipédiaPlus d’informations : iOS Dev Center
Dans ce article nous allons voir comment obtenir de façon programmatique les coordonnées géographique d’un lieu depuis votre application iOS. La localisation est en enjeu important au sein d’une application. Elle a fait le succès de start-up comme Foursquare. Une bonne géolocalisation fait toute la différence, l’expérience utilisateur en est directement impactée.
Créer un nouveau projet Xcode:
Ouvrir Xcode, Créer un nouveau projet en choisissant View Base application. Nommons cette application “GPS_Location”.
Xcode crée automatiquement la structure du projet, et charge toutes les librairies nécessaires au fonctionnement de base d’une application de type View. Vous pourrez vérifier qu’une classe ViewController a bien été créée. De plus dans le dossier Resources des fichiers portant l’extension xib ont été générés.
Importer la classe de géolocalisation
Il suffit pour cela d’ajouter au projet le Core Location framework (CoreLocation.framework). Pour ce faire, il vous faut modifier le fichier GPS_LocationViewController.h et ajouter :
Faites un double-clique sur le fichier GPS_LocationViewController.xib pour l’ouvrir avec l’interface Builder. On va faire simple ici. On va juste afficher un bouton, qui au clic nous renverra les coordonnées géographique de la position courante.
Dans la liste à gauche (ou droite si vous l’avez déplacée 🙂 de l’interface builder, Faites donc un glisser-déposer d’un bouton (Round Rect Button) et placez le sur la page :
Modifier le fichier GPS_LocationViewController.m
C’est le coeur même de l’application. C’est d’ici que nous allons gérer le comportement du controlleur associé au bouton. Modifier donc ce fichier et ajouter simplement :
Comment faire pour avoir des notifications sur son application Iphone ? C’est ce que nous allons voir tout de suite !
Avant de commencer à coder, il faut d’abord comprendre le fonctionnement et connaître les différents acteurs qui contribuent à ce service.
– Les APNS sont des serveur Apple permettant de notifier une application présente sur un Iphone.
– Le provider se charge d’envoyer à l’APNS, le « device token« , identifiant du téléphone à notifier et le message à envoyer (payload).
La notification d’un terminal mobile comprends deux étapes distinctes : la récupération du device token ( lorsqu’on utilise pour la première fois ) et l’envoi d’une notification à partir du provider.
1. Comment s’effectue la récupération du token ?
Tout d’abord, l’application envoie une requête une requête à l’APNS par le device ( le téléphone ). Une fois cela effectué, l’APNS renvoie le token au device. Ne pas confondre un device token avec l’UDID qui est l’identifiant du téléphone !
ATTENTION : Le device token est unique pour chaque application utilisée sur un device particulier. Chaque application présente dans le device peut recevoir une notification d’un provider !
Le token doit donc être différent pour que l’APNS notifie la bonne application.
Voilà comment on peut illustrer les acteurs intervenant dans une demande de device token auprès de l’APNS:
2. Comment envoyer une notification ?
Le provider se connecte à l’APNS pour notifier une application présente sur un device. Il peut également notifier plusieurs devices à la fois, il faut donc spécifier le device token à notifier !
Un message à afficher doit également être fourni.
Voici comment on peut représenter une demande de notification auprès de l’APNS
Pour voir la liste des device tokens qui ne sont pas disponibles, il faut consulter ce qu’on appelle le feedback service. En effet, lorsqu’on désinstalle une appli sur son téléphone, il est normal de ne plus envoyer de notifications !
Bon tout ça c’est bien beau mais … comment mettre en place ce service ? Oo
Et bien il est temps de se pencher sur la mise en place de tout ça 😉
3. Mise en place du service
Le provider a besoin d’un certificat pour fonctionner, pour cela il faut :
Il faut aller dans Keychain Access -> Certificat Assistance -> Request a certificat from a certificat authority.
Il vous faudra ensuite renseigner les champs Nom et Email. En veillant à ce que la case « Save to disk » est bien cochée, enregistrer le certificat là où vous le souhaitez sur votre ordinateur.
3.2. Avoir son App ID !
Chaque application sur Iphone a son App ID unique.
Depuis la page de votre compte développeur chez Apple, il faudra aller dans « App IDs » et cliquer sur « New App ID« .
Remplissez les différents champs ( Description et Bundle Identifier ).
3.3 Configurer le push
Il faut maintenant configurer le push notification de l’application.
Sélectionnez l’App Id qui vous intéresse dans la liste d’app Ids puis cliquez sur « Configurer« .
Maintenant il vous faut cocher Enable for Apple Push Notification service, cliquez maintenant sur le bouton « Configurer » à coté de Developpement Push SSL certificate.
Il faudra entrer le certificat que vous avez obtenu précédemment avec le keychain, cliquez ensuite sur « Generate » et sauvegardez le certificat quelque part sur votre ordinateur 😉
Le provider utilisera à l’avenir ce certificat (fichier aps_developer_identity.cer) pour faire la liaison avec l’APNS qui renverra une notification !
Il est maintenant d’attaquer la configuration du device !
4 Ajout d’un device
Pour tester nos applis sur notre Iphone, il faut d’abord enregistrer celui-ci, on peut utiliser autant de devices qu’on veut pour effectuer ses tests !
Première étape de l’enregistrement, la récupération de l’identifiant unique du device ( l’UDID) obtenu depuis xcode en faisant Window -> Organizer.
L’UDID se trouve à coté du libellé identifier.
Deuxième étape : il faut maintenant ajouter un device sur votre page développeur en se rendant dans la rubrique Devices puis sur « Add device« .
Entrez ensuite le nom et l’UDID du device avant de confirmer l’enregistrement !
5 Création d’un profil provisoire
Ce profil nous permettra d’utiliser notre device pour faire des tests. Il faudra impérativement l’installer sur chaque device sur lequel on veut tester notre appli !
Pour cela, allez sur votre page développeur dans la rubrique Provisioning et cliquez sur « New Profile« .
Spécifiez le nom de profil puis sélectionnez l‘app ID. On utilisera l’app ID qu’on a utilisé, « App_ID« . Il faut ensuite préciser la liste de devices que vous voulez associer à ce profil puis confirmer !
A l’apparition du profil sur votre écran, enregistrez le sur votre ordinateur, il aura pour extension mobileprovision.
6 Installation de l’application sur votre smartphone
Premièrement, il faut evidemment … connecter le device !
Déplacez votre profil créé ( le fichier .mobileprovision ) sur l’icôone Xcode dans votre Doc.
Dans Xcode, allez dans Window puis dans Organizer, vous devriez voir le profil installé sur le device une fois que vous le sélectionnez dans la liste à gauche !
7. Xcode ( coté client ) :
On peut, en plus du messaage texte de notification, avoir un son à jouer et un numéro de badge à afficher.
7.1 Comment ajouter un fichier son ?
Pour jouer un son, il est mieux d’ajouter un fichier .wav dans le répertoire Ressources de votre projet Xcode !
7.2 Configuration pour la notification
Sélectionnez le nom de votre appli sur Xcode puis faites Command-l . Dans l’onglet Properties, mettre le bundle identifier utilisé pour la création de l’app ID sur votre compte développeur (com.aptea.lbp).
Allez maintenant dans l’onglet Build, cherchez Code signing Identity. Faites Sélectionnez « Any Iphone OS device » puis sélectionnez le profil.
7.3 Demande de Device Token
Sous Xcode, ouvrir le fichier Delegate et ajouter les lignes de code suivante :
Les lignes de code ci-dessus permettent d’afficher le device token du device sur lequel on teste l’application.
En cas de succès, on a :
Alors qu’en cas d’échec, un message d’erreur est généré !
Regardons maintenant comment ça se passe….
8. ….du coté serveur !
Afin d’envoyer une notification de push à l’APNS, il faut tout d’abord communiquer avec celui-ci en envoyant le certificat SSL créé,
construire le payload ( message à envoyer ) et envoyer la notification à l’APNS.
8.1 Comment générer Le certificat
Retrouvez le fichier aps_developer_identity.cer que vous avez généré et double-cliquez dessus pour l’importer dans Keychain !
Ouvrez maintenant Keychain sur votre mac, une fois dans l’onglet « Login« , filtrez tout ça selon la catégorie « Certificates« .
Puis, clic droit sur Apple Development Push Service -> Export Apple Development Push Service ID123 et sauvegardez le fichier sous format p12 ( nom_fichier.p12 ). Il n’est pas nécessaire de rentrer de mot de passe !
Faites la même manipulation pour la private key et enregistrez le dans le même format !
Il faut maintenant convertir ces fichiers dans un format spécifique, le format pem. Pour cela, l’utilisation de ligne de commande est nécessaire !
– le message d’alerte à afficher sur le device ( Alert )
– Le badge, nombre à afficher dans le badge pour l’icône de l’application sur la page d’accueil du device
– Le texte indiquant le nom du son qui est activé au moment de l’alerte ( Sound )
Et maintenant un exemple de payload qui affiche un message d’alerte, « 1 » comme badge pour l’icône d’application et jouer le son spécifié lors de l’alerte.
{
« aps » : { « alert » : « This is the alert text », « badge » : 1, « sound » : « default » }
}
8.3 Générer le payload depuis un serveur php
Sur votre serveur, créez un fichier .php qu’on appellera par exempleapns.php . Placez dans le même répertoire le fichier .pem généré par ligne de commande, on l’appellera par exemple apns_dev.pem
Veillez bien à ce que le port 2195 soit bien ouvert.
Pour tester le service de push, on peut utiliser une URL de ce genre là :
Surtout n’oubliez pas de consulter régulièrement le résultat du feedback service. En effet, ce service liste les devices où la notification est impossible, dans la plupart des cas, cela est dû à la désinstallation de l’application par l’utilisateur.
Ainsi s’achève ce long tuto sur la notification sur Iphone en espérant qu’il vous a été d’une grande aide et vous a éclairé sur certains mystères de la notification ! 😀