AppleWatchアプリを作る Xcode11, watchOS 6

ふと思い立って、AppleWatchアプリを作ってみようかと。

使う環境(2020.4.25時点での最新)

  • XCode11.4
  • WatchOS6.2
  • 母艦Macは、10.15.4 Catalina
  • AppleWatch Series3

参考にしたドキュメント

Creating Independent watchOS APPs

作ってみたいアプリのイメージ(状況により、変動予定)

チャイム的に15分ごとに、振動するアプリ
下調べ?
基本的にバックグラウンド実行は推奨されていないけれど、OS側からトリガーされて少しの時間動くことはできるみたい(今回の場合、15分ごとに、復帰して、振動させる)

上記以外は、ドキュメントに従いながら、作ってみます。

Step1: プロジェクトを作る/Create a Watch-Only App

XCodeで新しいプロジェクト作成を選び、”ChimeApp”と名付けます。
以下、選んだもの

  • Screen1: “watchOS”タブから”WatchApp”を選択
    WatchApp
  • Screen2: “ChimeApp”, SwiftUI, “include notification Scene”をそれぞれ選択
    ChimeApp

    Notification Sceneの必要性は現時点ではよくわかっていませんが、Appleのドキュメントにも使う予定がなくてもとりあえず、チェックのままにしておきなさいと書かれてます。Complicationは、最初から未チェックだったので、未チェックのままにします。UnitTestや、UITestのチェックボックスがないのはなぜでしょうか?

  • Screen3: 保存場所選択。

    Save
    “Craete Git repository on my Mac”が、チェックされていますがとりあえず、チェックのままにしておくのがお勧めです。

  • これが、作成直後
    作成直後

Step2: プロジェクト設定/Convert a Dependent App into an Independent App

プロジェクトナビゲータ(Xcode中の左のPane)で、ChimeAppを選択すると、プロジェクト全体の設定ができます。

ChimeApp WatchKit Extensionを選んで内容を確認。

Appleのドキュメントでは、Deployment Infoの所に、”Supports Running WIthout iOS App installation”というチェックボックスがあり、チェックを外すように書かれているけど、チェックボックスそのものがないので、スキップして良さそう。

Step3:AppleWatch上で単独動作するために必要な確認/Ensure Your App Runs Independently

単独動作できるようにするためには、以下に気をつけないといけないです。

  • ユーザーがAppleWatch上でSign inしてもらわないといけない
     関連リンク:Authenticating Users on Apple Watch
     ざっくり概要:iPhoneとつながっていないことを考えると、AppStoreに接続するためには、アカウントで入ってもらう必要があるということ。アカウント情報を必要としない機能ならば、考えなくても良い。
    → 今回は、使う予定なしなので、スキップ
  • HealthKitの情報を使うならば、ユーザーに許可を得なければならない。
    ざっくり概要:HealthKitの情報は、privacyデータの代表格みたいなものなので、アクセスするならば、ユーザーからの許可が必要。
    関連リンク:HealthKit
     → 今回のアプリで使う予定はないので、スキップ
  • データをダウンロードするのに、WatchConnectivityを使えない
     ざっくり概要:WatchConnectivityとは、iOS端末とwatchOSアプリが双方向で通信するための仕組み。今回は、(iOS端末から)独立しているアプリを作るので、もちろんiOS端末の存在を前提にできない。ので、使えない。必要ならば以下のリンクをチェック(どのような方法があるかを説明しているドキュメント)
     リンク:Keeping Your watchOS Content Up to Date
  • Push Notification(complication pushを含む)は、watchに直接送る必要あり
    ざっくり概要:push notificationは、Short-Look interfaceやLong-Look interfaceというものを使って、ユーザーに通知するもの。complication pushは、AppleWatchのcomplicationという表示方法に対してのデータをアップデートする仕組み(らしい)。上記のデータダウンロードと同じで、iOS端末のサポートを期待できないので、自分で管理するしかないということ。
MEMO
注記:WatchConnectivityを使っていけないということではないけれども、存在を前提にしてはいけないので、それをメインのデータ取得方法にしてはいけないということ。
おそらくiPhoneを持っている人からするとWatchConnectivityを最初にトライしてくれる方が嬉しい気もする。

Step4:実機で動かす

Hello Worldするだけだけど、とりあえず、動かしてみます。
まずは、Cmd+Rで、シミュレータで動作させることは確認。
実機で動作させるには、リンク設定されているiOS端末が必要っぽいです。リンクさせてあるならば、Xcodeからターゲットとして選択できます。

実機ターゲット

これで、動作するアプリを開発する環境は整いました。あとは、ライブラリを駆使してアプリを開発するだけです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です