メールマガジンを配信する(メンバープラグイン)
ここでは、SDKからメールマガジンを配信する方法について解説します。
メールマガジンオブジェクトECHOMailmagObject
ECHOMailmagObjectは、メールマガジンを配信・操作するためのオブジェクトです。
オブジェクトを生成する
新しいメールマガジンとしてオブジェクトを初期化するには、初期化メソッドの第一引数にメンバーインスタンスのIDを指定します。
ECHOMailmagObject *mailmag = [[ECHOMailmagObject alloc] initWithInstanceId:@"メンバーインスタンスID"];
既存メールマガジンとしてオブジェクトを初期化するには、初期化メソッドの第二引数にメールマガジンIDを指定します。
ECHOMailmagObject *mailmag = [[ECHOMailmagObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"メールマガジンID"];
オブジェクトフィールド
メールマガジンオブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 可変 |
---|---|---|---|
refid | NSString | メールマガジンID | × |
title | NSString | メールマガジンタイトル(件名) | ◯ |
text | NSString | メールマガジン本文 | ◯ |
distributed | NSDate | 配信予約日時 | ◯ |
target | NSObject | 配信ターゲット(配信先の指定には、ターゲット指定アクセサをご利用ください) | ◯ |
to_field | NSString | 配信先メールアドレス(メンバーコンテンツフィールドID) | ◯ |
from_email | NSString | 配信元メールアドレス | ◯ |
text_type | NSString | 本文の形式
|
◯ |
status | NSNumber | 配信ステータス
|
◯ |
フィールドからデータを取得する
オブジェクトのフィールドからデータを取得するには、objectForKeyメソッドを使用します。
id title = [mailmag objectForKey:@"title"];
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、setObject:forKey:メソッドを使用します。
[mailmag setObject:@"test mailmag" forKey:@"title"];
[mailmag setObject:@"mailmag text" forKey:@"text"];
配信ターゲットを指定する(ターゲット指定アクセサ)
メールマガジンの配信先(ターゲット)を指定するには、以下のターゲット指定アクセサを使用します。
// 配信ターゲットをリセット
[mailmag resetTarget];
// 全てのメンバーを配信ターゲットに指定
[mailmag targetAllMembers];
// ルートグループを配信ターゲットに指定(グループに所属する全てのメンバーが配信対象になります)
[mailmag targetRootGroup];
// 特定のメンバーを配信ターゲットに追加
ECHOMemberObject member = [[ECHOMemberObject alloc] initWithInstanceId:mailmag.instanceId refid:@"メンバーID"]; // ターゲットに追加するメンバーオブジェクトを生成
[mailmag targetSpecificMember:member];
// 特定のグループを配信ターゲットに追加
ECHOMembersGroupObject group = [[ECHOMembersGroupObject alloc] initWithInstanceId:mailmag.instanceId refid:@"グループID"]; // ターゲットに追加するグループオブジェクトを生成
[mailmag targetSpecificGroup:group];
メールマガジンを配信/下書き保存する
メールマガジンを配信または下書き保存するには、push:メソッド(同期通信による保存)もしくはpushInBackgroundWithBlock:メソッド(非同期通信による保存)を使用します。
ECHOMailmagObject *mailmag = [[ECHOMailmagObject alloc] initWithInstanceId:@"メンバーインスタンスID"];
[mailmag setObject:@"test mailmag" forKey:@"title"]; // メールマガジンタイトル(件名)をセット
[mailmag setObject:@"mailmag text" forKey:@"text"]; // メールマガジン本文をセット
....
// 非同期でメールマガジンをプッシュ
[mailmag pushInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete: %@", mailmag);
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
メールマガジンを取得する
リモートサーバー上に存在するメールマガジンを取得するには、fetch:メソッド(同期通信による取得)もしくはfetchInBackgroundWithBlock:メソッド(非同期通信による保存)を使用します。
ECHOMailmagObject *mailmag = [[ECHOMailmagObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"メールマガジンID"];
// 非同期でメールマガジンを取得
[mailmag fetchInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete: %@", mailmag);
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
メールマガジンを削除する
リモートサーバー上に存在するメールマガジンを削除するには、delete:メソッド(同期通信による削除)もしくはdeleteInBackgroundWithBlock:メソッド(非同期通信による削除)を使用します。
ECHOMailmagObject *mailmag = [[ECHOMailmagObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"メールマガジンID"];
// 非同期でメールマガジンを削除
[mailmag deleteInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete");
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、currentACLプロパティを使用します。
ECHOACLObject *current_acl = mailmag.currentACL;
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACL:メソッドを使用します。
ECHOACLObject *new_acl = [[ECHOACLObject alloc] init]; // ACLオブジェクトを生成
[new_acl putEntryForAll: [[ECHOACLEntry alloc] initWithGet:NO list:NO edit:NO delete:NO] ]; // 例:非ログイン訪問者の操作権限を全て奪う
[mailmag setNewACL:new_acl]; // 新しいACLをセット
[mailmag push:nil]; // セットしたACLを反映させるには、最後に必ず保存を実行してください