はじめてのApple Watch開発についてのメモ
ここを見ながら作っていく
https://developer.apple.com/jp/documentation/General/Conceptual/WatchKitProgrammingGuide/index.html#//apple_ref/doc/uid/TP40014969-CH8-SW1
将来的に作りたいものは、ランニング用のアプリだけど、それは次の機会に。
Watchアプリケーションバンドルと、WatchKitExtension バンドル
WatchアプリケーションバンドルはUIのみ
- ストーリーボード
- リソースファイルだけ
WatchKitExtension は状態管理、インターフェースの管理、ユーザ操作の応答を行う
Watchアプリケーションのアーキテクチャ
https://developer.apple.com/jp/documentation/General/Conceptual/WatchKitProgrammingGuide/DesigningaWatchKitApp.html#//apple_ref/doc/uid/TP40014969-CH3-SW1
コンプリケーション
- 時計の画面に表示できる小さな可視要素
- アプリはメモリーに常駐しており、起動が早い
- バックグランドタスクを実行できる割り当て時間が増加する
リモート通知のテスト、デバッグ
JSONペイロードデータを指定して、送信される。
PushNotificationPayload.apps この仕組みは普通にiOSアプリにも欲しいな。
WatchKitExtensionのデリゲート
- WKExtension
- WKExtensionDelegate (AppDelegateみたいなやつ)
呼び出されるクラスはInfo.plistで指定する
バックグランドタスク
- システムから呼び出され、それぞれのタスクの処理を行う
- アプリケーションを最新の状態に更新
- スナップショットを更新するタスク
- Watchs接続タスク(iOSから取得する)
- NSURLSessionタスク
データの共有
- 各バンドル(Watchアプリケーション、WatchKitExtensionの両方)に置く
- WatchKitExtensionに置く、Watchアプリケーションからはアクセス可能なため。
- ネットワーク経由でダウンロード(またはiOSから転送)して、共有グループコンテナに置く
ファイルの共有
- WatchアプリケーションとWatchKit Extensionのファイルの共有はApp Groupsを使って行う
iOSとのデータのやり取りをWatch Connectivity Frameworkを使う
- 一時的なデータはupdateAplicationContextを使う。送信が完了していない場合に、再度呼び出すと、前回のデータは破棄されて、新しい送信を始める
- 確実に届けたい場合はtransferUserInfoを使う