Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CocoaHeads Rennes #10 : Notifications

824 views

Published on

Slides de la session des cocoaheads Rennaise du 10 mai 2012. Session présentée par Marc Audefroy et Gwennin Le Bourdonnec.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

CocoaHeads Rennes #10 : Notifications

  1. 1. CocoaHeads Rennes #10 Gwennin Le Bourdonnec 10 mai 2012 Marc Audefroy Les Notifications Push et Locales
  2. 2. Vos Speakers• Gwennin Le Bourdonnec  Etudiant 3ème année à Supinfo Rennes• Marc Audefroy Etudiant 2ème année à Supinfo Rennes
  3. 3. Laboratoire Apple Supinfo RennesRegroupement étudiant de passionés.Appronfondissement de la technoRéalisation de projets divers
  4. 4. Le ProblèmeComment interagir/informer l’utilisateur de nouveau contenu ?
  5. 5. Sommaire• Qu’est ce qu’une Notification?• Local et Push• Les notifications locales• Les notifications push• Résumé
  6. 6. Qu’est-ce qu’une notification ?
  7. 7. • Préviens l’utilisateur • Nouvelles données • Action • Évènement (Calendrier…) • …
  8. 8. Propriétés• Badges• Sons• Alert View• Informations « Custom »
  9. 9. Local VS Push ?Local Notification Push Notification• Depuis le device • Depuis un serveur• Se lance à une date et une • Est envoyé lors de nouvelles heure précise données • Arrivée incertaine
  10. 10. Local Notification
  11. 11. Local Notification• iOS4 – OSX 10.8• Depuis le device• Envoyé à une date et une heure précise• 64 notifications maximum
  12. 12. Actions• - (void)application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification• - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
  13. 13. Démo
  14. 14. Push Notifications
  15. 15. Push Notifications• iOS 3 – OSX 10.7• Depuis un serveur• Nécessite une inscription du device
  16. 16. 3 PlateformesLe Provider Le Device L’APNs
  17. 17. Chemin classique du système de Push• Récupération d’un “deviceToken” par l’application auprès de l’APNs• Inscription du Device auprès du Provider• Reconnexion du Device auprès de l’APNs• Envois d’un Push par le Provider• Réception du push par l’application
  18. 18. CommunicationDevice – APNs Inscription auprès du provider
  19. 19. Connexion du Device• Le Device initialise la connexion• Le Device valide le certificat de l’APNs• L’APNs valide le certificat du Device• L’APNs établit la connexion
  20. 20. Inscription du Device• Le device se connecte à l’APNs• l’APNs génére un “deviceToken” avec les informations que lui fournit le device(certificat)• l’APNs chiffre le “deviceToken” avec une “token Key”• L’APNs envoie le “deviceToken” au device• L’application réceptionne le deviceToken et le transmet au provider
  21. 21. Inscription du Device• - (void)registerForRemoteNotificationTypes: (UIRemoteNotificationType)types• - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken: (NSData *)deviceToken• - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError: (NSError *)error
  22. 22. Démo
  23. 23. CommunicationProvider – APNs Envois d’un push
  24. 24. Connexion du Provider• Le Provider initialise la connexion• Le Provider valide le certificat de l’APNs• L’APNs valide le certificat du Provider• L’APNs établit la connexion
  25. 25. Environnements• Sandbox gateway.sandbox.push.apple.com:2195• Production gateway.push.apple.com:2195
  26. 26. Envois d’un Push par le Provider• Le Provider se connecte à l’APNs• Le Provider envoie le deviceToken et la notification à l’APNs• L’APNs déchiffre le deviceToken avec la “token Key”
  27. 27. La Notification• Dictionnaire Json RFC 4627 {! "aps" : {! "alert" : {! " ""body” : "Message de l’alert View",! " ""action-loc-key” : "Voir",! " ""launch-image" : "nomDeMonImage.png"! "},! "badge" : 9,! "sound" : "bingbong.aiff"! },! "acme1" : "bar",! "acme2" : 42! }!• 256 Octets maximum• Pas d’informations sensibles
  28. 28. Packet Simple de Notification
  29. 29. Packet Amélioré de Notification
  30. 30. Packet d’Erreur 0 No Error Encountered 1 Processing Error 2 Missing device token 3 Missing topic 4 Missing payload 5 Invalid token size 6 Invalid topic size 7 Invalid payload size 8 Invalid token 255 None (unknown)
  31. 31. Packet de FeedBack
  32. 32. Exemples de ProviderLibrary• apnsphp ( code.google.com/p/apns-php/ )• easy apns ( www.easyapns.com/ )• apns-sharp ( github.com/Redth/APNS-Sharp )• java-apns ( https://github.com/notnoop/java-apns )• Bien d’autres...
  33. 33. Exemples de ProviderServices• Urban Airship ( urbanairship.com )• AppNotify ( appnotify.com/developer )• ...
  34. 34. CommunicationDevice – APNs Réception du push
  35. 35. Reconnexion du Device• Le device initialise la connexion• L’APNs valide le certificat & le deviceToken du device• L’APNs établit la connexion
  36. 36. Envois du push• L’APNs transfère la notification au device correspondant au deviceToken• Le device transfère la notification à l’application
  37. 37. Actions• - (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo• - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
  38. 38. Démo
  39. 39. Pour résumer
  40. 40. Pour aller plus loin• La documentation Apple ( developer.apple.com )• Raywenderlich.com ( http:// www.raywenderlich.com/3443/apple-push-notification- services-tutorial-part-12 )
  41. 41. CocoaHeads Rennes #10 julien@cocoaheads.fr 10 mai 2012 thomas.dupont@cocoaheads.fr Merciemail: Gwennin.LeBourdonnec@supinfo.comtwitter: @Gwenninsite : gwennin.meemail: Marc.Audefroy@supinfo.comtwitter: @MarcAudefroyemail: laboAppleRennes@supinfo.comsite : www.labo-apple.com

×