Tester l’envoi de push notifs Apple sur son app iOS en 5 minutes chrono

Une explication rapide et pratique pour mettre en place les bases du système de notifications d’iOS.

Albrecht ANDRZEJEWSKI
BeTomorrow
6 min readSep 5, 2017

--

Tu as développé ton app pour iOS et tu arrives à la lancer sur un device ? Bien. Tu as réussi à signer ton appli et tu es prêt à l’emmener sur l’appStore ? Parfait. Tu as vu les choses en grand, et tu as également prévu d’envoyer un push sympa à tes utilisateurs pour maximiser le taux de rétention de ton app ? Évidemment ! Bref, tu as besoin d’envoyer des messages pour notifier tes utilisateurs, et cet article est là pour t’accompagner.

Tu as ton device en main, Xcode sous les yeux, et tu aimerais pouvoir tester rapidement l’envoi de push Apple sans forcément te perdre dans les méandres obscurs de la documentation officielle dédiée à l’Apple Push Notification System (APNS). Le but ici est de mettre en place les bases du mécanisme aussi rapidement que possible, et te permettre d’économiser un peu de temps pour aller boire un café - te coucher - implémenter des features qui roxent (rayer la mention inutile).

Il va te falloir franchir les 3 étapes suivantes pour devenir un véritable Jedi des pushs iOS :

  • Épreuve 1 : obtenir les certificats APN correspondant à l’application
  • Épreuve 2 : intégrer les certificats au niveau du système, mettre en place le code applicatif
  • Épreuve 3 : configurer son outil et… envoyer les notifs !

Prérequis :

  • avoir sous la main un Mac avec un iPhone / iPad / iPod connecté au réseau
  • avoir la dernière version de Xcode et du SDK iOS installé sur le Mac
  • être membre du programme de développement Apple

Épreuve 1 : obtenir les certificats APN

Les certificats c’est pas compliqué… À condition de démystifier un peu leur utilisation au préalable. Pour les pushs notifications, un certificat sert à deux choses :

  • d’une part il permet à Apple d’identifier l’application vers laquelle les messages doivent être routés
  • d’autre part il sert à vérifier l’identité de la personne qui émet les messages.

En pratique, direction https://developer.apple.com , onglet “Account”, rubrique “Certificates, Id & Profiles” dans le menu latéral. Précision importante : à l’heure actuelle il faut impérativement être membre de l’Apple Developer Program pour avoir accès à ce menu (n’espérez pas pouvoir envoyer des notifications depuis un compte dévelopeur gratuit).
Une fois sur la page dédiée, un clic sur l’icône “+” ouvre le wizard.

L’écran sur lequel tu arriveras devrait à peu près ressembler à celui-ci :

Figure 1 : la sélection du type de certificat

Etape 1.1 : la sélection du type de certificat
Cette première page permet de choisir l’environnement sur lequel le certificat sera valide :

  • Sandbox pour effectuer des tests (“Development” sur la figure 1)
  • Production pour la prod comme son nom l’indique.
    Les étapes du wizard “Request” et “Generate” nous guident dans la suite du process de création de certificat.

Etape 1.2 : la demande de signature
On va se servir de l’outil d’Apple Trousseau d’accès (aka Keychain en VO). Le plus difficile est de trouver l’entrée (voir figure 2) dans le menu de l’application pour réaliser une CSR pour Certificate Signing Request. Ce terme barbare désigne le fait de demander à Apple la création d’un fichier permettant de prouver notre identité. Cette demande de certificat s’effectue directement auprès d’Apple (qui joue donc le rôle de CA - Certificate Authority).

Figure 2 : comment faire une requête de signature de certificat auprès d’Apple

Il faut demander à stocker la requête de certificat sur le disque dur. Appelons le fichier certifPush_sandbox_xxx.certSigningRequest

Etape 1.3 : la génération du certificat

