LoginSignup
24
24

More than 5 years have passed since last update.

初めて作ったApple Watchアプリが無事リリースされたので、宣伝とソースコードとメモ

Posted at

宣伝

前評判が良くなかったので期待してなかったApple Watchですが、いざ触ってみるといい感じ。(僕が今回スマートウォッチ自体を持つのが初めてのため、ハードルが下がっているというのもありそうです。)
しばらくはWatchアプリを出して遊んでみようと思っています。

手始めにミニゲームなアプリを公開してみました。(Lights Outのクローン)

42.png
Apple Watch対応のミニゲームアプリ「反転一色(Flip One Color)」をリリースしました - UPDATE - SpriteKit.jp

ソースコード(Swift)はGitHubで公開しています。
https://github.com/tnantoka/FlipOneColor

メモ

基本的なこと

アプリをApple Watchに対応させる

プロジェクトを選択して、Targetの最下部の+からWatch Appを追加。
Notificationのチェックはいらなければ外す。Activateする?って聞かれるのでYes。

参考:https://developer.apple.com/library/ios/documentation/General/Conceptual/WatchKitProgrammingGuide/ConfiguringYourXcodeProject.html#//apple_ref/doc/uid/TP40014969-CH2-SW1

画面遷移

http://qiita.com/gladenjoy/items/aaec7306d7135f64cdab
http://www.toyship.org/archives/2043
などのとおりにやればできる。

iOSと違って、戻るボタンの右に表示されるのが現在の画面のタイトル。微妙…。

複数のボタンを1行に並べる

Groupに入れて、WidthをRelative to Containerにして1以下の値にすれば分割できる。

参考:http://qiita.com/shu223/items/e704f70abc50da32ba38

DEBUGフラグ

Other Swift Flags-D DEBUGなどする時は、WatchKit Extensionにも設定する。

アイコン

Watch AppのImages.xcassetsに設定する。

スクリーンショット

External Displaysを表示したままでCommand + SすればiPhoneの画面と一緒に撮れる。(iPhoneだけを取りたい時に邪魔だったりもするけど。)
ストアに必要なのは42mmの方だけ。

バージョン番号

プロジェクト初期状態のままだと、バージョン(Build)の値が11.0でずれてるので合わせる。(そのままだとValidateでWargingが出た)

willActivateはviewWillAppear:とは用途が違う

名前の通り、スリープからの復帰とか、他アプリから戻ってきた時とか、色々呼ばれる。

困ったこと

複数のボタンに同じような処理をさせたい時

  • IBActionに引数senderは渡ってこない。
  • tagが設定できない。
  • IBOutletCollectionは未サポート。

ということで、今回は25個のボタンにせっせとOutletとAction設定しました。

WatchKit AppをBuildしてもSimulatorがアクティブにならない

iPhoneの画面をタップしてもダメ。
Command+TabかDockアイコンクリックなら行ける。
地味に困るけど、仕方ない。

no paired Apple Watch?

最初、Device名の後ろに(no paired Apple Watch)が表示されて実機インストールできなかった。
USBケーブルを繋ぎ直したらDevise登録とかXcodeが勝手にやってくれて解消した。

application:handleWatchKitExtensionRequest:reply:で落ちてた

この中でiPhoneアプリがクラッシュしても、以下のエラーが発生するだけ。
凡ミスに気づくのが遅れた。

The UIApplicationDelegate in the iPhone App never called reply() in -[UIApplicationDelegate application:handleWatchKitExtensionRequest:reply:]

iPhone上のApple Watchアプリで表示される名前が変わらない

iPhoneアプリ側のCFBundleNameが使われる。
Apple Watchの実機上に表示されるのはWatch AppのCFBundleDisplayName
ややこしい…。

参考:https://developer.apple.com/library/ios/qa/qa1892/_index.html

二重開発感

Viewの使い回しはできないので、ゲーム画面をiPhoneとWatch用にそれぞれ作業。
ゲームのロジック部分は共通化したけど、それでも残るこれさっきもやったぞ?感…。

ただいま次のアプリを開発中なので、また何かあれば追記 or 別投稿したいと思います。

24
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
24