プッシュ通知を配信する(メンバープラグイン)
ここでは、SDKからプッシュ通知を配信する方法について解説します。
はじめに
本SDKでプッシュ通知配信を行うには、あらかじめセットアップ作業を行ってください。
ここでは、セットアップが完了していることを前提に解説します。
配信端末登録(端末インスタレーション)
プッシュ通知を配信するには、配信端末をメンバー(ECHOMemberObject)に紐付けて登録する必要があります。
以下、SDKを使用したAndroid端末の登録方法について解説します。
RegistrationIDの登録
個々の配信端末は、GCM(Google Cloud Messaging)から発行されるRegistrationIDによって一意に識別されます。
このRegistrationIDをメンバーに紐付けてECHOPFに登録することで、ECHOPFから各メンバーのAndroid端末に対してプッシュ通知を配信できるようになります。
deviceTokenの発行要求からECHOPFへの登録までの一連の流れは、以下をご参考ください。
// 既存メンバーの取得
ECHOMemberObject member = new ECHOMemberObject("メンバーインスタンスID", "メンバーID");
// 新しい端末インスタレーションオブジェクトの生成し、メンバーに紐付ける
ECHOInstallation installation = new ECHOInstallation();
member.put("installation", installation);
try {
// RegistrationIDの発行要求
installation.getRegistrationId();
} catch (ECHOException e) {
// RegistrationID発行エラー
}
// サーバーへ保存
member.push();
プッシュ通知オブジェクトcom.echopf.members.ECHOPushNotificationObject
ECHOPushNotificationObjectは、プッシュ通知を配信・操作するためのオブジェクトです。
オブジェクトを生成する
新しいプッシュ通知をオブジェクトとして生成するには、コンストラクタの第一引数にメンバーインスタンスのIDを指定します。
ECHOPushNotificationObject push_notification = new ECHOPushNotificationObject("メンバーインスタンスID");
既存プッシュ通知をオブジェクトとして生成するには、コンストラクタの第二引数にプッシュ通知IDを指定します。
ECHOPushNotificationObject push_notification = new ECHOPushNotificationObject("メンバーインスタンスID", "プッシュ通知ID");
オブジェクトフィールド
プッシュ通知オブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 可変 |
---|---|---|---|
refid | java.lang.String | プッシュ通知ID | × |
title | java.lang.String | プッシュ通知タイトル(件名) | ◯ |
text | java.lang.String | プッシュ通知本文 | ◯ |
distributed | com.echopf.ECHODate | 配信予約日時 | ◯ |
target | org.json.JSONObject | 配信ターゲット(配信先の指定には、ターゲット指定アクセサをご利用ください) | ◯ |
フィールドからデータを取得する
文字列(String)型のフィールドからデータを取得する
文字列型のフィールドからデータを取得する場合は、getStringメソッドまたはoptStringメソッドを使用します。
String title = push_notification.getString("title");
整数値(int)型のフィールドからデータを取得する
整数値型のフィールドからデータを取得する場合は、getIntメソッドまたはoptIntメソッドを使用します。
オブジェクト(JSONObject)型のフィールドからデータを取得する
オブジェクト型のフィールドからデータを取得するには、getJSONObjectメソッドまたはoptJSONObjectメソッドを使用します。
JSONObject target = push_notification.getJSONObject("target");
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、putメソッドまたはputOptメソッドを使用します。
push_notification.put("title", "test push_notification");
push_notification.put("text", "push_notification text");
配信ターゲットを指定する(ターゲット指定アクセサ)
プッシュ通知の配信先(ターゲット)を指定するには、以下のターゲット指定アクセサを使用します。
// 配信ターゲットをリセット
push_notification.resetTarget();
// 全てのメンバーを配信ターゲットに指定
push_notification.targetAllMembers();
// ルートグループを配信ターゲットに指定(グループに所属する全てのメンバーが配信対象になります)
push_notification.targetRootGroup();
// 特定のメンバーを配信ターゲットに追加
var member = new ECHOMemberObject("メンバーインスタンスID", "メンバーID"); // ターゲットに追加するメンバーオブジェクトを生成
push_notification.targetSpecificMember(member);
// 特定のグループを配信ターゲットに追加
var group = new ECHOMembersGroupObject("メンバーインスタンスID", "グループID"); // ターゲットに追加するグループオブジェクトを生成
push_notification.targetSpecificGroup(group);
プッシュ通知を配信/下書き保存する
プッシュ通知を配信するには、pushメソッド(同期通信による保存)もしくはpushInBackgroundメソッド(非同期通信による保存)を使用します。
ECHOPushNotificationObject push_notification = new ECHOPushNotificationObject("メンバーインスタンスID");
push_notification.put("title", "test push_notification"); // プッシュ通知タイトル(件名)をセット
push_notification.put("text", "push_notification text"); // プッシュ通知本文をセット
....
// 非同期でプッシュ通知をプッシュ
push_notification.pushInBackground(new PushCallback<ECHOPushNotificationObject>() {@Override // 保存完了後に実行するコールバックメソッドを定義
public void done(ECHOPushNotificationObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
プッシュ通知を取得する
リモートサーバー上に存在するプッシュ通知を取得するには、fetchメソッド(同期通信による取得)もしくはfetchInBackgroundメソッド(非同期通信による保存)を使用します。
ECHOPushNotificationObject push_notification = new ECHOPushNotificationObject("メンバーインスタンスID", "プッシュ通知ID");
// 非同期でプッシュ通知を取得
push_notification.fetchInBackground(new FetchCallback<ECHOPushNotificationObject>() {@Override // 取得完了後に実行するコールバックメソッドを定義
public void done(ECHOPushNotificationObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
プッシュ通知を削除する
リモートサーバー上に存在するプッシュ通知を削除するには、deleteメソッド(同期通信による削除)もしくはdeleteInBackgroundメソッド(非同期通信による削除)を使用します。
ECHOPushNotificationObject push_notification = new ECHOPushNotificationObject("メンバーインスタンスID", "プッシュ通知ID");
// 非同期でプッシュ通知を削除push_notification.deleteInBackground(new DeleteCallback<ECHOPushNotificationObject>() {
@Override // 削除完了後に実行するコールバックメソッドを定義
public void done(ECHOPushNotificationObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、getACLメソッドを使用します。
ECHOACLObject current_acl = push_notification.getACL();
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACLメソッドを使用します。
ECHOACLObject new_acl = new ECHOACLObject(); // ACLオブジェクトを生成
new_acl.putEntryForAll(new ECHOACLEntry(false, false, false, false)); // 例:非ログイン訪問者の操作権限を全て奪う
push_notification.setNewACL(new_acl); // 新しいACLをセット
push_notification.push(); // セットしたACLを反映させるには、最後に必ず保存を実行してください