0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Parse Server Unity SDKの使い方(ロールの操作)

Posted at

ニフクラ 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と比べると、全体の修正量はそこまで多くないと思われます。載せ替え先として検討に挙げてください。

Android Developers Guide | Parse

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?