Download - watchOS2 tips
![Page 1: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/1.jpg)
potatotips #23watchOS2 tips ⌚
成田元輝@mo_to_44
![Page 2: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/2.jpg)
自己紹介
• @mo_to_44
• 株式会社ネクストで HOME’S(不動産検索アプリ)のiOSエンジニア
• 最近はアプリ向けのAPIをつくるためにRubyも書いたり
![Page 3: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/3.jpg)
自己紹介
• 個人でもカメラアプリとか作ってます
• リボカメ
• Apple Watchにも対応
• potatotips #21で発表
![Page 4: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/4.jpg)
watchOS2 tips
1. complicationはショートカットとして配置できる
2. WCSessionの機能は使い分ける
3. WCSessionを使用する場合はターゲットをまたがるクラスを用意する
4. デバッグ時はplayHapticを仕込んでおく
![Page 5: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/5.jpg)
complicationはショートカットとして配置できる
![Page 6: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/6.jpg)
complicationって?
• ⌚の文字盤に3rd Partyアプリの情報を表示可能にするwatchOS2の機能
• 自分のアプリのデータを文字盤に表示できる
![Page 7: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/7.jpg)
complicationはショートカットとして配置できる
• 表示するデータを用意しなければいけないように感じるが、実際にはアプリ起動のショートカットとして置くことも問題ない
• (いまのところ)入れられるところは全部入れちゃってもいいかも
![Page 8: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/8.jpg)
WCSessionの機能は使い分ける
![Page 9: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/9.jpg)
WatchConnectivity NSURLSession
WCSessionとは?
• 📱⇆⌚のやり取りを可能にするWatchConnectivity Frameworkの主要なクラス
• データ送信方法が用途に応じて用意されている
1. Background Transfers
2. Interactive Messaging
![Page 10: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/10.jpg)
WCSessionの機能は使い分ける
• だいたいの場合はsendMessageでiPhone / Apple Watchからデータを取ってくることが可能
• サイズの大きいデータ(特に画像)は転送できないのでtransferFileメソッドを使用する など
![Page 11: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/11.jpg)
WCSessionで渡すデータはターゲット間で共有する
![Page 12: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/12.jpg)
WCSessionのsendMessageの データは[String:AnyObject]で
送受信する
![Page 13: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/13.jpg)
WCSessionのsendMessageの データは[String:AnyObject]で
送受信する
![Page 14: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/14.jpg)
📱 ⌚[String:AnyObject]
![Page 15: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/15.jpg)
• キー名の定義がiOS/watchOS両方に存在 • キー名を変えたかったら両方修正 • 該当する値の型を変える場合も両方修正
Dictionaryのデメリット
![Page 16: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/16.jpg)
iOS/watchOSターゲット間で 型を共通定義
![Page 17: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/17.jpg)
[String:AnyObject]ターゲット間 共通データ型
ターゲット間 共通データ型
Dictionaryに変換
共通データ型に変換
Dictionary ⇆ 共通のデータ型 に変換
📱 ⌚Dictionaryに変換
共通データ型に変換
• 送信時に共通データ型から[String:AnyObject]に変換 • [String:AnyObject]を受け取ったら共通データ型に変換
![Page 18: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/18.jpg)
iOS/watchOSターゲット間で型を共有
iOSとwatchOS、両方のターゲットで定義を共通化させる
iOSwatchOS
File inspectorから設定可能
![Page 19: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/19.jpg)
• 定義が一つにまとまる • 変更が楽になる • [String:AnyObject] の変換処理が一つにまとまっているのでバグを見つけやすい (key名を間違えていた!とか起きにくい)
![Page 20: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/20.jpg)
長いビルド時間 ☕ の終わりにHaptic
![Page 21: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/21.jpg)
⌚ 実機でのデバッグ• めちゃくちゃ時間がかかります
• 一番長かったときはビルドしてからアプリが起動するまで10分待ちました
![Page 22: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/22.jpg)
起動した時に音を鳴らす
• watchOS2から追加されたhapticを使用して、アプリ起動時に音がなるように仕込む
• あとはコーヒー ☕ 入れたり、シャワー浴びたり 🚿 、本 📖 読んだり隙間時間を有効活用
![Page 23: watchOS2 tips](https://reader033.vdocuments.mx/reader033/viewer/2022042907/58794cd51a28abb1418b51fb/html5/thumbnails/23.jpg)
おわり