ここでは、SDKからプッシュ通知を配信する方法について解説します。

はじめに

本SDKでプッシュ通知配信を行うには、あらかじめセットアップ作業を行ってください。

ここでは、セットアップが完了していることを前提に解説します。

配信端末登録(端末インスタレーション)

プッシュ通知を配信するには、配信端末をメンバー(ECHOMemberObject)に紐付けて登録する必要があります。
以下、SDKを使用したAndroid端末の登録方法について解説します。

RegistrationIDの登録

個々の配信端末は、GCM(Google Cloud Messaging)から発行されるRegistrationIDによって一意に識別されます。
このRegistrationIDをメンバーに紐付けてECHOに登録することで、ECHOから各メンバーのAndroid端末に対してプッシュ通知を配信できるようになります。

deviceTokenの発行要求からECHOへの登録までの一連の流れは、以下をご参考ください。

// 既存メンバーの取得
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を反映させるには、最後に必ず保存を実行してください