Quickstarters
Feature Overview
How to Build a Backend for Xamarin?
28 分
はじめに このチュートリアルでは、back4appの強力な機能を使用して、 xamarin モバイルアプリのバックエンドを構築する方法を学びます。 専用のsdkを使用する代わりに、back4appの rest api , graphql , およびその他のweb apiオプションに依存します。このアプローチにより、あなたの モバイルクライアント は軽量で柔軟性があり、シンプルなhttp呼び出しを通じてデータに接続できるようになります。 データベースモデルの作成、セキュリティの適用、認証の処理、ファイル操作の実行について説明します。 これらの手順に従うことで、xamarinのバックエンドを迅速かつ安全に構築する方法がわかります。 自動化されたタスクのスケジューリングや、 webhooks の統合を探求し、 xamarin アプリの機能を拡張することもできます。これにより、サーバーの設定を調整するのではなく、uiのコーディングに集中できます。 このガイドを完了すると、 mobile apps のバックエンドにback4appを利用するための再利用可能なテンプレートが得られます。 また、 access control lists (acl)を適用し、必要に応じて cloud code を記述し、最終的なソリューションに live queries や cloud jobs のような高度なワークフローを組み込む方法を理解することができます。 前提条件 このチュートリアルを最大限に活用するために、次のものを用意してください back4appアカウント こちらから無料でサインアップしてください。 https //www back4app com/ 新しいback4appプロジェクト back4appの始め方 https //www back4app com/docs/get started/new parse app xamarin開発環境 (visual studioまたはvisual studio for mac) xamarinインストールドキュメント https //docs microsoft com/en us/xamarin/get started/installation/ c#とxamarinの基本知識 (c#の public class からweb apiリクエストを行う方法を含む)。 これらの前提条件が整ったら、xamarinプロジェクトをback4appに接続して進める準備が整います。 ステップ 1 – back4app で新しいプロジェクトを作成し、接続する back4app プロジェクトを作成する あなたの back4app ダッシュボードで。これはあなたのバックエンドの基盤です。 プロジェクトに名前を付ける (例えば、「xamarin backend tutorial」)。 アプリキーを見つける アプリの「セキュリティとキー」セクションに移動して。rest、graphql、またはモバイルクライアントからリクエストを行う際に使用する可能性のある他のキーが表示されます。 xamarin プロジェクトを構成する http リクエストを行うために。parse sdk の代わりに、あなたは httpclient または好みのネットワークライブラリを使用して、back4app アプリの rest または graphql エンドポイントを呼び出します。 例えば、あなたの アプリケーション id と rest api キー を安全な場所または定数ファイルに保存できます public class back4appconstants { public const string appid = "your application id"; public const string restapikey = "your rest api key"; public const string serverurl = "https //parseapi back4app com"; } 「 web api 」を呼び出すときは、常にこれらの資格情報をリクエストヘッダーに含めてください。これにより、リクエストが必要な認証を持つ正しいアプリにルーティングされることが保証されます。 ステップ 2 – データベースの設定 1\ データモデルの作成 back4appのダッシュボードを使用してクラスを定義するか、最初のリクエスト時に動的に作成させます。たとえば、 todo クラスを作成したい場合は、 database セクションで作成するか、 rest api 呼び出しを介してその場で作成できます curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo 2\ aiエージェントを使用したデータモデルの作成 back4appは、完全なクラス構造を生成できる aiエージェント を提供しています aiエージェントを あなたのback4appプロジェクトで開きます。 モデルを 説明します(例:「タイトルとiscompletedフィールドを持つ‘todo’という新しいクラスを作成してください。」)。 確認して スキーマを自動的に生成します。 3\ データの読み取りと書き込み (rest) あなたの xamarin プロジェクト内で、すべてのリクエストを back4app に処理する public class (例えば、 restclient ) を作成できます using system net http; using system text; using newtonsoft json; public class restclient { private readonly httpclient client; public restclient() { client = new httpclient(); client defaultrequestheaders add("x parse application id", back4appconstants appid); client defaultrequestheaders add("x parse rest api key", back4appconstants restapikey); } public async task createtodoasync(string title, bool iscompleted) { var newtodo = new { title = title, iscompleted = iscompleted }; var content = new stringcontent(jsonconvert serializeobject(newtodo), encoding utf8, "application/json"); var response = await client postasync($"{back4appconstants serverurl}/classes/todo", content); // handle the response } public async task\<list\<todo>> gettodosasync() { var response = await client getasync($"{back4appconstants serverurl}/classes/todo"); var jsonstring = await response content readasstringasync(); // parse json into a c# model (todo) // return the result // return new list\<todo>(); // placeholder } } public class todo { public string objectid { get; set; } public string title { get; set; } public bool iscompleted { get; set; } } 4\ データの読み取りと書き込み (graphql) graphql クエリの場合、back4app graphql エンドポイントにリクエストを送信できます curl x post \\ h "content type application/json" \\ h "x parse application id your application id" \\ h "x parse master key your master key" \\ \ data '{"query" "mutation { createtodo(input {fields {title \\"wash the car\\" iscompleted\ false}}){ todo{ objectid title }}}"}' \\ https //parseapi back4app com/graphql 同様に、xamarinから、graphql文字列を含むjsonボディをpostすることができます https //parseapi back4app com/graphql 5\ ライブクエリの操作(オプション) parse sdkではなくweb api呼び出しを使用している場合でも、リアルタイムデータ更新を希望する場合はライブクエリを有効にできます。クラスの変更にサブスクライブするために、専門的な接続(websocket)を使用します。 アプリの サーバー設定 からライブクエリを有効にし、xamarinで利用可能な互換性のあるクライアントライブラリを使用します。あるいは、独自のwebsocketソリューションを構築するか、リアルタイムサポートがオプションの場合はポーリングに依存することもできます。 ステップ3 – aclとclpによるセキュリティの適用 1\ aclとclpの概要 back4appのセキュリティには クラスレベルの権限 (clp) と アクセス制御リスト (acl) が含まれます。clpは、どのユーザーまたは役割がクラス全体を読み書きできるかを定義します。aclはオブジェクトごとのセキュリティを追加します。これらを組み合わせて、認可されたユーザーのみがデータを操作できるようにします。 2\ クラスレベルの権限の設定 データベース セクションをback4appで開きます。 クラスを選択 (todoなど)します。 クラスレベルの権限に移動 して、読み書きのルールを設定します。認証されたユーザーのみが読み書きできるようにすることもできます。これにより、モバイルクライアントがデータを読み取る前にログインする必要があります。 ステップ4 – クラウドコード関数の作成 1\ クラウドコードの理由 クラウドコードを使用すると、カスタムサーバーサイドロジックを実行できます。ビジネスルール、バリデーション、またはデータが変更されたときに実行されるトリガーを作成できます。これにより、ロジックがモバイルクライアントの外部で実行されるため、改ざんのリスクが軽減されます。 2\ 例の関数とトリガー 以下は、 main js ファイル内のクラウド関数の簡略化されたサンプルです parse cloud define('helloxamarin', async (request) => { return 'hello from xamarin cloud code!'; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'title is required'; } }); 3\ デプロイ デプロイするには、 back4app cli またはダッシュボードのクラウドコードセクションを使用できます。デプロイが完了したら、xamarinから 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 '{}' \\ https //parseapi back4app com/functions/helloxamarin 4\ npmモジュール 追加のライブラリが必要な場合は、cloud codeプロジェクトフォルダー内で npm を使用してインストールします。その後、 require を main js に記述します。このアプローチは、サーバー側からサードパーティのapiを呼び出すのに便利です。 ステップ5 – 認証の設定 1\ ユーザー認証を有効にする back4appでは、 user クラスがユーザーの資格情報を管理します。 アプリ設定 の下で、ユーザー認証、メール確認、パスワードリセットの設定を有効にできます。 2\ ユーザーサインアップ / ログイン (rest) xamarinプロジェクトから、サインアップとログインを処理するc#メソッドを書くことができます public async task signupuserasync(string username, string password, string email) { var user = new { username = username, password = password, email = email }; var content = new stringcontent(jsonconvert serializeobject(user), encoding utf8, "application/json"); var response = await client postasync($"{back4appconstants serverurl}/users", content); // parse response } public async task loginuserasync(string username, string password) { var loginendpoint = $"{back4appconstants serverurl}/login?username={username}\&password={password}"; var response = await client getasync(loginendpoint); // parse response } その後、将来のリクエストのためにクライアント側にセッショントークンを保存できます。 3\ ソーシャルログイン ソーシャルログイン(例:google、facebook)を統合するには、 back4appソーシャルログインのドキュメント https //www back4app com/docs/platform/sign in with apple を参照してください。各プロバイダーには独自のoauthフローがあり、これを モバイルクライアント から処理できます。その後、返されたトークンをback4appに渡します。 ステップ 6 – ファイルストレージの取り扱い 1\ ファイルストレージの設定 ファイルは、ボディにファイルデータを含むpostリクエストを送信することでアップロードできます。たとえば、xamarinアプリから画像を保存するには、画像をバイト配列に読み込み、次のように送信します curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type image/png" \\ \ data binary "@local image png" \\ https //parseapi back4app com/files/myimage png 2\ c#によるアップロードの例 public async task\<string> uploadfileasync(byte\[] filedata, string filename) { var filecontent = new bytearraycontent(filedata); filecontent headers contenttype = new system net http headers mediatypeheadervalue("image/png"); var response = await client postasync($"{back4appconstants serverurl}/files/{filename}", filecontent); var jsonresponse = await response content readasstringasync(); // parse the response to get file url return "file url from response"; } 3\ セキュリティに関する考慮事項 ファイルアップロードを安全にするには、back4appの サーバー設定 に移動し、 ファイルの権限 を調整します。たとえば、認証されたユーザーのみがアップロードできるようにすることができます。 ステップ 7 – メール確認とパスワードリセット 1\ 概要 メール確認は、ユーザーが登録したメールを所有していることを確認します。パスワードリセットリンクは、パスワードを忘れた場合にアクセスを回復するために使用されます。 2\ back4app ダッシュボードの設定 「 メール認証 」を メール設定 の下で有効にします。 パスワードリセットテンプレートを 編集 し、「from」アドレスを設定します。 ブランドに合わせてメールの内容をカスタマイズすることもできます。 3\ 実装 有効にすると、ユーザーがメールでサインアップすると、確認リンクが送信されます。パスワードリセットの呼び出しは、ユーザーのメールを使用してリセットメールをトリガーするために同じ基本apiに対して行われます。 ステップ 8 – クラウドジョブによるタスクのスケジューリング 1\ クラウドジョブの機能 クラウドジョブを使用すると、古いデータのクリーンアップや毎日のダイジェストメールの送信など、定期的なタスクをback4appプラットフォームからすべてスケジュールできます。 2\ 例 parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days ago = new date(now 30 24 60 60 1000); query lessthan('createdat', thirty days ago); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old items `; }); クラウドコードをデプロイし、次に アプリ設定 > サーバー設定 > バックグラウンドジョブ の下でジョブをスケジュールします。 ステップ 9 – ウェブフックの統合 back4appでウェブフックを定義するには、 その他 > ウェブフック に移動し、「ウェブフックを追加」をクリックします。 エンドポイントを提供します。例えば、 https //your service com/webhook endpoint のようにします。 トリガーを選択します。例えば、「todoクラスの新しいオブジェクト」などです。 webhooksはサードパーティサービスに通知できるため、xamarinアプリは軽量のままで、外部システムが追加のロジックや通知を処理できます。 ステップ10 – back4app管理パネルの探索 「 back4app管理アプリ 」は、クエリを書くことなくcrud操作を処理するためのユーザーフレンドリーな方法です。 app dashboard > more > admin app で有効にします。管理ユーザーを作成し、サブドメインを選択してログインします。 この管理アプリは、データを管理する必要があるが、直接データベースにアクセスすべきでない非技術的なチームメンバーに最適です。 結論 あなたは、 back4app apiを使用してxamarinのバックエンドを構築する方法を見てきました。安全なクラスを作成し、 clp と acl を追加し、認証を処理し、ファイルのアップロード、タスクのスケジューリング、外部サービスとの統合を探求しました。このアプローチにより、あなたの モバイルアプリ は、ホストされたデータベースとクラウド環境の力を活用しながら、迅速で柔軟な状態を保つことができます。 次のステップ xamarinアプリケーションを拡張し 、より複雑なロジック、キャッシング、または高度な役割と権限を処理します。 高度な機能に飛び込む 、プッシュ通知など、または共同更新が必要な場合はlive queriesでリアルタイムデータを統合します。 公式のback4appドキュメントを訪れる 、セキュリティ、パフォーマンス、デバッグに関する詳細なガイドを得るために。 実世界のソリューションを作成する 、サードパーティapi(決済ゲートウェイ、分析、ソーシャルメディア)をback4appバックエンドと組み合わせます。この組み合わせにより、モバイルクライアントの機能が向上し、コードが整理されます。