Next step : on dispose maintenant sur notre disque dur d’un fichier certifPush_sandbox_xxx.certSigningRequest . Un clic sur “Choose file” (voir figure 3) et hop Apple s’exécute, et nous propose dans la foulée de télécharger un magnifique .cer.

Figure 3 : l’envoi de la requête de signature passe par l’upload d’un fichier CSR

Épreuve 2 : intégrer les certificats (et préparer son app)

Nous disposons maintenant d’un ensemble clé privée + certificat APNS sous la forme d’un fichier .cer. Cet ensemble constitue ce qui est appelé une “identité” qui nous donnera le droit de se connecter aux serveurs de push d’Apple (les fameuses “gateways APNS”). Pour que l’OS connaisse et utilise cette identité, il suffit d‘un double clic sur le .cer afin de l’importer dans le Trousseau d’accès.

Pour utiliser cette identité et anticiper son utilisation, nous allons convertir cette identité en un fichier “p12” qui est un format standard d’encapsulation des clés RSA. Le plus simple est de se servir à nouveau du Trousseau d’accès (l’opération peut toutefois être réalisée en ligne de commande). Un clic droit sur l’item représentant l’identité .cer qui vient d’être ajoutée propose l’option d’Export de l’identité (cf. figure 4) au format p12.

Figure 4: exporter l’identité par un clic droit permet de récupérer les certificats sous différentes formes

Gardons ce fichier p12 bien au chaud pour l’Etape 3.

Épreuve 2 bis :

A ce stade, il convient de préparer/ vérifier que tout est bon coté appli. On ouvre Xcode, et on va en particulier vérifier la présence des 2 points suivants dans le code du projet :

  • Après un double clic sur l’icône de projet dans XCode, vérifier que le toggle “Push Notifications” est bien activée dans l’onglet Capabilities
Figure 5 : les propriétés du projet xcode doivent déclarer l’utilisation des notifications Push
  • L’application delegate s’enregistre au service de notifications en déclarant quel sont les type d’alerte attendus par notre application (bannière, sons, valeurs de badges…) :

Épreuve 3 : configurer l’outil et envoyer les pushs

Il est temps d’envoyer nos premiers pushs ! Pour cette dernière étape, on va avoir besoin d’un générateur de pushs. Le générateur de push va forger les requêtes HTTP permettant de dialoguer avec la gateway Apple. Si vous avez bien suivi, le sésame pour se connecter à cette gateway est le fichier .p12 que nous avons créé lors de l’étape 2.

Pour cette raison, je vous déconseille d’utiliser les générateurs de push en ligne puisqu’ils vous demanderont d’uploader votre .cer ou votre .p12 contenant votre clé privée afin de se connecter chez Apple en votre nom.

Je recommande donc de choisir un outil open source qui sera utilisé depuis notre propre poste de travail, afin de garder en lieu sûr notre certificat APN.

NWPusher est un outil de génération de pushs dont les sources sont récupérables à cette adresse :

Une fois le repo github cloné et l’appli ouverte dans xcode, nous avons besoin de 2 informations :
- le device token
- le p12 contenant notre certificat de push

Confions donc notre .p12 à Pusher, et lançons notre appli iOS depuis Xcode en gardant un oeil sur la console pour récupérer la valeur du device token.

Un copier coller plus tard, et nous sommes prêt à communiquer avec l’appli via la gateway d’Apple.

NWPusher, un outil open-source dédié à la génération de push notifications Apple

3…

2…

1…

FIRE !

Les pushs notifications s’affichent sous forme de bannière ou d’alerte, selon les préférences de l’utilisateur.

Resources utiles

La page d’aide officielle d’Apple : http://help.apple.com/xcode/mac/current/#/dev11b059073

--

--

Albrecht ANDRZEJEWSKI
BeTomorrow

Product Manager @betomorrow, élevé à la data, passionné par l'agilité et les méthodes d'innovation continue.