[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は便利そう
関連記事
-
iPhoneアプリケーションプログラミング 新居雅行 購入
今年6月末にでたときには、「またiPhoneプログラミング本が出たんだなー」「表紙が地味だなー」「特
-
2015年に買ったりもらったりリリースしたりしたもの振り返り
年末なので2015年を振り返ってみよう企画。前半は仕事で死んでいたが、思ったよりもいろいろ活動してい
-
Admob SDK が Google AdMob Ads SDK になっていた
かなり以前に作ったアプリをアップデートするにあたって、AdMobで謎のエラーが出ているので最新
-
[Apple Watch] 黒アルミスポーツ42mm予約した
開発のために購入。4月10日(金) 16:05 あたりに予約したがすでに出荷予定日 4-6週だった。
-
iPhone XR予約開始
10/19(金)はiPhone XRの予約開始日だった。おそらく大量に作っているだろうということで予
-
iPad用ペン AluPen を買ってみた。
年末に注文したAluPenをようやく入手。品薄で1ヶ月かかってしまった。Amazonで2404円。紹
-
[iPhone SDK] Apple Push Notification を利用したアプリをサポートする Easy APNS
以前 apns-php を使ってApple Push Notification を実行する話を書いた
-
確かに薄い iPhoneケース eggshell iPhone クリア
試しにiPhoneアプリのwordpressで更新してみる。 とにかく薄いiPhoneケースがほしく
-
Learn iPhone and iPad Cocos2D Game Development
洋書だけれども、ApressからCocos2d を使ってゲーム開発する本として Learn iPho
-
RPG風タスク管理アプリ EpicWin
Designed for Use を読んでいて、例として紹介されていたので試しに買ってみた RP