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