[iOS SDK] WatchKitでできることできないこと 2015年3月
公開日:
:
最終更新日:2015/04/05
Apple Watch, iPad, iPhone Apple Watch
Apple Watch発売日(2015年4月24日)までに自作アプリの WatchKit対応を完了させたい。稼働日カウントダウンで調べたところ残り26日しかないのでいまさらながらWatchKitの調査を行っている。
しかしPebble Smartwatch アプリを最初に作ったときも同じだったけれども、今時計側のアプリで何ができて、何ができないのかを把握するのに時間がかかってしまう。
公開されている情報に関しても、WatchKit は2014年9月に公開されて、その後2015年3月に更新されたので、どちらをベースに書かれた情報なのかを把握するのも難しい。
まずは今の自作 Pebble アプリでできていることが Apple Watch でもできるのかを調べていこうと考えている。
現状の Pebble アプリ EverLearn でできていること
- iOSアプリから英単語とその意味をBluetooth経由で100個まで受けとって時計側のメモリに保存できる
- iOSアプリからPebbleアプリを起動することができる
- データ転送後は、iOSデバイスなしで Pebbleアプリを起動して普通に使うことができる
- 時刻表示と単語を同じ画面に表示することで、時計として使うことができる
- 1分ごとに自動で問題を切り替えることができる
- 上と下のボタンで問題を切り替えることができる
- 真ん中のボタンを押すことで単語とその意味の表示を切り替えることができる(暗記カード形式)
- 加速度センサーでShakeを検知して次の単語を表示する(2015/04/05追加)
iOSアプリから英単語とその意味をBluetooth経由で100個まで受けとって時計側のメモリに保存できる
Apple Watch Programming Guide: WatchKit App Architecture
によると、データ共有にはNSUserDefaults か shared container directory を使うことができるようだ。
shared container directory を使うとファイル自体を共有することができるようだが、自分の用途なら NSUserDefaults で NSDictionary を共有すればすみそうに思える。
ただ、保存されるのはiOSデバイス側のメモリのようだ。このため、iOSデバイスなしでWatchKitアプリを単体起動してもデータが取得できないように思われる。
自分は職場ではiPhoneは机に置いたままにして移動することが良くあるのだが、その場合はWatchKitアプリは使えないことになってしまう。
iOSアプリからPebbleアプリを起動することができる
Pebbleではできているのだが、これはどうやらWatchKitでは今はできないようだ。
WatchKit – Apple Watch / Watch Kitで現時点できないことまとめ – Qiita
逆に、PebbleではPebbleアプリからiOSアプリを起動することができないのだが、それはある openParentApplication で 程度可能らしい。
+ (BOOL)openParentApplication:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *replyInfo, NSError *error))reply
起動はかけられるが、Foreground にはもってこれないため、Background でできる処理があればそれを WatchKit に返してやることになる。
データ転送後は、iOSデバイスなしで Pebbleアプリを起動して普通に使うことができる
これもどうやらだめなようだ。
iOSデバイスなしでWatchKitアプリを起動することはできない、とどこかで見た気がする。
もちろん2015年3月時点での情報なので今後変わることはあるだろうし、是非変わってほしい。
時刻表示と単語を同じ画面に表示することで、時計として使うことができる
WKInterfaceDate Class Reference によると可能そうだ。
たしかに、時刻表示のために毎秒 iOSデバイスとの通信が発生してしまってはいけないだろう。
1分ごとに自動で問題を切り替えることができる
これは不明。WKInterfaceDate は時刻をラベルで表示するためのクラスのようなので、WatchKitで現在時刻を取得できるかがわかっていない。
しかし WKInterfaceTimer Class Reference によると NSTimer は利用できるようなので大体であればなんとかなるか。
上と下のボタンで問題を切り替えることができる
Apple Watch にはボタンは一つしかなく、Digital Crownもまだアプリから利用可能ではないようなので、問題切替にはなにかちがう方法を提供する必要がありそうだ。
WatchKit – Apple Watch / Watch Kitで現時点できないことまとめ – Qiita
普通に考えると上下のスワイプで切替か。と思ったが、ジェスチャーのハンドリングも自由にはできないようだ。
ios – Gesture recognition in Apple Watch (WatchKit) – Stack Overflow
スクロールできる画面にしておけば、ジェスチャーによるスクロールすることができる、という仕組みである模様。
真ん中のボタンを押すことで単語とその意味の表示を切り替えることができる(暗記カード形式)
Apple Watch のハードウェアボタンが押されたことをアプリから検知することができるのだろうか?
今のところ不明。
長押し(強押し?)でMenuが表示されるのはわかっているが、ちょっとまどろっこしい気がする。
左右スワイプで表示できるようにするのが現実的だろうか。
今後も適宜更新する予定。(2015/03/29 更新)
加速度センサーでShakeを検知して次の単語を表示する(2015/04/05追加)
残念ながら現在のSDKではセンサーデータを利用したり、センサーによるジェスチャーを取得したりすることはできないようだ。
ios – Handling Apple Watch sensors data in WatchKit app – Stack Overflow
しかしこの人はラボに行ったことを書き込んでいるが問題ないのだろうか。
追記 2015/04/05
Apple Watch の SimulatorではまだHomeスクリーンに戻ることができない watchkit – Apple Watch Main menu screen in the Emulator – Stack Overflow
Pebbleよりも Apple Watch の方が優れている点
Pebbleの方が優れていることを多く書いている気がするので、Apple Watchの方が優れていることも書いてみる。
- 最初から日本語表示に対応している
- 高解像度カラー液晶を採用している
- タッチで操作できる
- Digital Crownは便利そう
関連記事
-
iOS4プログラミングブック の感想など。
前評判によるとかなりの力作のようなので、久しぶりにiOSの本を買ってみた。 ソースコードはすでに発売
-
Generic Xcode Archive 問題
久しぶりに自作アプリ Reibun のアップデート版を App StoreにSubmitしようとおも
-
iPhone 5 用のケースと保護シートとジャケットを買ってみた
発売日翌日に16GB iPhone 5を入手できたので早速ケースと保護シートとジャケットを買ってみた
-
[iPhone SDK] iOS 4で導入された Blocks とは
Game Center を試していると、たくさんの^ (Caret というらしい。自分はハットと覚え
-
EverLearn 1.8.1 を公開しました
EverLearn 1.8.1 を本日公開しました (2016/10/27)単語検索ページで単語をハ
-
TableView関連で苦労
iPhoneアプリ開発をやっていると数日に一度何らかの問題にぶつかって、しばらくはまる。本を読んだり
-
MacOS Yosemite に Pebble SDK 3.0 をインストールする
Pebble Timeが届いたので、早速 Pebble SDK 3.0 をMacBook P
-
[iPhone開発本] iPad電子書籍アプリ開発ガイドブック
2010年8月23日発売らしい。3570円と高いけれども、内容は濃そうだ。 目次はImpress D
-
リズムくんにくまモン画像を利用させていただきました
熊本県さまから許諾をいただけたので、リズムくん バージョン1.6で、くまモン画像を表示
-
[iOS SDK] 消音モードでも音を再生する対応を入れました
昔、 iPhone/iPad はサイレントモードにしても音が鳴る という記事を書いたけれども