ニフクラ mobile backendは3月末で終了します。
ニフクラ mobile backendからの移行先として、お勧めしているのがParse Serverです。設計思想が近く、変更するコード量が少なく済むのではないかと思います。
Parse ServerではUnity向けにSDKを提供していますが、ドキュメントは英語のみとなっています。そこで、各機能の使い方を解説します。今回はアクセス権限に関係するロールの操作について解説します。
Unity SDKのインストール
Unity SDKのインストールは、NuGetを使う方法が紹介されています。Unity側であらかじめ設定が必要なので、下記記事を参考にNuGetの設定を追加します。
Unity で NuGet パッケージを利用する #Unity - Qiita
そして、ParseのSDKは下記URLにて公開されています。
NuGet Gallery | parse 2.0.0-develop-1
制限
Unity SDKは、Unity 5.2.x以降が必須です。
link.xmlの作成
アセットフォルダの中に link.xml
を作成し、下記内容を記述します。
<linker>
<assembly fullname="UnityEngine">
<type fullname="UnityEngine.iOS.NotificationServices" preserve="all"/>
<type fullname="UnityEngine.iOS.RemoteNotification" preserve="all"/>
<type fullname="UnityEngine.AndroidJavaClass" preserve="all"/>
<type fullname="UnityEngine.AndroidJavaObject" preserve="all"/>
</assembly>
<assembly fullname="Parse.Unity">
<namespace fullname="Parse" preserve="all"/>
<namespace fullname="Parse.Internal" preserve="all"/>
</assembly>
</linker>
初期化
まず Parse
を読み込みます。
using Parse;
初期化は2つの方法があります。 2
の方法はマスターキーを指定もできるので、 C#としてデスクトップアプリやASP.NETの中で使う際に利用できる方法になります。
// 1. キーを指定して初期化
ParseClient client = new ParseClient("Your Application ID", "The Parse Server Instance Host URI", "Your .NET Key");
// 2. 詳細を指定して初期化
ParseClient client = new ParseClient(new ServerConnectionData
{
ApplicationID = "Your Application ID",
ServerURI = "The Parse Server Instance Host URI",
Key = "Your .NET Key", // This is unnecessary if a value for MasterKey is specified.
MasterKey = "Your Master Key",
Headers = new Dictionary<string, string>
{
["X-Extra-Header"] = "Some Value"
}
});
ロールの作成
ロールは子ロールと、ユーザーを持つことができます。以下の例では、 Administrator
というロールを作成しています。
var roleACL = new ParseACL();
roleACL.PublicReadAccess = true;
var role = new ParseRole("Administrator", roleACL);
Task saveTask = role.SaveAsync();
ロールにユーザーを追加する
既存のロールに対して、新しいユーザーを追加する場合のコードです。
var role = new ParseRole(roleName, roleACL);
foreach (ParseUser user in usersToAddToRole)
{
role.Users.Add(user);
}
Task saveTask = role.SaveAsync();
ロールからユーザーを削除する
ロールからユーザーを消す場合には Remove
を使います。もちろんACLの設定によっては、削除できない場合もあります。
var role = new ParseRole(roleName, roleACL);
foreach (ParseUser user in usersToAddToRole)
{
role.Users.Remove(user);
}
Task saveTask = role.SaveAsync();
既存のロールに新しいロールを追加する
ロールは入れ子の構造にできます。ロールを追加する際には Roles.Add
を使います。
foreach (ParseRole childRole in rolesToAddToRole)
{
role.Roles.Add(childRole);
}
Task saveTask = role.SaveAsync();
子ロールを削除する
子ロールを削除する場合には Remove
を使います。
foreach (ParseRole childRole in rolesToAddToRole)
{
role.Roles.Remove(childRole);
}
Task saveTask = role.SaveAsync();
まとめ
Parse Serverのロールオブジェクトは、NCMBと変わらず利用できます。ユーザーを入れる形もそうですし、ロールを入れ子にできるのもNCMBと変わりません。
ACLの仕組みもParse ServerとNCMBで似ています。他のmBaaSと比べると、全体の修正量はそこまで多くないと思われます。載せ替え先として検討に挙げてください。