XamarinはC#を使ったクロスプラットフォームなスマートフォンアプリ開発環境です。最近、コロナウイルス追跡アプリを作ったフレームワークとして注目されるようになりました。
NCMBではC#を使った開発環境としてUnityに対応していますが、あれはiOS/Android SDKをラッピングしているので、Xamarinでそのまま利用できません。C#のみで実装する必要があります。
ここでは現在開発中のXamarin用SDK(非公式)の使い方を紹介します。今回はデータストアの処理などで使うネットワーク処理の同期および非同期用メソッドについて解説します。
インストールについて
C# SDKはNuGetで公開していますので、Visual Studioなどでインポートできます。
使い方
使い方はまず、NCMBClientを読み込みます。
using NCMBClient;
初期化
初期化は次のようにします。アプリケーションキー、クライアントキーは自分のものに変更してください。
var applicationKey = "70d...934"; var clientKey = "4d0...dff"; var ncmb = new NCMB(applicationKey, clientKey);
同期処理について
同期処理は Save / Delete / Fetch / Find など Async
が付かないメソッドとして実装しています。
var message = "Hello, world"; var item = _ncmb.Object("DataStoreTest"); item.Set("message", message); item.Save(); var newItem = _ncmb.Object("DataStoreTest"); newItem.Set("objectId", objectId) newItem.Fetch(); item.Delete();
非同期処理について
対して非同期処理は SaveAsync / DeleteAsync / FetchAsync / FindAsync など Async
が付与されています。この場合、 async/awaitなどで制御可能です。
var message = "Hello, world"; var item = _ncmb.Object("DataStoreTest"); item.Set("message", message); await item.SaveAsync(); var newItem = _ncmb.Object("DataStoreTest"); newItem.Set("objectId", objectId); await newItem.FetchAsync(); await item.DeleteAsync();
データストアの検索について
データストアを検索する場合も同様です。まず同期処理での実装です。
// 文字列、数字の検索 var query = ncmb.Query("Hello"); query.EqualTo("message", "Test message").EqualTo("number", 501); var results = query.Find(); Console.WriteLine(results[0].Get("objectId"));
非同期処理は FindAsync
になります。
// 文字列、数字の検索 var query = ncmb.Query("Hello"); query.EqualTo("message", "Test message").EqualTo("number", 501); var results = await query.FindAsync(); Console.WriteLine(results[0].Get("objectId"));
コードについて
コードはNCMBMania/ncmb_xamarin: Xamarin SDK for NCMBにアップロードしています。ライセンスはMIT Licenseになります。
まとめ
例えば会員登録処理であれば user.SignUp
と user.SignUpAsync
のようにメソッドを分けています。ソフトウェアやアプリの操作がネットワーク処理中はフリーズしてしまうと、とても操作性が悪くなってしまいます。非同期処理を使って快適な操作を提供しましょう。