Ce tutoriel est le premier d'une série en trois parties consacrée à l'utilisation des fonctionnalités de notification push d'iOS 3.0+. Il couvre tout ce que vous devez faire pour que les notifications push fonctionnent dans votre application: enregistrement des notifications, configuration de votre application sur le portail de provisioning iOS, envoi de notifications au service de notification push d'Apple (APNS) et gestion de ces dernières dans votre application..
Dans ce tutoriel, nous allons créer une application de démonstration appelée Poke. Il vous permettra de "piquer" les utilisateurs via des alertes de notification push. Bien que le service ne soit pas très utile, ce tutoriel vous apprendra les bases de ce que vous devez savoir pour commencer..
De nombreuses applications de bureau utilisent des processus en arrière-plan pour fournir en permanence aux utilisateurs des informations actualisées. Ces applications d'arrière-plan implémentent généralement une conception par extraction: elles interrogent activement un serveur pour connaître les modifications apportées à leurs données. Il n'est pas rare que plusieurs de ces programmes s'exécutent sur votre ordinateur et se connectent à un certain nombre de serveurs tiers..
Bien que cela ne pose peut-être pas un problème sur un ordinateur de bureau disposant de beaucoup de mémoire et de flux de traitement, ainsi que d'une alimentation sans fin, cette méthodologie devient rapidement un problème pour un appareil mobile avec une quantité beaucoup plus limitée des trois.
Avec les notifications push, introduites dans iOS 3.0, Apple a contourné ces limitations avec une conception basée sur la technologie push. Plutôt que de forcer votre application à rester ouverte et à rechercher constamment des mises à jour, comme dans le modèle d'extraction, iOS lui-même écoute les mises à jour et informe votre application dès leur arrivée. Le résultat est une utilisation réduite du processeur, de la mémoire et de la batterie. De plus, au lieu que chaque application se connecte à son propre serveur, une seule connexion persistante est maintenue entre le périphérique iOS et APNS..
Comme indiqué dans le diagramme ci-dessus, avec les notifications push, votre serveur se connecte à APNS au lieu du périphérique de l'utilisateur final. Lorsque les données qui intéressent un utilisateur donné changent, votre serveur envoie un message à l’APNS qui en informera ensuite l’utilisateur. L’utilisateur peut ensuite décider quoi faire avec ces informations (c’est-à-dire agir maintenant ou attendre plus tard).
Remarque: Votre application devra peut-être encore télécharger tout ou partie des données modifiées de votre serveur, mais la différence est que le périphérique de l'utilisateur n'a pas perdu de cycles de traitement, d'autonomie de la batterie et de bande passante réseau, demandant à votre serveur toutes les 15 minutes s'il y a du nouveau. Nous entrerons dans plus de détails à ce sujet dans un segment ultérieur.
Les notifications push fonctionnent sur n'importe quelle connexion réseau et il n'y a aucun coût supplémentaire (prélevé par Apple) pour vous, en tant que développeur, pour ajouter cette fonctionnalité intéressante à vos applications..
Dans les directives récemment publiées sur l'App Store, Apple a défini un certain nombre de règles concernant le service. La plupart sont du bon sens, mais vous voudrez peut-être les consulter si vous ne les avez pas déjà.
En un mot, il s'agit du flux de travail d'application de base pour les notifications push:
Nous allons couvrir chaque élément de la liste au fil de cette série.
Il existe trois exigences de base pour le service de notification Apple Push:
Comme mentionné précédemment, Apple ne fait pas payer les développeurs pour utiliser ce service. Cependant, le service ne fournit aucune sorte d'interface à partir de laquelle vous pouvez envoyer des notifications - vous devez disposer de votre propre serveur qui se connecte aux serveurs Apple et envoie des envois. Il peut y avoir des frais d'hébergement et d'autres frais associés à ce processus..
Un certain nombre de services tiers ont surgi pour résoudre ce problème. Ces services agissent en tant qu'intermédiaire entre vous et l'APNS. Ils gèrent la configuration de la connexion SSL à l'APNS et exposent généralement une API que vous pouvez utiliser pour envoyer plus facilement des envois. Certains ont même une interface Web que vous pouvez utiliser pour envoyer rapidement des notifications sans même écrire de code. Dans cette série, nous utiliserons Urban Airship, principalement en raison de sa facilité d'utilisation et de ses prix avantageux..
Le certificat identifie votre application sur le service et est utilisé pour établir la connexion sécurisée entre votre serveur et APNS. Ces certificats sont générés (gratuitement) dans iOS Provisioning Portal et des instructions sur la procédure à suivre sont données ci-dessous à l'étape 5..
Ceci est également couvert en détail à l’étape 5 ci-dessous. Creusons.
Ouvrez Xcode et créez un nouveau projet iPhone. Pour ce tutoriel, nous utiliserons le modèle simple "Application basée sur les vues" pour iPhone et nommons notre projet "Poke".
Étant donné que cette partie du didacticiel se concentrera principalement sur la configuration des notifications push, nous ne passerons pas de temps à configurer notre affichage pour afficher des informations utiles pour le moment. Nous allons le prendre en compte dans le troisième versement. Passons directement à l'enregistrement de notre application avec le service de notification Apple Push..
Pour que votre application reçoive des notifications push, elle doit d’abord informer le service de notifications push d’Apple des types de notifications qu’elle souhaite recevoir. Votre application peut prendre en charge n'importe quelle combinaison des trois types suivants (répertoriés dans l'ordre le moins intrusif):
Dans la mesure où les alertes forcent l'utilisateur à ne plus interagir avec ce qu'il fait, Apple recommande vivement de les utiliser avec parcimonie. N'abusez pas de vos utilisateurs avec des alertes (ou tout type de notification push, d'ailleurs) - ils désactiveront les notifications push sur votre application ou simplement supprimeront complètement votre application..
Pour cette partie du tutoriel, nous allons nous concentrer sur les alertes. Dans la dernière tranche, nous reviendrons et expérimenterons les deux autres.
Allons-y et informons iOS que notre application veut recevoir des notifications d'alerte.
Ouvrez PokeAppDelegate.m (ou quel que soit le nom de votre délégué d'application) et mettez à jour l'application: didFinishLaunchingWithOptions: callback pour qu'elle ressemble à ceci:
- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions // S'inscrire pour les notifications d'alerte [application registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert]; // Ajoute la vue du contrôleur de vue à la fenêtre et l'affiche. [window addSubview: viewController.view]; [fenêtre makeKeyAndVisible]; retourner OUI;
Notez que nous ne faisons que passer UIRemoteNotificationTypeAlert, car tout ce que nous voulons recevoir pour le moment, ce sont des alertes. Si vous souhaitez recevoir d'autres notifications, allez-y et ajoutez-les avec un bitwise ou:
[…] Types: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge];
Avec ces modifications apportées à notre délégué de l'application, le système d'exploitation commencera à s'enregistrer auprès du service de notification Apple Push. S'il réussit, il enverra une application: didRegisterForRemoteNotificationsWithDeviceToken: message au délégué de votre application avec le jeton de périphérique; si cela échoue, il enverra une application: didFailToRegisterForRemoteNotificationsWithError: message. Idéalement, vous devriez implémenter les deux.
Ajoutez les deux méthodes suivantes à votre délégué d’application pour gérer les deux résultats possibles de l’enregistrement:
- application (void): (UIApplication *) application didRegisterForRemoteNotificationsWithDeviceToken: (NSData *) deviceToken // TODO: transmettez le jeton à notre serveur NSLog (@ "Nous nous sommes enregistrés avec succès pour les notifications push"); - (void) application: (UIApplication *) application didFailToRegisterForRemoteNotificationsWithError: (NSError *) error // Informe l'utilisateur que l'échec de l'enregistrement a échoué. NSString * failureMessage = @ "Une erreur s'est produite lors de la tentative d'enregistrement des notifications push."; UIAlertView * failureAlert = [[UIAlertView alloc] initWithTitle: @ message "Erreur": délégué failureMessage: nil cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [failureAlert show]; [failureAlert release];
Nous reviendrons sur le rappel de réussite dans un segment ultérieur. Pour l'instant, il enregistre simplement un message rapide. Notre rappel d'échec informe l'utilisateur de l'échec. Notez que l'enregistrement sera toujours échec sur le simulateur iPhone, car il ne prend pas en charge les notifications push. Pour tester correctement votre code, vous devez utiliser un périphérique réel..
Maintenant que nous avons créé une application de base, passons du côté d'Apple et mettons tout en place dans le portail de provisioning iOS..
Si vous êtes déjà membre payant du programme pour développeurs iOS, connectez-vous au centre de développement iOS et cliquez sur le lien à droite pour accéder au portail de provisioning iOS. Si vous n'êtes pas encore membre, vous pouvez vous inscrire pour 99 $ ici.
La première chose à faire est de vous assurer que vous avez déjà configuré votre compte avec les certificats de développeur nécessaires et ajouté vos appareils. Les instructions pour le faire sortent du cadre de ce didacticiel, mais Apple fournit un assistant de configuration, ainsi que des vidéos et d'autres ressources pour vous guider tout au long du processus. Consultez la section "Accueil" du portail pour plus d'informations..
L'étape suivante consiste à créer un nouvel identifiant d'application. Pour associer correctement les envois envoyés au service à une application spécifique, le service de notifications Apple Push ne ne pas prendre en charge les applications avec un identifiant "générique" (c.-à-d. un identifiant avec un astérisque de fin tel que com.acme. *). La raison en est que le service push doit pouvoir identifier l'application spécifique à laquelle appartient le push, mais les identificateurs génériques vous permettent de créer plusieurs applications avec le même profil de provisioning. Ainsi, si vous avez déjà un identifiant générique configuré pour le développement, vous devrez en créer un pour cette application afin d'activer le support des notifications push. Si votre identifiant d'application n'utilise pas d'identificateur d'ensembles générique, vous pouvez ignorer cette étape..
Cliquez sur le bouton "Nouvel identifiant d'application" dans le coin supérieur droit. Remplissez les informations de votre application et cliquez sur le bouton "Soumettre".
Recherchez votre ID d'application nouvellement créé (ou déjà existant) dans la liste, puis cliquez sur le lien "Configurer" situé à droite. Dans la page qui s’affiche, cochez la case "Activer pour le service de notification Apple Push".
Si «Activer pour le service de notification Apple Push» ne s'affiche pas, votre ID d'application n'est probablement pas configuré correctement. Revenez à l'étape précédente et assurez-vous que vous n'avez pas saisi d'identificateur d'offre générique..
Vous remarquerez qu'il existe deux certificats: un pour le développement et l'autre pour la production. L'APNS dispose de serveurs de test et de serveurs de production en direct. Chacun utilise et requiert un certificat SSL client différent. Les serveurs de test peuvent être utilisés pour envoyer des commandes aux applications construites avec des profils d'approvisionnement de développement. les serveurs de production peuvent être utilisés pour envoyer des envois aux applications créées avec des profils de provisioning de distribution (versions Ad Hoc, In House ou App Store).
Pour le moment, nous ne devons pas trop nous inquiéter de la distinction, mais cela entrera en jeu dans le prochain versement lorsque nous commencerons à configurer notre compte chez Urban Airship..
Comme nous allons actuellement travailler avec une version de développement de notre application, cliquez sur le bouton "Configurer" du certificat SSL Push Push pour le développement. Suivez les instructions dans la zone qui apparaît pour créer une demande de signature de certificat, puis cliquez sur "Continuer".
Sélectionnez votre CSR nouvellement générée en cliquant sur "Choisir un fichier", puis cliquez sur "Générer" pour générer votre certificat SSL..
Vous devriez voir un indicateur de progression et ensuite la confirmation suivante:
Cliquez sur «Continuer» pour accéder à l'étape de téléchargement et d'installation. Nous verrons comment utiliser ce certificat dans la deuxième partie de ce didacticiel, mais pour le moment, cliquez sur "Télécharger" pour télécharger votre nouveau certificat SSL du client APNS..
Ensuite, nous devons créer un profil d'approvisionnement pour notre nouvel ID d'application (ou existant, sans caractère générique)..
Remarque: selon le Guide de notification local et push d'Apple, si vous avez déjà créé un profil d'approvisionnement pour votre ID d'application existant. avant pour activer les notifications push pour cet ID, vous devez modifier le profil (par exemple, changer le nom) de sorte que le portail le régénère avec les droits Push nécessaires..
Vous pouvez vérifier qu'un profil dispose des droits d'accès appropriés en l'ouvrant dans un éditeur de texte. Il devrait avoir une clé aps-environment:
De retour dans le portail de provisioning iOS, sélectionnez "Provisioning" dans le menu principal à gauche. Cliquez sur l'onglet "Développement" et sélectionnez le bouton "Nouveau profil". Entrez un nom descriptif dans le champ Nom du profil et sélectionnez les certificats pour les développeurs qui peuvent utiliser ce profil pour créer des applications. Si vous vous êtes inscrit en tant qu'individu, un seul certificat sera répertorié (le vôtre); si vous vous êtes inscrit en tant qu'entreprise, il peut y avoir plus d'une entreprise listée.
Choisissez l'identifiant de l'application que vous avez créé à l'étape précédente (ou votre identifiant existant) dans la liste des identifiants d'application, puis sélectionnez les appareils sur lesquels vous souhaitez tester votre application dans la liste du bas. Cliquez ensuite sur "Soumettre" pour générer le nouveau profil d'approvisionnement..
Après quelques minutes, votre profil sera créé et un bouton "Télécharger" apparaîtra dans la colonne Actions à droite (vous devrez peut-être actualiser votre navigateur). Ensuite, cliquez dessus pour télécharger votre nouveau profil d'approvisionnement de développement..
Pour installer votre profil, faites glisser le fichier .mobileprovision récemment téléchargé sur Xcode ou iTunes dans le Dock..
Retournez à votre projet dans Xcode.
Sélectionnez "Modifier la cible active 'Poke'" dans le menu Projet. Accédez à l'onglet Propriétés et entrez l'identifiant de l'ensemble que vous avez précédemment configuré dans le portail de provisioning iOS (dans notre cas, com.tutsplus.mobile.pushdemo)..
Ensuite, passez à l'onglet Construire. Assurez-vous que la configuration sélectionnée en haut est Debug. Recherchez la section Signature de code dans le tableau. Le deuxième élément de la liste doit être Identité de signature de code et doit avoir un élément enfant, Tout périphérique iOS. Ce paramètre indique à Xcode le profil d'approvisionnement à utiliser pour signer votre application lors de la création d'un périphérique iOS. La valeur de N'importe quel périphérique iOS doit être "Développeur iPhone (correspond actuellement à" Développeur iPhone: [Votre nom] "[...])".
Cette option actuellement sélectionnée est le sélecteur de profil automatique. Il examine l'ID d'ensemble de votre application (que nous avons défini à la dernière étape) et trouve le profil d'approvisionnement avec un ID correspondant (ou un ID générique correspondant). Bien que vous puissiez probablement vous en sortir en laissant cette option telle quelle, j'essaie généralement de minimiser les sources potentielles d'erreurs de signature de code en sélectionnant le profil que je souhaite utiliser manuellement..
Et c'est tout! Vous avez créé avec succès un nouveau projet iPhone et l'avez configuré pour les notifications push! Dans le prochain épisode, nous allons commencer à parler du côté serveur de choses et de la façon d'envoyer réellement un push à votre application nouvellement créée.