0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめてのwatchOSアプリ開発

Posted at

はじめに

これまで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は全て小文字で設定します

②|拡張ランタイムセッション

  • 腕を下げたりした際に通常はアプリがスリープする場合でも、アプリを動かし続けることができる
  • 位置情報やモーションデータなどは画面消灯時も取得することができる
    • ただし、セッションは最大1時間で切れる
       
      ※ここでは、位置情報とワークアウトをバックグラウンドモードに設定

③|画面常時点灯  

画面消灯後にデータを取得できなくなることを防ぐ方法として、

  • 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 → watchOSwatchOS → iOS の両方向転送が可能である

さいごに

上記に記載した5つがwatchOSアプリの作成時に気になったことでした。
これからwatchOSアプリを開発する人の役に立てればと思います。

参考サイト

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?