41
Les Notifications Gwennin Le Bourdonnec Marc Audefroy CocoaHeads Rennes #10 10 mai 2012 Push et Locales

CocoaHeads Rennes #10 : Notifications

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

Page 1: CocoaHeads Rennes #10 : Notifications

Les Notifications

Gwennin Le BourdonnecMarc Audefroy

CocoaHeads Rennes #1010 mai 2012

Push et Locales

Page 2: CocoaHeads Rennes #10 : Notifications

• Gwennin Le Bourdonnec

 Etudiant 3ème année à Supinfo Rennes

• Marc Audefroy

Etudiant 2ème année à Supinfo Rennes

Vos Speakers

Page 3: CocoaHeads Rennes #10 : Notifications

Laboratoire Apple Supinfo Rennes

Regroupement étudiant de passionés.

Appronfondissement de la techno

Réalisation de projets divers

Page 4: CocoaHeads Rennes #10 : Notifications

Comment interagir/informer l’utilisateur de nouveau contenu ?

Le Problème

Page 5: CocoaHeads Rennes #10 : Notifications

Sommaire

• Qu’est ce qu’une Notification?

• Local et Push

• Les notifications locales

• Les notifications push

• Résumé

Page 6: CocoaHeads Rennes #10 : Notifications

Qu’est-ce qu’une notification ?

Page 7: CocoaHeads Rennes #10 : Notifications

• Préviens l’utilisateur

• Nouvelles données

• Action

• Évènement

(Calendrier…)

• …

Page 8: CocoaHeads Rennes #10 : Notifications

Propriétés

• Badges

• Sons

• Alert View

• Informations « Custom »

Page 9: CocoaHeads Rennes #10 : Notifications

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

Page 10: CocoaHeads Rennes #10 : Notifications

Local Notification

Page 11: CocoaHeads Rennes #10 : Notifications

• iOS4 – OSX 10.8

• Depuis le device

• Envoyé à une date et une heure précise

• 64 notifications maximum

Local Notification

Page 12: CocoaHeads Rennes #10 : Notifications

Actions

• - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

• - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions

Page 13: CocoaHeads Rennes #10 : Notifications

Démo

Page 14: CocoaHeads Rennes #10 : Notifications

Push Noti"cations

Page 15: CocoaHeads Rennes #10 : Notifications

Push Notifications

• iOS 3 – OSX 10.7

• Depuis un serveur

• Nécessite une inscription du device

Page 16: CocoaHeads Rennes #10 : Notifications

3 Plateformes

Le Provider Le Device

L’APNs

Page 17: CocoaHeads Rennes #10 : Notifications

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

Page 18: CocoaHeads Rennes #10 : Notifications

Communication Device – APNs

Inscription auprès du provider

Page 19: CocoaHeads Rennes #10 : Notifications

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

Page 20: CocoaHeads Rennes #10 : Notifications

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

Page 21: CocoaHeads Rennes #10 : Notifications

Inscription du Device

• - (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

• - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

• - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

Page 22: CocoaHeads Rennes #10 : Notifications

Démo

Page 23: CocoaHeads Rennes #10 : Notifications

Communication Provider – APNs

Envois d’un push

Page 24: CocoaHeads Rennes #10 : Notifications

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

Page 25: CocoaHeads Rennes #10 : Notifications

Environnements

• Sandboxgateway.sandbox.push.apple.com:2195

• Productiongateway.push.apple.com:2195

Page 26: CocoaHeads Rennes #10 : Notifications

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”

Page 27: CocoaHeads Rennes #10 : Notifications

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 !} !

Page 28: CocoaHeads Rennes #10 : Notifications

Packet Simple de Noti"cation

Page 29: CocoaHeads Rennes #10 : Notifications

Packet Amélioré de Noti"cation

Page 30: CocoaHeads Rennes #10 : Notifications

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)

Page 31: CocoaHeads Rennes #10 : Notifications

Packet de FeedBack

Page 32: CocoaHeads Rennes #10 : Notifications

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

Page 33: CocoaHeads Rennes #10 : Notifications

Exemples de Provider

• Urban Airship ( urbanairship.com )

• AppNotify ( appnotify.com/developer )

• ...

Services

Page 34: CocoaHeads Rennes #10 : Notifications

Communication Device – APNs

Réception du push

Page 35: CocoaHeads Rennes #10 : Notifications

Reconnexion du Device

• Le device initialise la connexion

• L’APNs valide le certificat & le deviceToken du device

• L’APNs établit la connexion

Page 36: CocoaHeads Rennes #10 : Notifications

• L’APNs transfère la notification au device correspondant au deviceToken

• Le device transfère la notification à l’application

Envois du push

Page 37: CocoaHeads Rennes #10 : Notifications

Actions

• - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

• - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Page 38: CocoaHeads Rennes #10 : Notifications

Démo

Page 39: CocoaHeads Rennes #10 : Notifications

Pour résumer