Quickstarters
Feature Overview
How to Build a Backend for WatchOS?
37 分
はじめに このチュートリアルでは、あなたが watchos アプリのバックエンドを back4app を使用して構築する方法を発見します。 あなたが iphoneアプリ のための watchkit拡張 を作成しているのか、独立した apple watch 体験を設計しているのかにかかわらず、back4app は必要なツールを提供することで作業を簡素化します。 安全なデータベース、cloud code functions、リアルタイムクエリ(live queries)、ユーザー認証などの機能を統合します—すべて自分のサーバーを管理することなく。 また、back4app の迅速なスタートアップルーチンと使いやすい環境が、サーバーの設定ではなく、あなたの watchosアプリ の機能に集中できるようにする方法も見ていきます。 その過程で、ジョブのスケジューリング、webhook の設定、プッシュ通知の構成などのタスクを処理する方法を学びます。 最後には、あなたの watch アプリや iosアプリケーション を生産レベルのニーズに拡張するためのしっかりとした基盤を持つことができ、すべて インターネット接続 を介して watchkit アプリ とバックエンド間でシームレスなデータ同期を提供しながら。 前提条件 back4appアカウントと新しいback4appプロジェクト back4appの始め方。 https //www back4app com/docs/get started/new parse app アカウントを持っていない場合は、無料で作成できます。上記のガイドに従ってプロジェクトを準備してください。 watchos/xcode開発環境 xcodeがインストールされている必要があります。 watchos sdk 実際のapple watchまたはシミュレーターのいずれかで、 watchkit拡張 を実行およびビルドできます。 parse swift sdk swift package manager https //github com/netreconlab/parse swift を使用して、あなたの watchos または統合された iosアプリ のためにsdkをインストールおよび構成します。 swift、xcode、およびappleの開発エコシステムに対する理解 apple developer documentation https //developer apple com/documentation/ appleプラットフォームに不慣れな場合は、始める前にwatchosおよびiosのドキュメントを探索する時間を持ってください。 始める前に、これらの前提条件を満たしていることを確認してください。back4appプロジェクトを設定し、ローカルのwatchos環境を準備しておくことで、スムーズに進めることができます。 ステップ1 – back4appで新しいプロジェクトを作成し、接続する back4appプロジェクトが必要な理由 新しいback4appプロジェクトは、すべてのデータを保存し、あなたの watchosアプリ のためにクラウドコードを実行するために不可欠です。これはあなたのバックエンドの基盤となります。 プロジェクトを作成する back4appにログインします。 ダッシュボードで “new app” をクリックします。 アプリの名前を付けます(例: “watchos backend tutorial”)。 parse swift sdkをインストールします 次に、 parse swift の依存関係を package swift に追加するか、 file → swift packages → add package dependency を使用してxcodeで追加します。urlを提供してください dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] あなたのwatchosまたは共有コードでparseを初期化します あなたのwatchkitアプリの起動コードまたは両方の watchos と iphoneアプリ , parseを初期化します @main struct mywatchapp app { init() { task { do { try await parseswift initialize( applicationid "your app id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } } var body some scene { windowgroup { contentview() } } } この時点で、あなたの watchos アプリはback4appバックエンドと通信できます。それが独立した apple watch アプリであろうと、 watchkit拡張機能 が iphoneアプリ , すべてのバックエンドデータはparse swift sdkを通じて流れます。 ステップ2 – データベースの設定 1\ データモデルの作成 back4appはparse serverのスキーマオンライト機能を使用しています。あなたは back4app database セクションでテーブル(クラス)を定義するか、オブジェクトが最初に保存されるときに自動的に作成されるようにすることができます。たとえば、あなたの watchアプリ が健康データを追跡する場合、心拍数、ステップ、または運動タイプのようなフィールドを持つ「healthmetrics」クラスがあるかもしれません。 2\ aiエージェントを使用したデータモデルの作成 back4appの aiエージェント は、スキーマを平易な言葉で説明することができます アプリダッシュボードで aiエージェント を開きます。 「日次ステップ(数値)、心拍数(数値)を持つwatch metricsクラスを設定してください。」のような詳細を提供します。 aiが自動的にスキーマを作成します。 3\ sdkを使用したデータの読み書き 以下は、watchosアプリからデータを保存およびクエリする例です。 healthmetrics 構造体があると仮定しましょう import parseswift struct healthmetrics parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var dailysteps int? var heartrate int? } // saving data func savemetrics(steps int, heart int) async { var metrics = healthmetrics() metrics dailysteps = steps metrics heartrate = heart do { let saved = try await metrics save() print("saved metrics \\(saved)") } catch { print("error saving \\(error)") } } // querying data func fetchlatestmetrics() async { let query = healthmetrics query() do { let results = try await query find() print("fetched \\(results count) items") } catch { print("error fetching \\(error)") } } 4\ rest apiを使用したデータの読み取りと書き込み 必要に応じて、あなたの watchos または iosアプリ もrestリクエストを送信できます curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"dailysteps" 8000, "heartrate" 75}' \\ https //parseapi back4app com/classes/healthmetrics 5\ graphqlを使用したデータの読み取りと書き込み back4appはgraphqlエンドポイントも提供しています。例えば mutation { createhealthmetrics(input { fields { dailysteps 7500 heartrate 70 } }) { healthmetrics { objectid dailysteps heartrate } } } 6\ ライブクエリの使用(オプション) apple watchでリアルタイムデータの更新が必要な場合は、ライブクエリを有効にします back4appの サーバー設定 で ライブクエリ をオンにします。 watchosコードでライブクエリのurlを設定します parselivequery configure(url url(string "wss\ //your subdomain b4a io")!) 次に、変更を購読します func subscribemetricsupdates() async throws { let subscription = healthmetrics query() subscribe() for try await event in subscription { switch event { case created(let newdata) print("new data \\(newdata)") case updated(let updateddata) print("updated \\(updateddata)") default break } } } ステップ3 – aclとclpを使用したセキュリティの適用 1\ 概要 back4appは、データベースを保護するためにアクセス制御リスト(acl)とクラスレベルの権限(clp)を許可します。たとえば、特定のメトリックを生成したユーザーに制限したり、認証されたアカウントのみに読み取りアクセスを許可したりすることができます。 2\ ステップバイステップのセットアップ クラスレベルの権限 デフォルトを定義するには、 データベース → クラス → セキュリティ に移動します(例:すべてのユーザーに対して読み取り専用、所有者に対して書き込み)。 コード内のacl watchkitまたは共有コードの各オブジェクトにaclを追加できます。たとえば: if let user = user current { var acl = parseacl() acl setreadaccess(user user, value true) acl setwriteaccess(user user, value true) var metrics = healthmetrics() metrics acl = acl } これにより、ログインしているユーザーのみが自分が作成したhealthmetricsオブジェクトを表示または変更できることが保証されます。 ステップ4 – クラウドコード関数の作成 1\ クラウドコードの理由 クラウドコードは、データ検証、外部api呼び出し、またはログ記録など、複雑または機密の操作をサーバー側で実行するのに役立ちます。このセットアップは、watchosデバイスの作業負荷を最小限に抑え、 apple watch のバッテリー寿命を保護するのに役立ちます。 2\ 例の関数 あなたの main js parse cloud define('processmetrics', async (request) => { const { dailysteps, heartrate } = request params; if (!dailysteps || !heartrate) { throw 'missing parameters '; } // example simple calculation return dailysteps heartrate; }); 3\ デプロイ 次のコマンドを使用して、 back4app cli https //www back4app com/docs/local development/parse cli を使用してデプロイします。 b4a deploy 4\ npmモジュールのインストール cloud codeで外部ライブラリが必要な場合 依存関係を package json に追加します(cloud codeフォルダー内)。 require('your lib') を main js で使用します。 ステップ5 – 認証の設定 1\ ユーザー認証を有効にする デフォルトでは、 user クラスはback4appで準備されています。ユーザーオブジェクトの「クラスレベルの権限を有効にする」が正しく設定されていることを確認してください。 2\ コードサンプル parse swiftでは、watchosコードからユーザーをサインアップさせることができます struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupnewuser(name string, pass string, mail string) async { var newuser = user() newuser username = name newuser password = pass newuser email = mail do { let signedup = try await newuser signup() print("sign up successful \\(signedup)") } catch { print("error signing up \\(error)") } } 3\ ソーシャルログイン watchosまたはiphoneアプリにapple、google、またはfacebookログインを統合する予定がある場合、関連するparse swiftのソーシャルログイン機能を使用できます。詳細については、 back4app docs https //www back4app com/docs/platform/sign in with apple を参照してください。 ステップ6 – ファイルストレージの処理 1\ ファイルストレージの設定 watchアプリが画像、ログ、または小さなデータファイルをアップロードする必要がある場合、 parsefile を利用できます。 func uploadfile(data data, filename string) async { let file = parsefile(name filename, data data) do { let savedfile = try await file save() print("uploaded file \\(savedfile url ?? "")") } catch { print("error uploading file \\(error)") } } 2\ 例 ワークアウトの画像や日々の進捗のスナップショットを保存することができます let snapshotdata = // some image data from watch screenshot task { await uploadfile(data snapshotdata, filename "workout jpg") } 3\ セキュリティの考慮事項 ファイルのaclを確認してください。デフォルトでは、誰かが直接リンクを取得するとファイルのurlにアクセスできます。parseサーバーのファイル設定を通じてファイルアクセスを保護または制御できます。 ステップ7 – メール確認とパスワードリセット 1\ 概要 apple watchのユーザーは、常に時計上でログインを直接管理するわけではありませんが、メール確認を有効にすることでデータを安全に保つことができます。 2\ back4appダッシュボードの設定 次に進む アプリ設定 → メール メール確認を 有効にする 必要に応じてテンプレートをカスタマイズします。 3\ コード/実装 パスワードリセットのために do { try await user requestpasswordreset(email "example\@domain com") } catch { print("error requesting password reset \\(error)") } ステップ 8 – クラウドジョブによるタスクのスケジューリング 1\ クラウドジョブの機能 クラウドジョブを使用すると、古いデータのローテーションやwatchos分析の使用状況レポートの生成など、バックグラウンドタスクを自動化できます。 2\ 例 「 main js 」の中で parse cloud job('cleanupmetrics', async (request) => { const query = new parse query('healthmetrics'); // for example, remove records older than 7 days const now = new date(); const cutoff = new date(now 7 24 60 60 1000); query lessthan('createdat', cutoff); const oldmetrics = await query find({ usemasterkey true }); await parse object destroyall(oldmetrics, { usemasterkey true }); return `deleted ${oldmetrics length} old records `; }); コードをデプロイします。 「 アプリ設定 」→ サーバー設定 → バックグラウンドジョブ 」に移動し、毎日スケジュールします。 ステップ 9 – ウェブフックの統合 1\ 定義 ウェブフックは、アプリ内で特定のイベントが発生したときに外部サービスに通知します。たとえば、新しいメトリックが記録されるたびにslackチャンネルに通知を送信したい場合があります。 2\ 設定 back4appダッシュボードで、「 その他 」→ ウェブフック 」に移動します。 エンドポイント(slackのurlなど)を持つウェブフックを追加します。 イベントを選択します(例:「healthmetricsに新しいレコード」)。 3\ 例 ユーザーが新しい dailysteps エントリを追加するたびに、あなたの slack チャンネルに通知が送信されます。また、cloud code でより複雑なロジックを定義して、外部サービスにカスタムペイロードを送信することもできます。 ステップ 10 – back4app 管理パネルの探索 1\ どこで見つけるか 管理パネルは、あなたの back4app コンソールの more → admin app 簡単なインターフェースが必要な非技術的な利害関係者のために、これを有効にしてウェブベースのデータ管理用の管理ユーザーを作成してください。 2\ 機能 データの表示と編集 ログとクラウドジョブの管理 分析の追跡またはプッシュ通知の送信 これは、直接データベースやコードへのアクセスを必要とせずにデータでコラボレーションする簡単な方法です。 結論 このガイドを通じて、あなたは watchosのバックエンドを構築する方法 を学びました。安全なデータベーススキーマを設定し、クラウドコードを書き、リアルタイムクエリを処理し、ユーザー認証を実装しました。これで、あなたの watchkitアプリ は最小限の手間でデータを保存し、同期できるようになります。 次のステップ あなたのウォッチアプリを磨く ために、パーソナライズされた通知やデータ変換のための高度なクラウド機能を統合してください。 追加の iosアプリケーション 機能を探求する、バックグラウンド同期やキャッシング戦略など、あなたの apple watch のために。 公式の back4appドキュメント https //www back4app com/docs/ を読んで、セキュリティ、分析、パフォーマンスの高度な情報を得てください。 app store向けに最適化する ことで、watchos拡張機能やスタンドアロンのウォッチアプリを配布します。 バックエンドを拡張することで、限られた インターネット接続 でもシームレスに動作する堅牢な watchosアプリ を提供できます。引き続き構築を続け、apple watchの体験のためにback4appの力を楽しんでください!