cocoaheads rennes #10 : notifications
DESCRIPTION
Slides de la session des cocoaheads Rennaise du 10 mai 2012. Session présentée par Marc Audefroy et Gwennin Le Bourdonnec.TRANSCRIPT
Les Notifications
Gwennin Le BourdonnecMarc Audefroy
CocoaHeads Rennes #1010 mai 2012
Push et Locales
• Gwennin Le Bourdonnec
Etudiant 3ème année à Supinfo Rennes
• Marc Audefroy
Etudiant 2ème année à Supinfo Rennes
Vos Speakers
Laboratoire Apple Supinfo Rennes
Regroupement étudiant de passionés.
Appronfondissement de la techno
Réalisation de projets divers
Comment interagir/informer l’utilisateur de nouveau contenu ?
Le Problème
Sommaire
• Qu’est ce qu’une Notification?
• Local et Push
• Les notifications locales
• Les notifications push
• Résumé
Qu’est-ce qu’une notification ?
• Préviens l’utilisateur
• Nouvelles données
• Action
• Évènement
(Calendrier…)
• …
Propriétés
• Badges
• Sons
• Alert View
• Informations « Custom »
Local VS Push ?Local Noti"cation
• Depuis le device
• Se lance à une date et une
heure précise
Push Noti"cation
• Depuis un serveur
• Est envoyé lors de nouvelles
données
• Arrivée incertaine
Local Notification
• iOS4 – OSX 10.8
• Depuis le device
• Envoyé à une date et une heure précise
• 64 notifications maximum
Local Notification
Actions
• - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
• - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
Démo
Push Noti"cations
Push Notifications
• iOS 3 – OSX 10.7
• Depuis un serveur
• Nécessite une inscription du device
3 Plateformes
Le Provider Le Device
L’APNs
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
Communication Device – APNs
Inscription auprès du provider
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
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
Inscription du Device
• - (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types
• - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
• - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
Démo
Communication Provider – APNs
Envois d’un push
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
Environnements
• Sandboxgateway.sandbox.push.apple.com:2195
• Productiongateway.push.apple.com:2195
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”
La Notification• Dictionnaire Json RFC 4627
• 256 Octets maximum
• Pas d’informations sensibles
{ ! "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 !} !
Packet Simple de Noti"cation
Packet Amélioré de Noti"cation
Packet d’Erreur0 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)
Packet de FeedBack
Exemples de Provider
• 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...
Library
Exemples de Provider
• Urban Airship ( urbanairship.com )
• AppNotify ( appnotify.com/developer )
• ...
Services
Communication Device – APNs
Réception du push
Reconnexion du Device
• Le device initialise la connexion
• L’APNs valide le certificat & le deviceToken du device
• L’APNs établit la connexion
• L’APNs transfère la notification au device correspondant au deviceToken
• Le device transfère la notification à l’application
Envois du push
Actions
• - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
• - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Démo
Pour résumer
Pour aller plus loin
• La documentation Apple ( developer.apple.com )
• Raywenderlich.com ( http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12 )
[email protected]@cocoaheads.fr
CocoaHeads Rennes #1010 mai 2012
Merci
email:twitter:
[email protected]@Gwennin
email:twitter:
[email protected]@MarcAudefroy
site : gwennin.me
email: [email protected] : www.labo-apple.com