狠狠撸

狠狠撸Share a Scribd company logo
watchOS 2 新機能の細かい話
堤 修一 @shu223
2015.6.16 potato tips #18
? 堤 修一(つつみ しゅういち)
? iOS専業フリーランス
? ブログ『Over&Out その後』
? 著書?
『iOS×BLE?Core Bluetoothプログラミング』?
『iOSアプリ開発 達人のレシピ100』
自己紹介
お手伝いしたプロダクト(BLE関連)
Music for the Deaf
iOS Sampler シリーズ
iOS Sampler シリーズ
? 颈翱厂新机能のサンプルコード集
iOS Sampler シリーズ
? 颈翱厂新机能のサンプルコード集
iOS Sampler シリーズ
? 颈翱厂新机能のサンプルコード集
? 累計5,000スター超!
iOS Sampler シリーズ
? 颈翱厂新机能のサンプルコード集
? 累計5,000スター超!
? github.com/shu223
watchOS-2-Sampler
watchOS-2-Sampler
? watchOS 2 新機能の
サンプルコード集
watchOS-2-Sampler
? watchOS 2 新機能の
サンプルコード集
? 現在の収録サンプル:
14種類
- Accelerometer
- Gyroscope
- Pedometer
- Heart Rate
- Table Animations
- Animated Properties
- Audio Rec & Play
- Picker Styles
- Taptic Engine
- Alert
- Animation with Digital Crown
- Interactive Messaging
- Open System URL
- Audio File Player
今日话すこと
今日话すこと
? watchOS-2-Sampler 実装にあたって気付いた細かい
諸々について
今日话すこと
? watchOS-2-Sampler 実装にあたって気付いた細かい
諸々について
- 新機能やそのサンプルをひとつひとつ紹介するのではなく、実
装上の注意点とか、調べてわかったこととか
今日话すこと
? watchOS-2-Sampler 実装にあたって気付いた細かい
諸々について
- 新機能やそのサンプルをひとつひとつ紹介するのではなく、実
装上の注意点とか、調べてわかったこととか
- 全部で5つ
今日话すこと
? watchOS-2-Sampler 実装にあたって気付いた細かい
諸々について
- 新機能やそのサンプルをひとつひとつ紹介するのではなく、実
装上の注意点とか、調べてわかったこととか
- 全部で5つ
※用いている画像はすべてAppleによる公開ドキュメント
(WWDCセッション動画やスライドetc..)からのものです
1/5
2つのアセットカタログの
使い分け
watchOS 2 から、ネイティブ動作するようになった!
watchOS 2 から、ネイティブ動作するようになった!
→ Extension のコードもウォッチ側で実行される
watchOS 2 から、ネイティブ動作するようになった!
→ Extension のコードもウォッチ側で実行される
→ Watch Extension の Asset Catalog も、Watch App の
Asset Catalog もウォッチ側にある
watchOS 2 から、ネイティブ動作するようになった!
→ Extension のコードもウォッチ側で実行される
→ Watch Extension の Asset Catalog も、Watch App の
Asset Catalog もウォッチ側にある
→ どっちに置いてもいいんじゃ????
watchOS 2 から、ネイティブ動作するようになった!
→ Extension のコードもウォッチ側で実行される
→ Watch Extension の Asset Catalog も、Watch App の
Asset Catalog もウォッチ側にある
→ どっちに置いてもいいんじゃ????
→ そんなことはない!
Watch Extension 侧リソースを利用するケース
? wathOS-2-Sampler の Coordinated Animations サンプル
Watch Extension 侧リソースを利用するケース
? wathOS-2-Sampler の Coordinated Animations サンプル
Watch App 侧リソースを利用するケース
? wathOS-2-Sampler の Picker Styles サンプル
Watch App 侧リソースを利用するケース
? wathOS-2-Sampler の Picker Styles サンプル
? Watch App 侧リソースを利用
? Watch App 侧リソースを利用
- WKImage や WKInterfaceImage 等の WatchKit のクラスから name
で参照する場合
? Watch App 侧リソースを利用
- WKImage や WKInterfaceImage 等の WatchKit のクラスから name
で参照する場合
- IB からセットする場合
? Watch App 侧リソースを利用
- WKImage や WKInterfaceImage 等の WatchKit のクラスから name
で参照する場合
- IB からセットする場合
- (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ)
? Watch App 侧リソースを利用
- WKImage や WKInterfaceImage 等の WatchKit のクラスから name
で参照する場合
- IB からセットする場合
- (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ)
? Watch Extension 侧リソースを利用
? Watch App 侧リソースを利用
- WKImage や WKInterfaceImage 等の WatchKit のクラスから name
で参照する場合
- IB からセットする場合
- (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ)
? Watch Extension 侧リソースを利用
- UIImage 等の WatchKit 以外のクラスから参照する場合
? Watch App 侧リソースを利用
- WKImage や WKInterfaceImage 等の WatchKit のクラスから name
で参照する場合
- IB からセットする場合
- (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ)
? Watch Extension 侧リソースを利用
- UIImage 等の WatchKit 以外のクラスから参照する場合
? 参考
? Watch App 侧リソースを利用
- WKImage や WKInterfaceImage 等の WatchKit のクラスから name
で参照する場合
- IB からセットする場合
- (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ)
? Watch Extension 侧リソースを利用
- UIImage 等の WatchKit 以外のクラスから参照する場合
? 参考
- WWDC15 セッション 207“WatchKit in depth Part1”スライドp40~
2/5
メディアデータの
保存場所
新たに追加されたマイク録音鲍滨
新たに追加されたマイク録音鲍滨
? presentAudioRecordingContr
ollerWithOutputURL:preset:
maximumDuration:actionTitl
e:completion: を呼ぶ
新たに追加されたマイク録音鲍滨
? presentAudioRecordingContr
ollerWithOutputURL:preset:
maximumDuration:actionTitl
e:completion: を呼ぶ
? 第1引数にオーディオファイル
出力先の NSURL オブジェクト
を渡す
新たに追加されたマイク録音鲍滨
? presentAudioRecordingContr
ollerWithOutputURL:preset:
maximumDuration:actionTitl
e:completion: を呼ぶ
? 第1引数にオーディオファイル
出力先の NSURL オブジェクト
を渡す
→ documents 配下のパスを渡す
新たに追加されたマイク録音鲍滨
? presentAudioRecordingContr
ollerWithOutputURL:preset:
maximumDuration:actionTitl
e:completion: を呼ぶ
? 第1引数にオーディオファイル
出力先の NSURL オブジェクト
を渡す
→ documents 配下のパスを渡す
→ シミュレータでは動作するの
に、実機で動作しない!
Must use a shared container
? って WWDC15 セッション207“WatchKit in depth part1”スライド p59 に
書いてある
Must use a shared container
? って WWDC15 セッション207“WatchKit in depth part1”スライド p59 に
書いてある
? “WatchKitAudioRecorder”の実装もそうなってる
Must use a shared container
? って WWDC15 セッション207“WatchKit in depth part1”スライド p59 に
書いてある
? “WatchKitAudioRecorder”の実装もそうなってる
? Watch の Extension と App で“App Groups”を有効にする
Must use a shared container
? って WWDC15 セッション207“WatchKit in depth part1”スライド p59 に
書いてある
? “WatchKitAudioRecorder”の実装もそうなってる
? Watch の Extension と App で“App Groups”を有効にする
? なぜ?(メディアリソースは Extension と App で共用するから?)
Must use a shared container
3/5
WKAudioFilePlayer
? 要ウォッチとの Bluetooth Headset ペアリング
? 要ウォッチとの Bluetooth Headset ペアリング
- ウォッチ側スピーカーからのオーディオファイル再生は
presentMediaPlayerControllerWithURL:options:completion:
を利用しないとできない?
? 要ウォッチとの Bluetooth Headset ペアリング
- ウォッチ側スピーカーからのオーディオファイル再生は
presentMediaPlayerControllerWithURL:options:completion:
を利用しないとできない?
? WKAudioFilePlayerItem: でオブジェクト生成直後に play し
ようとしてはいけない
? 要ウォッチとの Bluetooth Headset ペアリング
- ウォッチ側スピーカーからのオーディオファイル再生は
presentMediaPlayerControllerWithURL:options:completion:
を利用しないとできない?
? WKAudioFilePlayerItem: でオブジェクト生成直後に play し
ようとしてはいけない
? 要ウォッチとの Bluetooth Headset ペアリング
- ウォッチ側スピーカーからのオーディオファイル再生は
presentMediaPlayerControllerWithURL:options:completion:
を利用しないとできない?
? WKAudioFilePlayerItem: でオブジェクト生成直後に play し
ようとしてはいけない
? status プロパティが ReadyToPlay になれば再生OK
4/5
ウォッチ側 Bluetooth の
(直接)利用
? watchOS Developer Library には Core Bluetooth のド
キュメントはない
? watchOS Developer Library には Core Bluetooth のド
キュメントはない
? ドキュメントは置き忘れてるだけかもしれない
? watchOS Developer Library には Core Bluetooth のド
キュメントはない
? ドキュメントは置き忘れてるだけかもしれない
? ということで「念のため」 Watch Extension 側の
コードで import してみた
? watchOS Developer Library には Core Bluetooth のド
キュメントはない
? ドキュメントは置き忘れてるだけかもしれない
? ということで「念のため」 Watch Extension 側の
コードで import してみた
? watchOS Developer Library には Core Bluetooth のド
キュメントはない
? ドキュメントは置き忘れてるだけかもしれない
? ということで「念のため」 Watch Extension 側の
コードで import してみた
? (やはり)ダメでした???
5/5
Watch Connectivity
のメッセージ送信可否の条件
? Watch Connectivity
? Watch Connectivity
- Phone - Watch 間で相互にメッセージやデータを
送れる
? Watch Connectivity
- Phone - Watch 間で相互にメッセージやデータを
送れる
- 前からあった openParent~ は Watch → Phone だ
け(ただし Phone から Reply を返すことは可)
? Watch Connectivity
- Phone - Watch 間で相互にメッセージやデータを
送れる
- 前からあった openParent~ は Watch → Phone だ
け(ただし Phone から Reply を返すことは可)
? メッセージ送信可否のチェック
Reachable なケース その1:
両者共にフォアグラウンド
Reachable なケース その2:
iOS側だけバックグラウンド
? 要は、Watch App がバックグラウンドのときは iPhone
側からのメッセージを受け取れない
? 要は、Watch App がバックグラウンドのときは iPhone
側からのメッセージを受け取れない
? あくまで WCSession の reachable の話。Application
context や User info transfer, File transfer を使えば Wacth
App がバックグラウンドのときも Phone → Watch へ情
報を送れるかも(後日試してサンプル追加予定)
? 要は、Watch App がバックグラウンドのときは iPhone
側からのメッセージを受け取れない
? あくまで WCSession の reachable の話。Application
context や User info transfer, File transfer を使えば Wacth
App がバックグラウンドのときも Phone → Watch へ情
報を送れるかも(後日試してサンプル追加予定)
? 参考:WWDC15 セッション713?
“Introducing Watch Connectivity”
watchOS-2-Sampler
GitHub: shu223/watchOS-2-Sampler
Blog: watchOS 2 の新機能のサンプルコード集『watchOS-2-Sampler』
- Accelerometer
- Gyroscope
- Pedometer
- Heart Rate
- Table Animations
- Animated Properties
- Audio Rec & Play
- Picker Styles
- Taptic Engine
- Alert
- Animation with Digital Crown
- Interactive Messaging
- Open System URL
- Audio File Player

More Related Content

watchOS 2 新機能の細かい話