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

CocoaHeads Rennes #10 : Notifications

May 15, 2015

Download

Technology

CocoaHeadsRNS

Slides de la session des cocoaheads Rennaise du 10 mai 2012. Session présentée par Marc Audefroy et Gwennin Le Bourdonnec.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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