Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Xebia WatchKit TechEvent
Search
Simone Civetta
December 03, 2014
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Xebia WatchKit TechEvent
Simone Civetta
December 03, 2014
More Decks by Simone Civetta
See All by Simone Civetta
2021: CI for Mobile: State of The Art
viteinfinite
0
400
MVI : une architecture robuste et moderne pour vos applications mobiles
viteinfinite
2
560
Cross-Platform Modules with Kotlin/Native (v. 2018.10)
viteinfinite
0
120
Face Recognition with Vision & Core ML
viteinfinite
1
1.1k
Shared Cross-Platform Modules with Kotlin/Native
viteinfinite
1
360
Server-Side Swift @ Devoxx FR
viteinfinite
0
140
Swift on the Raspberry PI
viteinfinite
0
150
Server-Side Swift
viteinfinite
0
110
Be the Quality You Want to See in Your App [Swift Edition]
viteinfinite
1
450
Other Decks in Programming
See All in Programming
JRuby: Past, Present, and Future
headius
0
220
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
4k
パーソナライズPodcastを作った話
repunit11
0
120
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
390
phperだってパンチカードでコーディングしたい
o0h
PRO
0
210
FreeBSDでZabbixを動かす
kenkino
0
360
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
350
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
390
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.5k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.8k
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.2k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
440
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
350
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Designing Experiences People Love
moore
143
24k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Writing Fast Ruby
sferik
630
63k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Prompt Engineering for Job Search
mfonobong
0
480
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
620
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Transcript
None
Développeurs ?
Watch
Le produit
None
Modèles —Sport (349$) —Classic —Edition Versions, 2 tailles : —42mm
(312x390px ~335ppi) —38mm (272x340px ~335ppi)
Personnalisation
OS
Apple Watch et iOS Compatible uniquement avec iOS 8.2+
Interface
Interface —1 couronne (digital crown) —sélection —zoom in/out —1 bouton
physique (conversation button) —favoris — Pay
Interface —Siri
Interface —Feedback haptique
Interface graphique
Interface graphique —Home screen —Glances —Applications
Home screen
Glances
Capteurs —Accéleromètre —Gyroscope —GPS —Moniteur cardiaque
Pay
Batterie —~1 jour environ —rechargement avec connecteur magnétique
Date de sortie —Printemps 2015 —(St Valentin ?)
None
Le SDK —Première release le 18 nov. 2014 —Deuxième version
en mi-2015 (WWDC ?)
Les fonctionnalités —Gérer notifications —Écrans glances —Applications non natives1 1
La logique est exécutée sur l'iPhone
Les fonctionnalités / 2 —Applications natives en V2
WatchKit en détail
Aujourd'hui... Une application WatchKit est : —une extension d'une application
iPhone —un écran secondaire
Pour commencer : glossaire —Watch App : executé sur la
montre —Extension : executé sur iPhone
Extensions iOS
Extension iOS / 1
Extension iOS / 2 —L'extension est un applicatif indépendant contenu
dans le bundle d'un .app iOS
Architecture
Architecture / 1 —La Watch App est lancée depuis un
bundle contenant storyboard et ressources statiques
Architecture / 2 —L'interaction de l'utilisateur déclenche l'exécution de code
dans l'extension
None
Interface utilisateur
Interface utilisateur / 1 —L'interface est réalisable seulement via Storyboard
—L'IHM est installée dans la Watch App
Interface utilisateur / 2 —Les Scenes du Storyboard ne peuvent
pas être modifiées par l'extension iPhone à runtime —L'extension peut afficher/cacher des éléments à l'intérieur de la Watch App
Les composants
Les composants / 1 —Les composants WatchKit (buttons, labels, etc)
sont proxifiés —L'extension manipule un objet proxy (WKInterface*) —Il n'est pas possible de créer programmatiquement des éléments visuels
Les composants / 2 —Une extension peut contrôler : —Taille
(Height/Width) —Alpha —Visibilité (propriété hidden) —Hidden = Gone
Les composants / 3 —WKInterfaceController —WKInterfaceGroup —WKInterfaceTable —WKInterfaceButton —WKInterfaceDate —WKInterfaceImage
—WKInterfaceLabel —WKInterfaceMap —WKInterfaceSeparator —WKInterfaceSlider
Les composants / 3 —WKInterfaceController —WKInterfaceGroup —WKInterfaceTable —WKInterfaceButton —WKInterfaceDate —WKInterfaceImage
—WKInterfaceLabel —WKInterfaceMap —WKInterfaceSeparator —WKInterfaceSlider
WKInterfaceController —Équivalent de UIViewController —Un controlleur par écran —Target/Action pattern
—Peu modulaire —Context-based
WKInterfaceController Context —init(context context: AnyObject!) — contextForSegueWithIdentifier(_ :) —pushControllerWithName(_ name:
String!, context context: AnyObject!)
Cycle de vie —WA : Create Storyboard —E : initWithContext:
—E : willActivate —E : action methods —E : didDeactivate
None
WKInterfaceGroup —cf. Layout sur Android —Horizontaux/Verticaux —Taille paramétrable, qui peut
dépendre du contenu/conteneur —Fit content —Relative to container
WKInterfaceTable —Similaires aux tableaux de iOS —Pas de sections /
footers / headers
WKInterfaceTable —Chaque row est associée à un type de row
(rowType) —Chaque rowType est associé à un controller —setNumberOfRows(_:withRowType:) —setRowTypes(_ rowTypes: [AnyObject]!) —table(_ table: WKInterfaceTable!, didSelectRowAtIndex rowIndex:
WKInterfaceTable Toutes les méthodes de délégation de la Table sont
déclarées dans le Controller
None
WKInterfaceMap —Plan statique qui peut contenir max 5. annotations —Dessiné
par l'extension et envoyé ensuite à la Watch App
WKInterfaceDate —Libellé de date avec format paramétrable —La valeur est
calculée directement par la Watch App
Navigation
Navigation —Pop/Push (cf. UINavigationController) —Page-based —Présentation modale
Navigation techniques —Segues —pushControllerWithName(_ name: String!, context context: AnyObject!) —
presentControllerWithName(_:con text:) — presentControllerWithNames(_:co ntexts:)
Notes
Glances —Un écran Glance est une micro- application mono-page —Il
est le launcher d'une application Watch App
Storyboard —Le storyboard est l'outil de définition de l'interface utilisateur
d'une Watch App
Tips 'n Tricks —Utilisez les frameworks dynamiques —Modifiez les propriétés
des Schemes —Activez le mode "External display -> Apple Watch" dans le menu du simulateur
Hands on !