CocoaHeads Rennes #10 : Notifications

Preview:

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

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

Recommended