コンテンツにスキップ

通知の開封


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

端末の通知一覧画面(iOS:通知センター / Android : 通知ドロワー)からプッシュ通知をタップしたり、通知詳細ダイアログからアプリが起動された場合、タップしたアクションボタンの情報や拡張プロパティを取得することができます。


通知詳細ダイアログ

iOS Android

(Android)通知ドロワーでプッシュ通知をタップした時の挙動について

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

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

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


プッシュ通知開封時の処理

プッシュ通知を開封したときに、ユーザーがタップしたボタンや拡張プロパティを取得する場合は、次のメソッドを呼びます。 コールバックで情報を取得することができます。

Note

次の場合も同じコールバックが呼ばれます。

// RichFlyerクラス
addOpenNotificationListener(callback: (action: RFOpenNotificationEvent) => void): void
パラメータ 内容
callback 通知が開封されたときに呼ばれるコールバック。 タップされたアクションボタンや拡張プロパティの情報(RFOpenNotificationEvent)を取得できる。

バージョン1.0.5でコールバック引数の型が変更されました

addOpenNotificationListenerのコールバック引数の型は、バージョン1.0.4以前はRFActionでしたが、1.0.5以降はRFOpenNotificationEventに変更されています。
1.0.4以前からアップデートする場合は、コールバック内で参照している型をRFOpenNotificationEventに置き換えてください。

本メソッドを複数回呼んでも、保持されるコールバックは1つだけです(2回目以降の呼び出しは無視されます)。
コールバックを差し替えたい場合は、先に次のremoveOpenNotificationListenerでリスナーを解除してから登録し直してください。


リスナーの解除

addOpenNotificationListenerで登録したリスナーを解除する場合は次のメソッドを呼びます。

// RichFlyerクラス
removeOpenNotificationListener(): void


コールバックで取得できる情報

タップされたアクションボタンや拡張プロパティの情報はRFOpenNotificationEventの各メンバー変数に格納されます。
通知の開封方法によって取得できる項目が異なります。

// アクションボタンがタップされた場合(4項目すべて取得できる)
export type RFOpenNotificationButtonEvent = {
  notificationId: string;    // 通知識別子
  title: string;             // アクションボタンの名前
  type: string;               // アクションの種類 scheme:カスタムスキーム、url:httpスキームのURL
  value: string;              // アクションに設定した値
  extendedProperty?: string; // 拡張プロパティ(設定されている場合のみ)
};

// アクションボタンを伴わずに開封された場合(本文タップなど)
export type RFOpenNotificationBodyEvent = {
  notificationId?: string;
  extendedProperty?: string;
};

export type RFOpenNotificationEvent =
  | RFOpenNotificationButtonEvent
  | RFOpenNotificationBodyEvent;

通知詳細ダイアログや通知センターでカスタムアクションボタンが押された場合は、title/type/value/notificationIdが必ずセットで取得できます(extendedPropertyは通知作成時に設定していた場合のみ)。
通知一覧や本文タップでアプリが起動された場合は、アクションボタンの情報は取得できずnotificationId/extendedPropertyのみが対象になります。
action.title(またはtype/value)の有無で、どちらのケースかを判定できます。
通知の受信履歴で取得できるアクションボタンの情報(RFAction)はindexを含む別のオブジェクトです。開封イベントではindexは取得できません。


実装例

Example
const richflyer = new RichFlyer();

richflyer.addOpenNotificationListener((action: RFOpenNotificationEvent) => {
  if (action.extendedProperty) {
    // 通知一覧からアプリが起動された
    console.log(`extendedProperty:${action.extendedProperty}`);
  } else if (action.title) {
    // 通知詳細ダイアログでカスタムアクションボタンが押された
    console.log(
      `title:${action.title} type:${action.type} value:${action.value}`
    );
  }
});


通知を開封せずにアプリ起動した時に通知を表示する(起動時通知)

通知受信後に通知を開封せずにアプリを起動した際に直前に受信した通知を表示することができます。(起動時通知)
通知のタイプによって有効・無効を設定することが可能です。
デフォルトでは、動画またはGIFが添付された通知で起動時通知が有効になっています。
無効にする場合は、空の配列を指定します。


通知のタイプ

export const RFLaunchMode = {
  Text: 'Text',   // テキストのみ
  Image: 'Image', // 静止画を添付
  Gif: 'Gif',     // GIF画像を添付
  Movie: 'Movie', // 動画を添付
};


起動時通知を有効にする方法

初期化時に有効にしたいプッシュ通知のタイプを配列で指定します。

設定例

const settings = {
    serviceKey: '11111111-aaaa-bbbb-cccc-222222222222',
    launchMode: [RFLaunchMode.Movie, RFLaunchMode.Gif],
    groupId: 'group.net.richflyer.app',
    sandbox: true,
    themeColor: '#468ACE',
    prompt: {
        title: 'お得な情報をお知らせ',
        message: 'プッシュ通知を許可するとお得な情報が届きます!',
        image: 'pushImage',
    },
};