Xcode12, watchOS7, SwiftUI でも作ってみました。
[watchOS] AppleWatchアプリを作る Xcode11, watchOS 6
Sponsor Link
使う環境(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”を選択
-
Screen2: “ChimeApp”, SwiftUI, “include notification Scene”をそれぞれ選択
Notification Sceneの必要性は現時点ではよくわかっていませんが、Appleのドキュメントにも使う予定がなくてもとりあえず、チェックのままにしておきなさいと書かれてます。Complicationは、最初から未チェックだったので、未チェックのままにします。UnitTestや、UITestのチェックボックスがないのはなぜでしょうか?
-
Screen3: 保存場所選択。
“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端末のサポートを期待できないので、自分で管理するしかないということ。
注記:WatchConnectivityを使っていけないということではないけれども、存在を前提にしてはいけないので、それをメインのデータ取得方法にしてはいけないということ。
おそらくiPhoneを持っている人からするとWatchConnectivityを最初にトライしてくれる方が嬉しい気もする。
Step4:実機で動かす
Hello Worldするだけだけど、とりあえず、動かしてみます。
まずは、Cmd+Rで、シミュレータで動作させることは確認。
実機で動作させるには、リンク設定されているiOS端末が必要っぽいです。リンクさせてあるならば、Xcodeからターゲットとして選択できます。
これで、動作するアプリを開発する環境は整いました。あとは、ライブラリを駆使してアプリを開発するだけです!
Sponsor Link