Upload
cocoaheadsrns
View
546
Download
3
Embed Size (px)
DESCRIPTION
Slides de la session des cocoaheads Rennaise du 10 mai 2012. Session présentée par Marc Audefroy et Gwennin Le Bourdonnec.
Citation preview
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