はじめに
これまでiOSアプリの開発を経験したことがあったのですが、
先日はじめてApple WatchのwatchOSのアプリを開発する機会がありました。
watchOSアプリを開発した際に、得た知識を備忘録として残しておきます。
事前情報
- iOS + wathcOSプロジェクトでアプリを作成
- ProvisioningProfileを発行して実機にて動作確認を実施
①|ProvisioningProfileの設定
- 各AppIDに紐づく ProvisioningProfile を発行する
WatchKit App と WatchKit Extension はプロジェクト名の末尾に、
小文字でWatchKit App、WatchKit Extension と付けるのが判別しやすいと思います
例)
iOS App: sample
.mobileprovision
WatchKit App: samplewatchkitapp
.mobileprovision
WatchKit Extension:samplewatchkitextension
.mobileprovision
※基本的にAppIDは全て小文字で設定します
②|拡張ランタイムセッション
- 腕を下げたりした際に通常はアプリがスリープする場合でも、アプリを動かし続けることができる
- 位置情報やモーションデータなどは画面消灯時も取得することができる
③|画面常時点灯
画面消灯後にデータを取得できなくなることを防ぐ方法として、
- Apple Watch Series 5以降は「常時点灯ディスプレイ」をOS側で設定する
- 手首を下げてもスクリーンがオフにならない
- watchOS 8以降からはアプリ側で常時表示オンにするかを決める設定ができる
④|ボタンの活性・非活性
- watchOSの標準ボタンに
isEnable
プロパティがない - 排他制御を表現するため、以下のように実装する必要がある
@IBAction private func onTapStartButtun() {
if !isRun {
isRun = true
startButton.setBackgroundColor(.none)
stopButton.setBackgroundColor(.darkGray)
startRun()
}
}
@IBAction private func onTapStopButtun() {
if isRun {
isRun = false
startButton.setBackgroundColor(.darkGray)
stopButton.setBackgroundColor(.none)
stopRun()
}
}
⑤|WatchConnectivity
- ペアリングされた iOS と watchOS 間で通信してデータやファイル転送を行うことができる
-
iOS → watchOS
、watchOS → iOS
の両方向転送が可能である
さいごに
上記に記載した5つがwatchOSアプリの作成時に気になったことでした。
これからwatchOSアプリを開発する人の役に立てればと思います。