プッシュ通知の開封¶
通知ドロワーで通知をタップした時の動き¶
受信したプッシュ通知は、端末の通知ドロワーに蓄積されます。 RichFlyerで配信したプッシュ通知を通知ドロワーでタップした際、アプリが起動するパターンと通知ダイアログを表示するパターンがあります。 通知ダイアログは、アクションボタンを表示したり動画の再生などを行います。
Aパターン: アプリが起動するパターン
Bパターン: 通知ダイアログが表示されるパターン
アクションボタンなし | アクションボタンあり | |
---|---|---|
テキストのみ | A | B |
静止画添付 | A | B |
動画/GIF添付 | B | B |
通知ドロワー
通知ダイアログ
アプリ起動時に取得できる情報¶
通知ドロワーや通知ダイアログからアプリが起動された際、タップしたアクションボタンの情報や拡張プロパティを取得することができます。
アプリが起動する際は、初期化にて設定したアクティビティから起動します。
同アクティビティのonCreate()で通知の内容を取得し、RichFlyer SDKに渡すことで押されたボタンの情報を得ることができます。
情報取得手順¶
押されたボタン情報の判定¶
通知ドロワーや通知ダイアログのボタンから起動したか否かを判定します。
//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", "「アプリを起動」ボタンが押された");
}
});
}
}