SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
7 rue de Bucarest 75008 Paris - +33 1 73 00 28 00 - backelite.com7 rue de Bucarest 75008 Paris - +33 1 73 00 28 00 - backelite.com
Jérôme Morissard
Victor Carmouze
Cocoaheads - 3D Touch
12 novembre 2015
Cocoaheads – Paris - 3D Touch 2
3D Touch
Cocoaheads – Paris - 3D Touch
- Quick Actions
- Peek and Pop
- Pressure Sensitivity
3
3D Touch
Cocoaheads – Paris - 3D Touch
- Pression sur l'icône de l'application
- Raccourcis statiques et dynamiques
- 4 maximum
3D Touch > Quick Actions
4
Cocoaheads – Paris - 3D Touch
Quick Actions
5
Cocoaheads – Paris - 3D Touch
- Configuration du info.plist
Quick Actions > Statique
6
https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html
UIApplicationShortcutItemType
la référence unique qu’aura l’action
(ex: com.jmo.add.to.favorite)
UIApplicationShortcutItemTitle
le titre de l’action
UIApplicationShortcutItemSubtitle
le sous titre de l’action
UIApplicationShortcutItemIconType
une valeur de l’énumération UIApplicationShortcutIconType, pour utiliser
une image système
UIApplicationShortcutItemIconFile
une image que l’on souhaite utiliser
(35x35, 1 couleur)
UIApplicationShortcutItemUserInfo
un dictionnaire pour des informations complémentaires.
Cocoaheads – Paris - 3D Touch
- Raccourcis statiques > configuration du info.plist
Quick Actions > Statique
7
Cocoaheads – Paris - 3D Touch
- La création de raccourcis dynamiques
@interface UIApplicationShortcutItem
- (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:
(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary *)userInfo NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle;
@end
Quick Actions > Dynamique
8
Cocoaheads – Paris - 3D Touch
- La création de raccourcis dynamiques
@interface UIApplicationShortcutItem
- (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:
(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary *)userInfo NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle;
@end
- L’association des raccourcis à l’icône de l’application
[UIApplication sharedApplication].shortcutItems = @[myAwesomeShortcutItem];
Quick Actions > Dynamique
9
Cocoaheads – Paris - 3D Touch
- Répondre au lancement via un shortcutItem
@protocol UIApplicationDelegate<NSObject>
@optional
…
…
-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:
(void(^)(BOOL succeeded))completionHandler;
@end
Quick Actions > Statiques/Dynamiques
10
Cocoaheads – Paris - 3D Touch
• Tester sans avoir d’iPhone 6S
https://github.com/DeskConnect/SBShortcutMenuSimulator, cela permet de simuler la pression de type
3D Touch sur l’icône d’une application.
Quick Actions > Tips !
11
Cocoaheads – Paris - 3D Touch
• Tester sans avoir d’iPhone 6S
https://github.com/DeskConnect/SBShortcutMenuSimulator, cela permet de simuler la pression de type
3D Touch sur l’icône d’une application.
• Internationaliser vos QuickActions
En utilisant l’InfoPlist.strings, UIApplicationShortcutItemTitle contiendra la clé de traduction.
Quick Actions > Tips !
12
Cocoaheads – Paris - 3D Touch
• Attention au lancement de l’application via un raccourci
cas 1 : L’application est déjà lancée.
On clique sur l’action > delegate - (void)application:(UIApplication *)application performActionForShortcutItem:
(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler
cas 2 : L’application n’est pas lancée.
On clique sur l’action > delegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions il convient de vérifier les informations du dictionnaire
(UIApplicationLaunchOptionsShortcutItemKey) pour traiter directement l’action.
Quick Actions > Tips !
13
Cocoaheads – Paris - 3D Touch
• Attention à vos choix d’icônes système
Apple rajoute des icônes dans les versions d’OS.
typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) {
UIApplicationShortcutIconTypeCompose,
UIApplicationShortcutIconTypePlay,
UIApplicationShortcutIconTypePause,
UIApplicationShortcutIconTypeAdd,
UIApplicationShortcutIconTypeLocation,
UIApplicationShortcutIconTypeSearch,
UIApplicationShortcutIconTypeShare,
UIApplicationShortcutIconTypeProhibit NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeContact NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeHome NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeMarkLocation NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeFavorite NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeLove NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeCloud NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeInvitation NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeConfirmation NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeMail NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeMessage NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeDate NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeTime NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeCapturePhoto NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeCaptureVideo NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeTask NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeTaskCompleted NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeAlarm NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeBookmark NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeShuffle NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeAudio NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeUpdate NS_ENUM_AVAILABLE_IOS(9_1)
} NS_ENUM_AVAILABLE_IOS(9_0);
Quick Actions > Tips !
14
Cocoaheads – Paris - 3D Touch
Peek and Pop
15
Cocoaheads – Paris - 3D Touch
• Peek
• Pop
• Peek quick actions
Peek and Pop
16
Cocoaheads – Paris - 3D Touch
- (UIViewController *)previewingContext: viewControllerForLocation:
- (void)previewingContext:commitViewController:
- (NSArray<id<UIPreviewActionItem>> *)previewActionItems
Peek and Pop : API
17
Cocoaheads – Paris - 3D Touch
• En développement
• Features manquantes
• Non testable sur simulateur
Peek and Pop : API
18
Cocoaheads – Paris - 3D Touch
@interface UIViewController (UIViewControllerPreviewingRegistration)
- (id <UIViewControllerPreviewing>)registerForPreviewingWithDelegate:
(id<UIViewControllerPreviewingDelegate>)delegate sourceView:(UIView *)sourceView;
- (void)unregisterForPreviewingWithContext:(id <UIViewControllerPreviewing>)previewing;
@end
Peek and Pop : Préliminaires
19
@interface UITraitCollection : NSObject <NSCopying, NSSecureCoding>
@property (nonatomic, readonly) UIForceTouchCapability forceTouchCapability
•3D Touch supporté et activé par l’appareil
•Enregistrement de l’objet qui gère le « Peek »
Cocoaheads – Paris - 3D Touch
- (nullable UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext
viewControllerForLocation:(CGPoint)location;
- (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext
commitViewController:(UIViewController *)viewControllerToCommit;
Peek and Pop : delegate
20
@protocol UIViewControllerPreviewingDelegate <NSObject>
Peek
Pop
Cocoaheads – Paris - 3D Touch
•Toujours avoir un Pop
•Configurer le sourceRect du previewingContext.
Peek and Pop : Points d’attention
21
Cocoaheads – Paris - 3D Touch
• Définis dans le viewController présenté
• Possibilité de le regrouper
• Blocks
Peek Quick Actions
22
Cocoaheads – Paris - 3D Touch
@interface UIViewController ()
- (NSArray <id <UIPreviewActionItem>> *)previewActionItems;
@end
@protocol UIPreviewActionItem;;
• UIPreviewAction
• UIPreviewActionGroup
Design Factory
+ (instancetype)actionWithTitle:(NSString *)title style:(UIPreviewActionStyle)style handler:
(void (^)(UIPreviewAction *action, UIViewController *previewViewController))handler;
Peek Quick Actions
23
Cocoaheads – Paris - 3D Touch
• WKWebView et UIWebview
• allowsLinkPreview = YES
Peek and Pop : Webview
24
Cocoaheads – Paris - 3D Touch
• Aucun code
• Autorisation de ViewControllers custom
• Xcode 7.1
Peek and Pop : Storyboards
25
Cocoaheads – Paris - 3D Touch
Pressure Sensitivity
26
Cocoaheads – Paris - 3D Touch
UITouch
@property(nonatomic,readonly) CGFloat force;
@property(nonatomic,readonly) CGFloat maximumPossibleForce;
Pressure Sensitivity
27
Cocoaheads – Paris - 3D Touch
Pressure Sensitivity
28
• Utilisée pour le dessin
Cocoaheads – Paris - 3D Touch
• Mise en place peu coûteuse
• Amélioration de l'interactivité des apps
• API en développement
• Pas testable sur simulateur
• iOS 9 et iPhone 6S (Plus)
Conclusion
29
Cocoaheads – Paris - 3D Touch
Documentation techniques
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Adopting3DTouchOniPhone/index.html#//apple_ref/doc/
uid/TP40016543-CH1-SW1
Guidelines graphiques
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/3DTouch.html#//apple_ref/doc/uid/
TP40006556-CH71
Tutoriels
Quick Actions http://www.stringcode.co.uk/add-ios-9s-quick-actions-shortcut-support-in-15-minutes-right-now/
Peek and Pop http://pinkstone.co.uk/how-to-use-3d-touch-in-ios-9-part-1-peek-and-pop/
http://krakendev.io/peek-pop/
3D Touch http://engineering.instagram.com/posts/465414923641286/lessons-learned-with-3D-touch
3D Touch
30
Cocoaheads – Paris - 3D Touch
Questions ?
31

Contenu connexe

Tendances

CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads France
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoCocoaHeads France
 
Gatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureGatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureCocoaHeads France
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads France
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sassmarwa baich
 
Transition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers StoryboardsTransition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers StoryboardsCocoaHeads France
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsCocoaHeads France
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScriptHabib Ayad
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 

Tendances (13)

Test flight
Test flightTest flight
Test flight
 
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey Macko
 
Gatekeeper par Guillaume Faure
Gatekeeper par Guillaume FaureGatekeeper par Guillaume Faure
Gatekeeper par Guillaume Faure
 
Multi-Threading Et Cocoa
Multi-Threading Et CocoaMulti-Threading Et Cocoa
Multi-Threading Et Cocoa
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - Epitez
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
 
Transition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers StoryboardsTransition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers Storyboards
 
Nouveauté iOS 6
Nouveauté iOS 6Nouveauté iOS 6
Nouveauté iOS 6
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
 
Xcode 4.5
Xcode 4.5Xcode 4.5
Xcode 4.5
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScript
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 

En vedette

Android N's 3D Touch
Android N's 3D Touch Android N's 3D Touch
Android N's 3D Touch techugo
 
3D Touch by Karol Kozub, Macoscope
3D Touch by Karol Kozub, Macoscope3D Touch by Karol Kozub, Macoscope
3D Touch by Karol Kozub, MacoscopeMacoscope
 
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureBlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureCocoaHeads France
 
MultiPeer Connectivity Framework
MultiPeer Connectivity Framework MultiPeer Connectivity Framework
MultiPeer Connectivity Framework CocoaHeads France
 
3D touch for iOS
3D touch for iOS3D touch for iOS
3D touch for iOStoyship
 
Swift Sequences & Collections
Swift Sequences & CollectionsSwift Sequences & Collections
Swift Sequences & CollectionsCocoaHeads France
 
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...CocoaHeads France
 
CocoaPods for private libraries
CocoaPods for private librariesCocoaPods for private libraries
CocoaPods for private librariesCocoaHeads France
 
OSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureOSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureCocoaHeads France
 
AUGMENTED REALITY Documentation
AUGMENTED REALITY DocumentationAUGMENTED REALITY Documentation
AUGMENTED REALITY DocumentationVenu Gopal
 

En vedette (20)

Android N's 3D Touch
Android N's 3D Touch Android N's 3D Touch
Android N's 3D Touch
 
3D Touch by Karol Kozub, Macoscope
3D Touch by Karol Kozub, Macoscope3D Touch by Karol Kozub, Macoscope
3D Touch by Karol Kozub, Macoscope
 
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureBlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
 
App-resizer Library
App-resizer LibraryApp-resizer Library
App-resizer Library
 
Découverte de HomeKit
Découverte de HomeKitDécouverte de HomeKit
Découverte de HomeKit
 
Conférence DotSwift 2016
Conférence DotSwift 2016Conférence DotSwift 2016
Conférence DotSwift 2016
 
Apple Search Optimization
Apple Search OptimizationApple Search Optimization
Apple Search Optimization
 
POI clusturing
POI clusturingPOI clusturing
POI clusturing
 
Mastering Interface Builder
Mastering Interface BuilderMastering Interface Builder
Mastering Interface Builder
 
Swift open source
Swift open sourceSwift open source
Swift open source
 
MultiPeer Connectivity Framework
MultiPeer Connectivity Framework MultiPeer Connectivity Framework
MultiPeer Connectivity Framework
 
3D touch for iOS
3D touch for iOS3D touch for iOS
3D touch for iOS
 
Swift Sequences & Collections
Swift Sequences & CollectionsSwift Sequences & Collections
Swift Sequences & Collections
 
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
 
Zenly - Reverse geocoding
Zenly - Reverse geocodingZenly - Reverse geocoding
Zenly - Reverse geocoding
 
CocoaPods for private libraries
CocoaPods for private librariesCocoaPods for private libraries
CocoaPods for private libraries
 
OSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureOSX Complex Application Challenge Architecture
OSX Complex Application Challenge Architecture
 
Silent push
Silent pushSilent push
Silent push
 
OHHttpStubs
OHHttpStubsOHHttpStubs
OHHttpStubs
 
AUGMENTED REALITY Documentation
AUGMENTED REALITY DocumentationAUGMENTED REALITY Documentation
AUGMENTED REALITY Documentation
 

Similaire à 3D Touch

Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 
Développement d'applications mobiles.. Environnement de programmation visuelle
Développement d'applications mobiles.. Environnement de programmation visuelleDéveloppement d'applications mobiles.. Environnement de programmation visuelle
Développement d'applications mobiles.. Environnement de programmation visuelleREGIONAL ACADEMY OF EDUCATION AND TRAINING
 
Titanium studio et les modules
Titanium studio et les modulesTitanium studio et les modules
Titanium studio et les modulesGautier Pialat
 
Publier une application mobile en un clic
Publier une application mobile en un clicPublier une application mobile en un clic
Publier une application mobile en un clicFabernovel
 
Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Fred Brunel
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Paris Android User Group
 
Paris Android User Group
Paris Android User GroupParis Android User Group
Paris Android User Groupnaholyr
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement AndroidSteve Tremblay
 
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple WatchMobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple WatchUSERADGENTS
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
Solution d'OTA
Solution d'OTASolution d'OTA
Solution d'OTASidereo
 
Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Badr Hakkari
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesVincent Composieux
 
Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4Simplicité Software
 
Visual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@NoumeaVisual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@NoumeaJulien Chable
 

Similaire à 3D Touch (20)

Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
Développement d'applications mobiles.. Environnement de programmation visuelle
Développement d'applications mobiles.. Environnement de programmation visuelleDéveloppement d'applications mobiles.. Environnement de programmation visuelle
Développement d'applications mobiles.. Environnement de programmation visuelle
 
Titanium studio et les modules
Titanium studio et les modulesTitanium studio et les modules
Titanium studio et les modules
 
Publier une application mobile en un clic
Publier une application mobile en un clicPublier une application mobile en un clic
Publier une application mobile en un clic
 
Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)
 
5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014
 
Paris Android User Group
Paris Android User GroupParis Android User Group
Paris Android User Group
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple WatchMobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
IoT.pptx
IoT.pptxIoT.pptx
IoT.pptx
 
Meetup sencha
Meetup senchaMeetup sencha
Meetup sencha
 
Solution d'OTA
Solution d'OTASolution d'OTA
Solution d'OTA
 
Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, Kubernetes
 
Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4
 
Visual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@NoumeaVisual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@Noumea
 

Plus de CocoaHeads France

Plus de CocoaHeads France (20)

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer Future
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for Debugging
 
Asynchronous swift
Asynchronous swiftAsynchronous swift
Asynchronous swift
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeads
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notifications
 
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANECONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Super combinators
Super combinatorsSuper combinators
Super combinators
 
Design like a developer
Design like a developerDesign like a developer
Design like a developer
 
Handle the error
Handle the errorHandle the error
Handle the error
 
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
SwiftyGPIO
SwiftyGPIOSwiftyGPIO
SwiftyGPIO
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Programme MFI retour d'expérience
Programme MFI retour d'expérienceProgramme MFI retour d'expérience
Programme MFI retour d'expérience
 
How to communicate with Smart things?
How to communicate with Smart things?How to communicate with Smart things?
How to communicate with Smart things?
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPods
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
Project Entourage
Project EntourageProject Entourage
Project Entourage
 

3D Touch

  • 1. 7 rue de Bucarest 75008 Paris - +33 1 73 00 28 00 - backelite.com7 rue de Bucarest 75008 Paris - +33 1 73 00 28 00 - backelite.com Jérôme Morissard Victor Carmouze Cocoaheads - 3D Touch 12 novembre 2015
  • 2. Cocoaheads – Paris - 3D Touch 2 3D Touch
  • 3. Cocoaheads – Paris - 3D Touch - Quick Actions - Peek and Pop - Pressure Sensitivity 3 3D Touch
  • 4. Cocoaheads – Paris - 3D Touch - Pression sur l'icône de l'application - Raccourcis statiques et dynamiques - 4 maximum 3D Touch > Quick Actions 4
  • 5. Cocoaheads – Paris - 3D Touch Quick Actions 5
  • 6. Cocoaheads – Paris - 3D Touch - Configuration du info.plist Quick Actions > Statique 6 https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html UIApplicationShortcutItemType la référence unique qu’aura l’action (ex: com.jmo.add.to.favorite) UIApplicationShortcutItemTitle le titre de l’action UIApplicationShortcutItemSubtitle le sous titre de l’action UIApplicationShortcutItemIconType une valeur de l’énumération UIApplicationShortcutIconType, pour utiliser une image système UIApplicationShortcutItemIconFile une image que l’on souhaite utiliser (35x35, 1 couleur) UIApplicationShortcutItemUserInfo un dictionnaire pour des informations complémentaires.
  • 7. Cocoaheads – Paris - 3D Touch - Raccourcis statiques > configuration du info.plist Quick Actions > Statique 7
  • 8. Cocoaheads – Paris - 3D Touch - La création de raccourcis dynamiques @interface UIApplicationShortcutItem - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon: (nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary *)userInfo NS_DESIGNATED_INITIALIZER; - (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle; @end Quick Actions > Dynamique 8
  • 9. Cocoaheads – Paris - 3D Touch - La création de raccourcis dynamiques @interface UIApplicationShortcutItem - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon: (nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary *)userInfo NS_DESIGNATED_INITIALIZER; - (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle; @end - L’association des raccourcis à l’icône de l’application [UIApplication sharedApplication].shortcutItems = @[myAwesomeShortcutItem]; Quick Actions > Dynamique 9
  • 10. Cocoaheads – Paris - 3D Touch - Répondre au lancement via un shortcutItem @protocol UIApplicationDelegate<NSObject> @optional … … -(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler: (void(^)(BOOL succeeded))completionHandler; @end Quick Actions > Statiques/Dynamiques 10
  • 11. Cocoaheads – Paris - 3D Touch • Tester sans avoir d’iPhone 6S https://github.com/DeskConnect/SBShortcutMenuSimulator, cela permet de simuler la pression de type 3D Touch sur l’icône d’une application. Quick Actions > Tips ! 11
  • 12. Cocoaheads – Paris - 3D Touch • Tester sans avoir d’iPhone 6S https://github.com/DeskConnect/SBShortcutMenuSimulator, cela permet de simuler la pression de type 3D Touch sur l’icône d’une application. • Internationaliser vos QuickActions En utilisant l’InfoPlist.strings, UIApplicationShortcutItemTitle contiendra la clé de traduction. Quick Actions > Tips ! 12
  • 13. Cocoaheads – Paris - 3D Touch • Attention au lancement de l’application via un raccourci cas 1 : L’application est déjà lancée. On clique sur l’action > delegate - (void)application:(UIApplication *)application performActionForShortcutItem: (UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler cas 2 : L’application n’est pas lancée. On clique sur l’action > delegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions il convient de vérifier les informations du dictionnaire (UIApplicationLaunchOptionsShortcutItemKey) pour traiter directement l’action. Quick Actions > Tips ! 13
  • 14. Cocoaheads – Paris - 3D Touch • Attention à vos choix d’icônes système Apple rajoute des icônes dans les versions d’OS. typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) { UIApplicationShortcutIconTypeCompose, UIApplicationShortcutIconTypePlay, UIApplicationShortcutIconTypePause, UIApplicationShortcutIconTypeAdd, UIApplicationShortcutIconTypeLocation, UIApplicationShortcutIconTypeSearch, UIApplicationShortcutIconTypeShare, UIApplicationShortcutIconTypeProhibit NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeContact NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeHome NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeMarkLocation NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeFavorite NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeLove NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeCloud NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeInvitation NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeConfirmation NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeMail NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeMessage NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeDate NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeTime NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeCapturePhoto NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeCaptureVideo NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeTask NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeTaskCompleted NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeAlarm NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeBookmark NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeShuffle NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeAudio NS_ENUM_AVAILABLE_IOS(9_1), UIApplicationShortcutIconTypeUpdate NS_ENUM_AVAILABLE_IOS(9_1) } NS_ENUM_AVAILABLE_IOS(9_0); Quick Actions > Tips ! 14
  • 15. Cocoaheads – Paris - 3D Touch Peek and Pop 15
  • 16. Cocoaheads – Paris - 3D Touch • Peek • Pop • Peek quick actions Peek and Pop 16
  • 17. Cocoaheads – Paris - 3D Touch - (UIViewController *)previewingContext: viewControllerForLocation: - (void)previewingContext:commitViewController: - (NSArray<id<UIPreviewActionItem>> *)previewActionItems Peek and Pop : API 17
  • 18. Cocoaheads – Paris - 3D Touch • En développement • Features manquantes • Non testable sur simulateur Peek and Pop : API 18
  • 19. Cocoaheads – Paris - 3D Touch @interface UIViewController (UIViewControllerPreviewingRegistration) - (id <UIViewControllerPreviewing>)registerForPreviewingWithDelegate: (id<UIViewControllerPreviewingDelegate>)delegate sourceView:(UIView *)sourceView; - (void)unregisterForPreviewingWithContext:(id <UIViewControllerPreviewing>)previewing; @end Peek and Pop : Préliminaires 19 @interface UITraitCollection : NSObject <NSCopying, NSSecureCoding> @property (nonatomic, readonly) UIForceTouchCapability forceTouchCapability •3D Touch supporté et activé par l’appareil •Enregistrement de l’objet qui gère le « Peek »
  • 20. Cocoaheads – Paris - 3D Touch - (nullable UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location; - (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit; Peek and Pop : delegate 20 @protocol UIViewControllerPreviewingDelegate <NSObject> Peek Pop
  • 21. Cocoaheads – Paris - 3D Touch •Toujours avoir un Pop •Configurer le sourceRect du previewingContext. Peek and Pop : Points d’attention 21
  • 22. Cocoaheads – Paris - 3D Touch • Définis dans le viewController présenté • Possibilité de le regrouper • Blocks Peek Quick Actions 22
  • 23. Cocoaheads – Paris - 3D Touch @interface UIViewController () - (NSArray <id <UIPreviewActionItem>> *)previewActionItems; @end @protocol UIPreviewActionItem;; • UIPreviewAction • UIPreviewActionGroup Design Factory + (instancetype)actionWithTitle:(NSString *)title style:(UIPreviewActionStyle)style handler: (void (^)(UIPreviewAction *action, UIViewController *previewViewController))handler; Peek Quick Actions 23
  • 24. Cocoaheads – Paris - 3D Touch • WKWebView et UIWebview • allowsLinkPreview = YES Peek and Pop : Webview 24
  • 25. Cocoaheads – Paris - 3D Touch • Aucun code • Autorisation de ViewControllers custom • Xcode 7.1 Peek and Pop : Storyboards 25
  • 26. Cocoaheads – Paris - 3D Touch Pressure Sensitivity 26
  • 27. Cocoaheads – Paris - 3D Touch UITouch @property(nonatomic,readonly) CGFloat force; @property(nonatomic,readonly) CGFloat maximumPossibleForce; Pressure Sensitivity 27
  • 28. Cocoaheads – Paris - 3D Touch Pressure Sensitivity 28 • Utilisée pour le dessin
  • 29. Cocoaheads – Paris - 3D Touch • Mise en place peu coûteuse • Amélioration de l'interactivité des apps • API en développement • Pas testable sur simulateur • iOS 9 et iPhone 6S (Plus) Conclusion 29
  • 30. Cocoaheads – Paris - 3D Touch Documentation techniques https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Adopting3DTouchOniPhone/index.html#//apple_ref/doc/ uid/TP40016543-CH1-SW1 Guidelines graphiques https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/3DTouch.html#//apple_ref/doc/uid/ TP40006556-CH71 Tutoriels Quick Actions http://www.stringcode.co.uk/add-ios-9s-quick-actions-shortcut-support-in-15-minutes-right-now/ Peek and Pop http://pinkstone.co.uk/how-to-use-3d-touch-in-ios-9-part-1-peek-and-pop/ http://krakendev.io/peek-pop/ 3D Touch http://engineering.instagram.com/posts/465414923641286/lessons-learned-with-3D-touch 3D Touch 30
  • 31. Cocoaheads – Paris - 3D Touch Questions ? 31