メンバーを操作する(メンバープラグイン)
ここでは、サイトアカウントに存在するメンバーインスタンスを、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を反映させるには、最後に必ず保存を実行してください