Upload
watchOS 2 新機能の細かい話
•
29 likes
•
23,849 views
Shuichi Tsutsumi
Follow
watchOS-2-Sampler 実装にあたって気付いた細かい諸々について(実装上の注意点、調べてわかったこと etc..)
Read less
Read more
Report
Share
Report
Share
1 of 68
Download now
Download to read offline
More Related Content
watchOS 2 新機能の細かい話
1.
watchOS 2 新機能の細かい話 堤
修一 @shu223 2015.6.16 potato tips #18
2.
• 堤 修一(つつみ
しゅういち) • iOS専業フリーランス • ブログ『Over&Out その後』 • 著書 『iOS×BLE Core Bluetoothプログラミング』 『iOSアプリ開発 達人のレシピ100』 自己紹介
3.
お手伝いしたプロダクト(BLE関連) Music for the
Deaf
4.
iOS Sampler シリーズ
5.
iOS Sampler シリーズ •
iOS新機能のサンプルコード集
6.
iOS Sampler シリーズ •
iOS新機能のサンプルコード集
7.
iOS Sampler シリーズ •
iOS新機能のサンプルコード集 • 累計5,000スター超!
8.
iOS Sampler シリーズ •
iOS新機能のサンプルコード集 • 累計5,000スター超! • github.com/shu223
9.
watchOS-2-Sampler
10.
watchOS-2-Sampler • watchOS 2
新機能の サンプルコード集
11.
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
12.
今日話すこと
13.
今日話すこと • watchOS-2-Sampler 実装にあたって気付いた細かい 諸々について
14.
今日話すこと • watchOS-2-Sampler 実装にあたって気付いた細かい 諸々について -
新機能やそのサンプルをひとつひとつ紹介するのではなく、実 装上の注意点とか、調べてわかったこととか
15.
今日話すこと • watchOS-2-Sampler 実装にあたって気付いた細かい 諸々について -
新機能やそのサンプルをひとつひとつ紹介するのではなく、実 装上の注意点とか、調べてわかったこととか - 全部で5つ
16.
今日話すこと • watchOS-2-Sampler 実装にあたって気付いた細かい 諸々について -
新機能やそのサンプルをひとつひとつ紹介するのではなく、実 装上の注意点とか、調べてわかったこととか - 全部で5つ ※用いている画像はすべてAppleによる公開ドキュメント (WWDCセッション動画やスライドetc..)からのものです
17.
1/5 2つのアセットカタログの 使い分け
18.
watchOS 2 から、ネイティブ動作するようになった!
19.
watchOS 2 から、ネイティブ動作するようになった! →
Extension のコードもウォッチ側で実行される
20.
watchOS 2 から、ネイティブ動作するようになった! →
Extension のコードもウォッチ側で実行される → Watch Extension の Asset Catalog も、Watch App の Asset Catalog もウォッチ側にある
21.
watchOS 2 から、ネイティブ動作するようになった! →
Extension のコードもウォッチ側で実行される → Watch Extension の Asset Catalog も、Watch App の Asset Catalog もウォッチ側にある → どっちに置いてもいいんじゃ・・・?
22.
watchOS 2 から、ネイティブ動作するようになった! →
Extension のコードもウォッチ側で実行される → Watch Extension の Asset Catalog も、Watch App の Asset Catalog もウォッチ側にある → どっちに置いてもいいんじゃ・・・? → そんなことはない!
23.
Watch Extension 側リソースを利用するケース •
wathOS-2-Sampler の Coordinated Animations サンプル
24.
Watch Extension 側リソースを利用するケース •
wathOS-2-Sampler の Coordinated Animations サンプル
25.
Watch App 側リソースを利用するケース •
wathOS-2-Sampler の Picker Styles サンプル
26.
Watch App 側リソースを利用するケース •
wathOS-2-Sampler の Picker Styles サンプル
27.
• Watch App
側リソースを利用
28.
• Watch App
側リソースを利用 - WKImage や WKInterfaceImage 等の WatchKit のクラスから name で参照する場合
29.
• Watch App
側リソースを利用 - WKImage や WKInterfaceImage 等の WatchKit のクラスから name で参照する場合 - IB からセットする場合
30.
• Watch App
側リソースを利用 - WKImage や WKInterfaceImage 等の WatchKit のクラスから name で参照する場合 - IB からセットする場合 - (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ)
31.
• Watch App
側リソースを利用 - WKImage や WKInterfaceImage 等の WatchKit のクラスから name で参照する場合 - IB からセットする場合 - (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ) • Watch Extension 側リソースを利用
32.
• Watch App
側リソースを利用 - WKImage や WKInterfaceImage 等の WatchKit のクラスから name で参照する場合 - IB からセットする場合 - (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ) • Watch Extension 側リソースを利用 - UIImage 等の WatchKit 以外のクラスから参照する場合
33.
• Watch App
側リソースを利用 - WKImage や WKInterfaceImage 等の WatchKit のクラスから name で参照する場合 - IB からセットする場合 - (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ) • Watch Extension 側リソースを利用 - UIImage 等の WatchKit 以外のクラスから参照する場合 • 参考
34.
• Watch App
側リソースを利用 - WKImage や WKInterfaceImage 等の WatchKit のクラスから name で参照する場合 - IB からセットする場合 - (名前をセットしたものがプレビューされてるだけなので、結局は上と同じ) • Watch Extension 側リソースを利用 - UIImage 等の WatchKit 以外のクラスから参照する場合 • 参考 - WWDC15 セッション 207“WatchKit in depth Part1”スライドp40∼
35.
2/5 メディアデータの 保存場所
36.
新たに追加されたマイク録音UI
37.
新たに追加されたマイク録音UI • presentAudioRecordingContr ollerWithOutputURL:preset: maximumDuration:actionTitl e:completion: を呼ぶ
38.
新たに追加されたマイク録音UI • presentAudioRecordingContr ollerWithOutputURL:preset: maximumDuration:actionTitl e:completion: を呼ぶ •
第1引数にオーディオファイル 出力先の NSURL オブジェクト を渡す
39.
新たに追加されたマイク録音UI • presentAudioRecordingContr ollerWithOutputURL:preset: maximumDuration:actionTitl e:completion: を呼ぶ •
第1引数にオーディオファイル 出力先の NSURL オブジェクト を渡す → documents 配下のパスを渡す
40.
新たに追加されたマイク録音UI • presentAudioRecordingContr ollerWithOutputURL:preset: maximumDuration:actionTitl e:completion: を呼ぶ •
第1引数にオーディオファイル 出力先の NSURL オブジェクト を渡す → documents 配下のパスを渡す → シミュレータでは動作するの に、実機で動作しない!
41.
Must use a
shared container
42.
• って WWDC15
セッション207“WatchKit in depth part1”スライド p59 に 書いてある Must use a shared container
43.
• って WWDC15
セッション207“WatchKit in depth part1”スライド p59 に 書いてある • “WatchKitAudioRecorder”の実装もそうなってる Must use a shared container
44.
• って WWDC15
セッション207“WatchKit in depth part1”スライド p59 に 書いてある • “WatchKitAudioRecorder”の実装もそうなってる • Watch の Extension と App で“App Groups”を有効にする Must use a shared container
45.
• って WWDC15
セッション207“WatchKit in depth part1”スライド p59 に 書いてある • “WatchKitAudioRecorder”の実装もそうなってる • Watch の Extension と App で“App Groups”を有効にする • なぜ?(メディアリソースは Extension と App で共用するから?) Must use a shared container
46.
3/5 WKAudioFilePlayer
47.
• 要ウォッチとの Bluetooth
Headset ペアリング
48.
• 要ウォッチとの Bluetooth
Headset ペアリング - ウォッチ側スピーカーからのオーディオファイル再生は presentMediaPlayerControllerWithURL:options:completion: を利用しないとできない?
49.
• 要ウォッチとの Bluetooth
Headset ペアリング - ウォッチ側スピーカーからのオーディオファイル再生は presentMediaPlayerControllerWithURL:options:completion: を利用しないとできない? • WKAudioFilePlayerItem: でオブジェクト生成直後に play し ようとしてはいけない
50.
• 要ウォッチとの Bluetooth
Headset ペアリング - ウォッチ側スピーカーからのオーディオファイル再生は presentMediaPlayerControllerWithURL:options:completion: を利用しないとできない? • WKAudioFilePlayerItem: でオブジェクト生成直後に play し ようとしてはいけない
51.
• 要ウォッチとの Bluetooth
Headset ペアリング - ウォッチ側スピーカーからのオーディオファイル再生は presentMediaPlayerControllerWithURL:options:completion: を利用しないとできない? • WKAudioFilePlayerItem: でオブジェクト生成直後に play し ようとしてはいけない • status プロパティが ReadyToPlay になれば再生OK
52.
4/5 ウォッチ側 Bluetooth の (直接)利用
53.
• watchOS Developer
Library には Core Bluetooth のド キュメントはない
54.
• watchOS Developer
Library には Core Bluetooth のド キュメントはない • ドキュメントは置き忘れてるだけかもしれない
55.
• watchOS Developer
Library には Core Bluetooth のド キュメントはない • ドキュメントは置き忘れてるだけかもしれない • ということで「念のため」 Watch Extension 側の コードで import してみた
56.
• watchOS Developer
Library には Core Bluetooth のド キュメントはない • ドキュメントは置き忘れてるだけかもしれない • ということで「念のため」 Watch Extension 側の コードで import してみた
57.
• watchOS Developer
Library には Core Bluetooth のド キュメントはない • ドキュメントは置き忘れてるだけかもしれない • ということで「念のため」 Watch Extension 側の コードで import してみた • (やはり)ダメでした・・・
58.
5/5 Watch Connectivity のメッセージ送信可否の条件
59.
• Watch Connectivity
60.
• Watch Connectivity -
Phone - Watch 間で相互にメッセージやデータを 送れる
61.
• Watch Connectivity -
Phone - Watch 間で相互にメッセージやデータを 送れる - 前からあった openParent∼ は Watch → Phone だ け(ただし Phone から Reply を返すことは可)
62.
• Watch Connectivity -
Phone - Watch 間で相互にメッセージやデータを 送れる - 前からあった openParent∼ は Watch → Phone だ け(ただし Phone から Reply を返すことは可) • メッセージ送信可否のチェック
63.
Reachable なケース その1: 両者共にフォアグラウンド
64.
Reachable なケース その2: iOS側だけバックグラウンド
65.
• 要は、Watch App
がバックグラウンドのときは iPhone 側からのメッセージを受け取れない
66.
• 要は、Watch App
がバックグラウンドのときは iPhone 側からのメッセージを受け取れない • あくまで WCSession の reachable の話。Application context や User info transfer, File transfer を使えば Wacth App がバックグラウンドのときも Phone → Watch へ情 報を送れるかも(後日試してサンプル追加予定)
67.
• 要は、Watch App
がバックグラウンドのときは iPhone 側からのメッセージを受け取れない • あくまで WCSession の reachable の話。Application context や User info transfer, File transfer を使えば Wacth App がバックグラウンドのときも Phone → Watch へ情 報を送れるかも(後日試してサンプル追加予定) • 参考:WWDC15 セッション713 “Introducing Watch Connectivity”
68.
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
Download now