読者です 読者をやめる 読者になる 読者になる

koogawa log

iOS、Android、foursquareに関する話題

自作アプリをApple Watch対応した話 〜FastCheckin編〜

foursquare iOS 勉強会

先日、横浜で開催された yidev 第18回勉強会 で、自作アプリ「FastCheckin」をApple Watch対応した時の話をしてきました。

FastCheckinとは

素早く簡単にfoursquareにチェックインするためのアプリです。

このアプリをApple Watch対応し、iPhoneをポケットから取り出すこと無くベニューにチェックインできるようにしました!

f:id:koogawa:20150310040721p:plain

使ったAPI

 FastCheckinをApple Watch対応するにあたり、下記のAPIを使用しました。

  • WKInterfaceImage - チェックイン中のアニメーション用
  • WKInterfaceDevice - 画像のキャッシュ
  • WKInterfaceTable - ベニューのリスト
  • WKInterfaceMap - GlanceのフレンドMap

Glance*1では、最近チェックインしたフレンドをマップ上に表示する機能を実装しました。

f:id:koogawa:20150310040741p:plain

ハマったこと 気付いたこと

位置情報取得に必要な権限

ユーザが位置情報のパーミッション「常に許可」していないとApple Watch上では位置情報が取得できないことに気付きました。「このAppの使用中のみ許可」だとどんなに頑張っても位置情報が取得できません。

よって、ユーザにチュートリアルを表示して権限を変更してもらう等、何かしらの対応が必要になりそうです。

2015/3/20 追記:Xcode 6.2 GMでは「このAppの使用中のみ許可」でも位置情報が取得できるようになったようです。

地図に刺せるピンの数

最大で5本までしか刺せないことが判明しましたw まぁ、Apple Watchの少ないメモリ上でアプリを動かすことを考えれば当然の仕様な気もします。ピンの代わりに画像を表示してもこの制限は変わりません。

f:id:koogawa:20150309194805p:plain

ちなみに地図上に画像を表示する場合も WKInterfaceDevice によるキャッシュが効くみたいです。

画像キャッシュが便利

WKInterfaceDevice による画像キャッシュがとても便利でした。例えば、Apple Watch上で画像をネットワークから取得する場合などは負荷が大きいため、一度取得した画像をキャッシュしておくことをおすすめします。

画像キャッシュについては、tidさんによる次の記事がとても参考になります。

消えた起動画面

たしかBeta 4あたりまではWatch Appが起動する際にスプラッシュ画面のようなものが表示されていました。Images.xcassets にも LaunchImage の項目が存在していましたが、Beta 5で突如無くなったもようです。

f:id:koogawa:20150309195004p:plain

宣伝

今回紹介したFastCheckinですが、Apple Watchの発売を記念して無料セールを実施しております!(いつもは100円)

Apple Watchをゲットした際には、ぜひFastCheckinをインストールして使ってみてください!(^ω^)

*1:Watch Appとは別の機能で、重要な情報を表示するための補助的な機能