コンテンツにスキップ

プッシュ通知の開封

通知ドロワーで通知をタップした時の動き

受信したプッシュ通知は、端末の通知ドロワーに蓄積されます。 RichFlyerで配信したプッシュ通知を通知ドロワーでタップした際、アプリが起動するパターンと通知ダイアログを表示するパターンがあります。 通知ダイアログは、アクションボタンを表示したり動画の再生などを行います。

Aパターン: アプリが起動するパターン
Bパターン: 通知ダイアログが表示されるパターン

アクションボタンなし アクションボタンあり
テキストのみ A B
静止画添付 A B
動画/GIF添付 B B

通知ドロワー


通知ダイアログ


アプリ起動時に取得できる情報

通知ドロワーや通知ダイアログからアプリが起動された際、タップしたアクションボタンの情報や拡張プロパティを取得することができます。

アプリが起動する際は、初期化にて設定したアクティビティから起動します。
同アクティビティのonCreate()で通知の内容を取得し、RichFlyer SDKに渡すことで押されたボタンの情報を得ることができます。


情報取得手順

  1. 押されたボタン情報の判定
  2. ボタンに紐づくアクション情報の解析
  3. アクション情報の取得


押されたボタン情報の判定

通知ドロワーや通知ダイアログのボタンから起動したか否かを判定します。

//RichFlyerクラス
static boolean richFlyerAction(Intent intent)
パラメータ 内容
intent Activityが保持しているIntent


拡張プロパティやタップしたボタンに紐づくアクション情報の解析

//RichFlyerクラス
static void parseAction(Intent intent, final RFActionListener listener)
パラメータ 内容
intent Activityが保持しているIntent
listener 取得したアクション情報を返すリスナ


情報の取得

情報の解析後に呼ばれるRFActionListenerは押されたボタンにより2種類のメソッドが呼ばれます。

  • カスタムアクションで起動した時

    //RFActionListenerインターフェース
    void onRFEventOnClickButton(@NonNull RFAction action, @NonNull String notifyAction)
    

    パラメータ 内容
    action アクション情報
    notifyAction ボタンのインデックス


  • 通知ドロワーや既定のボタン(アプリを起動)からアプリを起動した時

    //RFActionListenerインターフェース
    void onRFEventOnClickStartApplication(@Nullable String notificationId, @Nullable String extendedProperty, @NonNull String notifyAction)
    

    パラメータ 内容
    notificationId 通知識別子
    extendedProperty 拡張プロパティ
    notifyAction ボタンのインデックス


アクション情報

押されたボタンの情報はRFActionクラスの各メンバー変数に格納されます。

public class RFAction {
    public String notificationId;
    public String actionTitle;
    public String actionType;
    public String actionValue;
    public String notifyAction;
}
パラメータ 内容
notificationId 通知識別子
actionTitle アクションボタンの名前
actionType アクションの種類
scheme:カスタムスキーム
url:httpスキームのUri
actionValue アクションに設定した値
notifyAction ボタンのインデックス


実装例

Java
protected void onCreate(Bundle savedInstanceState) {
    if (RichFlyer.richFlyerAction(getIntent())) {
        RichFlyer.parseAction(getIntent(), new RFActionListener() {
            @Override
            public void onRFEventOnClickButton(@NonNull RFAction action, @NonNull String index) {
                Log.d("richflyer", "カスタムアクションボタンが押された");

                if (action.actionTitle.equals("ストアを開く")) {
                    if (action.actionType.equals("http")) {
                        Uri uri = Uri.parse(action.actionValue);
                        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                        startActivity(intent);
                    }
                }
            }

            @Override
            public void onRFEventOnClickStartApplication(String notificationId, String extendedProperty, @NonNull String index) {
                Log.d("richflyer", "「アプリを起動」ボタンが押された");
            }
        });
    }
}