[iOS SDK] Pebble腕時計対応iOSアプリを作る
英単語学習アプリ WordLearnをリリースしましたに書いたけれども今Pebble腕時計対応iOSアプリを開発しているのでそのメモを公開してみる。
2013/06/08 現在だと、こんな方法で開発する。
まだSDKがでたばかりなのでこれからどんどん変わっていくと思うのであくまで参考までに。
PebbleKit(SDK)のインストール
PebbleKit をインストールする。
現在の最新版は PebbleKit v1.1.1。
インストール手順は結構面倒。覚悟してがんばろう。
iOSアプリビルド準備
- PebbleKit.framework をプロジェクトに追加
- PebbleVendor.framework をプロジェクトに追加
- ExternalAccessory.framework, libz.dylib, CoreBluetooth.framework, CoreMotion.framework , MessageUI.framework を追加
- “-ObjC” を Build Settings の linker flag に追加
- “com.getpebble.public” をInfo.plistの”Supported external accessory protocols” (UISupportedExternalAccessoryProtocols) に追加
- 必要であれば、”App communicates with an accessory” (external-accessory) “Required background modes” (UIBackgroundModes) も追加する。これにより、バックグラウンドに回っても通信が出来るようだ。しかし、その分Pebbleの電池消費量が多くなる。
これらを実施すると、下記のような状態になる。
Pebbleとの通信について
PBWatch の AppMessage を使って通信する。
Pebble側はPure Cしか使えないが、Dictionaryのサポートはあるのでそれなりに簡単にメッセージのやりとりはできる。
Pebble側はC言語が使えるが、malloc など動的なメモリ確保は出来ず、メモリは静的に確保する必要がある。このあたりははまりポイントだった。
Help with getting a single char – Pebble Forums
また、strtok とか sprintf とか便利な関数達は用意されていないので、自前で書いたりする必要がある。このあたりはForumでもよく話題になっているようだ。
Pebbleのドキュメントはまだまだ記述が足りておらず、またまちがいもあったりするので、Pebble Developer Forumの活用は必須。
ちょっとはまったらForumを検索して、質問がなかったら自分でどんどん質問した方が時間の節約になりそうだ。
しかし多くの先人達のおかげでかなりノウハウがたまっているので、Forum検索でたいてい解決できる。
通信に関しては、iOS側は WeatherDemo、Pebble側はdemosディレクトリのfeature_app_message, feature_app_message_send が参考になる。
現状のiOSアプリの制限について
Android に比べると、いろいろと制限があるようだ。
Pebble | SDK |
- iOS上で、同時に通信できるのは1セッションのみ。複数のアプリで共有される必要がある。このため、Pebbleを発見して即通信を開始してはいけない。また、アプリの使用をやめたらすぐに closeSession: メソッドでセッションを閉じる必要がある。
- 通信はiOSアプリ側からしか開始できない。(Pebble側からiOSアプリを起動したりは出来ないようだ)
App Store への Submit について
Pebble | SDK | によると、Pebble は Made For iPhone program の一員であるため、対応アプリを whitelist 化する必要があるらしい。
指示通りに bizdev@getpebble.com にメールしたところ、30分以内で whitelisting guide のPDFが送られてきた。
その文書によると、ユーザが手動で Pebble との通信を start/stop できるように作る必要があるとのこと。
起動時に即つながってはいけないのかもしれない。
また、App Store 提出前に、彼らの審査も通してもらう必要があるようだ。
このあたりはおいおい調査していこう。
2013/06/23 追記
Pebble向けのアプリ対応が大体完成したので、サポートとメールのやりとりを再開したところ、TestFlightかHockeyAppでアプリを送るのは必須な作業らしい。
TestFlightでアプリを送って審査してもらうことにした。
関連記事
-
-
MacBookとWindowsでキーボード切り替え
MacBookはもともとiPhone向けプログラムを開発するために購入したものだが、実際にMacBo
-
-
KORG USB MIDIコントローラーnanoPAD2購入
2016年あけましておめでとうございます。以前から気になっていたKORG nanoPAD2 がタイム
-
-
英単語リスト探し中 → GSL と AWLを発見
今作っている英単語学習用iPhoneアプリは基本的には自分で英単語を入力して問題にするのだけれども、
-
-
Sony Tablet S 発売 2011/09/17
2011年9月17日(土)はSony Tablet S の発売日。 4月26日にソニー、アンドロイド
-
-
ニンテンドー3DS 予約失敗
昨日1月20日はニンテンドー3DSの予約開始日だったが、すっかり忘れていて、気づいたときにはAmaz
-
-
iPhone アプリアイコン
iphoneアプリで稼げるのか さんと同様、自分もアイコンを作るのはつらい。 今度アプリを公開すると
-
-
iPad のマルチタッチジェスチャーによるバグ
iPad/iPad2 はXcodeを利用することでマルチタッチジェスチャーが利用可能になっていました
-
-
MacJournalからのテスト投稿
今日MacPeopleで知ったMacJournalからのWordPressへの書き込みテスト。 うま
-
-
iPhoneアプリの無料版と有料版を同じソースから作りたい
こども向けに作った自作アプリおんぷちゃんは、習作でもあったのでiPhone無料版、iPhone有料版
-
-
Corona SDK本が出るらしい 「Corona SDK」ハンドブック2011
値段的に一般人向けではないけれども、Corona SDK 本が出るらしい。 自分がCorona SD