CocoaHeads Rennes #10 : Notifications

Post on 15-May-2015

546 views 3 download

description

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

Transcript of CocoaHeads Rennes #10 : Notifications

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

julien@cocoaheads.frthomas.dupont@cocoaheads.fr

CocoaHeads Rennes #1010 mai 2012

Merci

email:twitter:

Gwennin.LeBourdonnec@supinfo.com@Gwennin

email:twitter:

Marc.Audefroy@supinfo.com@MarcAudefroy

site : gwennin.me

email: laboAppleRennes@supinfo.comsite : www.labo-apple.com