メンバーを操作する(メンバープラグイン)

ここでは、サイトアカウントに存在するメンバーインスタンスを、SDKから操作する方法について解説します。

メンバーオブジェクトECHOMemberObject

ECHOMemberObjectは、個別メンバーを操作するためのオブジェクトです。

オブジェクトを生成する

新しいメンバーとしてオブジェクトを初期化するには、初期化メソッドの第一引数にメンバーインスタンスのIDを指定します。

ECHOMemberObject *member = [[ECHOMemberObject alloc] initWithInstanceId:@"メンバーインスタンスID"];

既存メンバーとしてオブジェクトを初期化するには、初期化メソッドの第二引数にメンバーID(注:ログインIDではありません)を指定します。

ECHOMemberObject *member = [[ECHOMemberObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"メンバーID"];

オブジェクトフィールド

メンバーオブジェクトは、以下のフィールドを持ちます。

フィールド名説明可変
refid NString メンバーID ×
login_id NString メンバーログインID
password NString メンバーログインパスワード
contents NSDictionary メンバーコンテンツ
created NSDate 登録日時 ×
groups NSArray<ECHOMembersGroupObject> 所属グループ

フィールドからデータを取得する

オブジェクトのフィールドからデータを取得するには、objectForKeyメソッドを使用します。

id login_id = [member objectForKey:@"login_id"];

フィールドにデータをセットする

オブジェクトのフィールドにデータをセットするには、setObject:forKey:メソッドを使用します。

[member setObject:@"john1442" forKey:@"login_id"];

[member setObject:@{@"name":@"John"} forKey:@"contents"]; 

ログイン・ログアウト

ACL(アクセスコントロール)が設定されているコンテンツへアクセスするには、予めアクセスが許可されているメンバーでログインしておく必要があります。

特定のメンバーでログインするには、[ECHOMemberQuery loginWithInstanceId:loginId:password:returningError](同期通信によるログイン)もしくは[ECHOMemberQuery loginInBackgroundWithBlock:instanceId:loginId:password](非同期通信によるログイン)を使用します。
ログインに成功すると、以後ログアウトもしくはタイムアウトするまで、ログイン状態が維持されます。

NSError *error = nil;
[ECHOMemberQuery loginWithInstanceId:@"メンバーインスタンスID" loginid:@"メンバーログインID" password:@"メンバーログインパスワード" returningError:&error];

if(error != nil) NSLog(@"%@", error); // ログインエラー

ログアウトするには、[ECHOMemberQuery logoutWithInstanceId:returningError:](同期通信によるログアウト)もしくは[ECHOMemberQuery logoutInBackgroundWithBlock:instanceId:](非同期通信によるログアウト)を使用します。

[ECHOMemberQuery logoutWithInstanceId:@"メンバーインスタンスID" returningError:nil];

メンバーを保存する

リモートサーバーへメンバーを保存するには、push:メソッド(同期通信による保存)もしくはpushInBackgroundWithBlock:メソッド(非同期通信による保存)を使用します。

ECHOMemberObject *member = [[ECHOMemberObject alloc] initWithInstanceId:@"メンバーインスタンスID"];
[member setObject:@"john1234" forKey:@"login_id"]; // メンバーログインIDをセット
[member setObject:@"password" forKey:@"password"]; // メンバーログインパスワードをセット
....

// 非同期でメンバーを保存
[member pushInBackgroundWithBlock:^(NSError *e) {
            if(e == null) { // 正常終了
                  NSLog(@"Complete: %@", member);
            }else{ // 異常発生
                  NSLog(@"Error: %@", e);
            }
}];

メンバーを取得する

リモートサーバー上に存在するメンバーを取得するには、fetch:メソッド(同期通信による取得)もしくはfetchInBackgroundWithBlock:メソッド(非同期通信による保存)を使用します。

ECHOMemberObject *member = [[ECHOMemberObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"メンバーID"];

// 非同期でメンバーを取得
[member fetchInBackgroundWithBlock:^(NSError *e) {
            if(e == null) { // 正常終了
                  NSLog(@"Complete: %@", member);
            }else{ // 異常発生
                  NSLog(@"Error: %@", e);
            }
}];

メンバーを削除する

リモートサーバー上に存在するメンバーを削除するには、delete:メソッド(同期通信による削除)もしくはdeleteInBackgroundWithBlock:メソッド(非同期通信による削除)を使用します。

ECHOMemberObject *member = [[ECHOMemberObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"メンバーID"];


// 非同期でメンバーを削除
[member deleteInBackgroundWithBlock:^(NSError *e) {
            if(e == null) { // 正常終了
                  NSLog(@"Complete");
            }else{ // 異常発生
                  NSLog(@"Error: %@", e);
            }
}];

メンバーを検索する

メンバーを検索するには、[ECHOMemberQuery findWithInstanceId:params:returningError:](同期通信による検索)もしくは[ECHOMemberQuery findInBackgroundWithBlock:instanceId:params:](非同期通信による検索)を使用します。
第二引数にリスト制御パラメータを与えることで、データの検索・抽出条件を指定することが可能です。

// 非同期でメンバーを検索
[ECHOMemberQuery findInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

                  if(e == null) { // 正常終了
                        NSLog(@"Complete: %@", objects);
                  }else{ // 異常発生
                        NSLog(@"Error: %@", e.toString());
                  }
} instanceId:@"メンバーインスタンスID" params:@{@"q":@"検索キーワード"}];

現在のACLを取得する

オブジェクトに現在設定されているACLを取得するには、currentACLプロパティを使用します。

ECHOACLObject *current_acl = member.currentACL;

ACLを変更する

オブジェクトに新しいACLを設定するには、setNewACL:メソッドを使用します。

ECHOACLObject *new_acl = [[ECHOACLObject alloc] init]; // ACLオブジェクトを生成
[new_acl putEntryForAll: [[ECHOACLEntry alloc] initWithGet:NO list:NO edit:NO delete:NO] ]; // 例:非ログイン訪問者の操作権限を全て奪う

[member setNewACL:new_acl]; // 新しいACLをセット

[member push:nil]; // セットしたACLを反映させるには、最後に必ず保存を実行してください