[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でアプリを送って審査してもらうことにした。
関連記事
-
派生クラスを変更し忘れて半日はまる
こんなコードを書いて半日はまっていた。 SettingViewController は UITa
-
Cocoa Design Patterns
いまさらながら最近デザインパターンにはまっており、Cocoaでどんなデザインパターンが使われているの
-
中野の3Dプリンタ屋でPebbleスタンドを出力してきた
中野ブロードウェイの地下に3Dプリンタ屋ができたので、Pebbleスタンドを出力してみた。
-
EverLearn 1.9.0 に音声認識機能を追加しました
EverLearn 1.9.0 にて音声認識機能を追加しました。ホーム画面から、マイクボタンを押して
-
Alexa スキル公開特典 2018年6月
AmazonはAlexaスキル公開を促すために、期間限定でTシャツを配布している。毎月1ヶ月と期間は
-
dyld`__abort_with_payload:でクラッシュ WatchKitApp on Xcode11.1
Xcode 11.0 や Xcode11.1で以前はビルドして実行できていたWatchKi
-
NAMM 2016 気になるもの YAMAHA MD-BT01
The 2016 NAMM Show でいろいろ面白いものが発表されているようだ。NAMM Show
-
はじめてのiPhoneプログラミング
さらにiPhoneプログラミング本が出るらしい。出版ラッシュですな。 これは568ページもあるらしい
-
REALFORCE MOUSE RFM01U11 ハンズオン中
【Hothotレビュー】今までにないクリック感がゲームプレイも変える! 東プレ初のマウス「REAL
-
Linking 対応デバイス tomoru
この前 Makuake で出資しそこねた Tomoru が Amazon で ¥ 1,069 + ¥