Skip to content

プッシュ通知をカスタマイズする

Braze SDKのプッシュ通知をカスタマイズする方法を学習。

前提条件

この機能を使用する前に、Android Braze SDKを統合する必要があります。 プッシュ通知の設定も必要です。

プッシュイベントにコールバックを使用する

Braze には、プッシュ通知が受信されたとき、開かれたとき、または却下されたときのための subscribeToPushNotificationEvents() コールバックが用意されています。アプリケーションが実行されていないときに発生するイベントを見逃さないように、このコールバックを Application.onCreate() に配置することをお勧めします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Braze.getInstance(context).subscribeToPushNotificationEvents(event -> {
  final BrazeNotificationPayload parsedData = event.getNotificationPayload();

  //
  // The type of notification itself
  //
  final boolean isPushOpenEvent = event.getEventType() == BrazePushEventType.NOTIFICATION_OPENED;
  final boolean isPushReceivedEvent = event.getEventType() == BrazePushEventType.NOTIFICATION_RECEIVED;
  // Sent when a user has dismissed a notification
  final boolean isPushDeletedEvent = event.getEventType() == BrazePushEventType.NOTIFICATION_DELETED;

  //
  // Notification data
  //
  final String pushTitle = parsedData.getTitleText();
  final Long pushArrivalTimeMs = parsedData.getNotificationReceivedTimestampMillis();
  final String deeplink = parsedData.getDeeplink();

  //
  // Custom KVP data
  //
  final String myCustomKvp1 = parsedData.getBrazeExtras().getString("my first kvp");
  final String myCustomKvp2 = parsedData.getBrazeExtras().getString("my second kvp");
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Braze.getInstance(context).subscribeToPushNotificationEvents { event ->
    val parsedData = event.notificationPayload

    //
    // The type of notification itself
    //
    val isPushOpenEvent = event.eventType == BrazePushEventType.NOTIFICATION_OPENED
    val isPushReceivedEvent = event.eventType == BrazePushEventType.NOTIFICATION_RECEIVED
    // Sent when a user has dismissed a notification
    val isPushDeletedEvent = event.eventType == BrazePushEventType.NOTIFICATION_DELETED

    //
    // Notification data
    //
    val pushTitle = parsedData.titleText
    val pushArrivalTimeMs = parsedData.notificationReceivedTimestampMillis
    val deeplink = parsedData.deeplink

    //
    // Custom KVP data
    //
    val myCustomKvp1 = parsedData.brazeExtras.getString("my first kvp")
    val myCustomKvp2 = parsedData.brazeExtras.getString("my second kvp")
}

フォントのカスタマイズ

ステップ1:フォントファミリの作成

以下は、フォントファミリガイドを使用したカスタムフォントファミリ定義の例です。この例では、Bungee Shade フォントを使用します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:app="http://schemas.android.com/apk/res-auto">

  <!--Note: You must declare both sets of attributes
      so that your fonts load on devices running Android 8.0 (API level 26) or lower.
      See https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html -->

  <font android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/bungeeshade"

        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/bungeeshade"/>
</font-family>

フォントファミリの定義を/res/font/bungee_font_family.xmlに保存したら、XML でそれを@font/bungee_font_familyとして参照できます。

ステップ2:フォントファミリを参照する

フォントファミリが作成されたので、styles.xmlの Braze スタイルのデフォルトをオーバーライドして、フォントファミリへの参照を含めることができます。

例えば、次のスタイルのオーバーライドでは、すべての Braze アプリ内メッセージにbungeeフォントファミリが使用されます。

1
2
3
4
5
6
7
8
9
<style name="Braze.InAppMessage">
  <item name="android:fontFamily">@font/bungee_font_family</item>
  <item name="fontFamily">@font/bungee_font_family</item>
</style>

<style name="Braze.Cards">
  <item name="android:fontFamily">@font/another_custom_font_family</item>
  <item name="fontFamily">@font/another_custom_font_family</item>
</style>

通知表示のカスタマイズ

ステップ1:カスタム通知ファクトリーを作成する

サーバー側では面倒な方法や利用できない方法でプッシュ通知をカスタマイズしたい場合があります。通知表示を完全に制御できるよう追加された機能により、独自の IBrazeNotificationFactory を定義して Braze で表示する通知オブジェクトを作成できるようになりました。

カスタムの IBrazeNotificationFactory が設定されている場合、ユーザーに通知が表示される前に、プッシュ受信時に Braze がファクトリーの createNotification() メソッドを呼び出します。Braze は、Braze プッシュデータを含む Bundle と、ダッシュボードまたはメッセージング API 経由で送信されたカスタムのキーと値のペアを含む別の Bundle を渡します。

Braze は、Braze プッシュ通知からのデータを含むBrazeNotificationPayload を渡します。

1
2
3
4
5
6
7
8
9
// Factory method implemented in your custom IBrazeNotificationFactory
@Override
public Notification createNotification(BrazeNotificationPayload brazeNotificationPayload) {
  // Example of getting notification title
  String title = brazeNotificationPayload.getTitleText();

  // Example of retrieving a custom KVP ("my_key" -> "my_value")
  String customKvp = brazeNotificationPayload.getBrazeExtras().getString("my_key");
}
1
2
3
4
5
6
7
8
// Factory method implemented in your custom IBrazeNotificationFactory
override fun createNotification(brazeNotificationPayload: BrazeNotificationPayload): Notification {
  // Example of getting notification title
  val title = brazeNotificationPayload.getTitleText()

  // Example of retrieving a custom KVP ("my_key" -> "my_value")
  val customKvp = brazeNotificationPayload.getBrazeExtras().getString("my_key")
}

カスタムの createNotification() メソッドから null を返して通知をまったく表示しないことも、BrazeNotificationFactory.getInstance().createNotification() を使用してそのデータのデフォルトの notification オブジェクトを取得し、表示前に変更することも、完全に別個の notification オブジェクトを生成して表示することもできます。

ステップ 2:カスタム通知ファクトリーを設定する

Braze にカスタム通知ファクトリーを使用するように指示するには、setCustomBrazeNotificationFactory メソッドを使用して IBrazeNotificationFactory を設定します。

1
setCustomBrazeNotificationFactory(IBrazeNotificationFactory brazeNotificationFactory);
1
setCustomBrazeNotificationFactory(brazeNotificationFactory: IBrazeNotificationFactory)

カスタム IBrazeNotificationFactory を設定する場所として推奨されるのは、Application.onCreate() アプリケーションのライフサイクルメソッド (アクティビティではない) です。これにより、アプリプロセスがアクティブなときはいつでも通知ファクトリーを正しく設定できるようになります。

カスタム IBrazeNotificationFactory の設定を解除し、プッシュのデフォルトの Braze 処理に戻すには、null をカスタム通知ファクトリー設定機能に渡します。

1
setCustomBrazeNotificationFactory(null);
1
setCustomBrazeNotificationFactory(null)

マルチプライヤテキストのレンダリング

Braze SDK バージョン3.1.1 では、HTML をデバイスに送信し、プッシュ通知でマルチプライヤーテキストをレンダリングできます。

Android のプッシュメッセージ「マルチカラー・プッシュ・テスト・メッセージ」。文字の色が異なり、イタリック体で、バックグラウンドカラーが与えられている。

この例は、以下の HTML でレンダリングされます。

1
2
3
<p><span style="color: #99cc00;">M</span>u<span style="color: #008080;">lti</span>Colo<span style="color: #ff6600;">r</span> <span style="color: #000080;">P</span><span style="color: #00ccff;">u</span><span style="color: #ff0000;">s</span><span style="color: #808080;">h</span></p>

<p><em>test</em> <span style="text-decoration: underline; background-color: #ff6600;"><strong>message</strong></span></p>

Android では、プッシュ通知で有効なHTML 要素とタグが制限されていることに注意してください。たとえば、marquee は使用できません。

プッシュ通知でマルチカラーテキストをレンダリングするには、braze.xml またはBrazeConfig を更新します。

braze.xml に以下を追加します。

1
<bool translatable="false" name="com_braze_push_notification_html_rendering_enabled">true</bool>

BrazeConfig に以下を追加します。

1
2
3
4
BrazeConfig brazeConfig = new BrazeConfig.Builder()
  .setPushHtmlRenderingEnabled(true)
  .build();
Braze.configure(this, brazeConfig);
1
2
3
4
val brazeConfig = BrazeConfig.Builder()
    .setPushHtmlRenderingEnabled(true)
    .build()
Braze.configure(this, brazeConfig)

サポートされるHTMLタグ

現在、Google は、Android でサポートされているHTML タグを直接ドキュメントにリストしていません。この情報は、Git リポジトリのHtml.java ファイル でのみ確認できます。この情報はこのファイルから取得され、サポートされているHTML タグは変更される可能性があるため、次の表を参照するときは、この点に注意してください。

インラインイメージのレンダリング

CDI の仕組み

インラインイメージプッシュを使用して、Androidプッシュ通知内に大きなイメージを表示できます。この設計により、ユーザーは画像を拡大するために手動でプッシュを拡大する必要がなくなります。通常の Android プッシュ通知とは異なり、インライン画像プッシュ画像の縦横比は 3:2 です。

互換性

インラインイメージを任意のデバイスに送信できますが、最小バージョンを満たさないデバイスとSDK には、代わりに標準イメージが表示されます。インラインイメージを正しく表示するには、Android Braze SDK v10.0.0+ とAndroid M+ を実行するデバイスの両方が必要です。

インラインイメージプッシュの送信

Android プッシュメッセージを作成する場合、この機能は [通知タイプ] ドロップダウンで使用できます。

「通知タイプ」ドロップダウン (標準のプッシュプレビューの上) の場所を示すプッシュキャンペーンエディター。

設定

Braze ダッシュボード経由で送信されるAndroid プッシュ通知には、多くの詳細設定が利用可能です。この記事では、これらの機能とそれらを効果的に使用する方法について説明します。

通知 ID

通知 ID は、選択したメッセージカテゴリの一意の識別子です。その ID からの最新のメッセージのみを尊重するようメッセージングサービスに通知する役割を果たします。通知 ID を設定すると、古くて無関係なメッセージのスタックではなく、最新で関連性の高いメッセージだけを送信できます。

Firebase メッセージング配信の優先度

Firebase Messaging Delivery Priority フィールドでは、「通常」または「高」のどちらの優先度でプッシュを Firebase Cloud Messaging に送信するかを制御できます。

有効時間 (TTL)

有効期間 (TTL) フィールドを使用すると、プッシュメッセージングサービスでメッセージを保存する期間をカスタム設定できます。有効期間のデフォルト値は、FCM の場合は 4 週間、ADM の場合は 31 日です。

要約テキスト

要約テキストを使用すると、拡張通知ビューに追加のテキストを設定できます。画像付きの通知のキャプションとしても機能します。

Androidのメッセージで、タイトルが"Greetings from Appboy!"、メッセージ"これはメッセージ本文です!emojis." およびsummary text "これは要約テキストです。"

要約テキストは、展開されたビューのメッセージ本文の下に表示されます。

画像を含むプッシュ通知の場合、折りたたまれたビューにはメッセージテキストが表示され、通知が展開されると、要約テキストが画像のキャプションとして表示されます。

"Appboy!"というタイトルのAndroidメッセージ、メッセージ"これはメッセージ本文。。"および要約テキスト"これはSummary Text."

カスタム URI

カスタム URI 機能を使用すると、通知がクリックされたときの誘導先 Web URL または Android リソースを指定できます。カスタム URI が指定されていない場合、通知をクリックするとユーザーはアプリに誘導されます。カスタム URI を使用してアプリ内でディープリンクし、アプリ外部のリソースにユーザーを誘導することができます。この設定は、メッセージングAPIまたはダッシュボードのプッシュ作成画面の「詳細設定」から行うことができる:

Braze プッシュコンポーザーのディープリンクの高度な設定。

通知の表示優先度

プッシュ通知の優先度レベルは、通知トレイ内で他の通知と比較して通知がどのように表示されるかに影響します。また、通常のメッセージや優先度の低いメッセージは、バッテリー寿命を延ばすために遅延がわずかに長くなったり、バッチ処理で送信されたりするのに対し、優先度の高いメッセージは常に即座に送信されるため、配信の速度と方法にも影響する可能性があります。

Android O では、通知の優先度が通知チャネルのプロパティになりました。開発者と協力して設定中にチャネルの優先度を定義し、ダッシュボードを使用して通知音を送信するときに適切なチャネルを選択する必要があります。Android before O を実行しているデバイスでは、Braze ダッシュボードとメッセージングAPI を使用してAndroid 通知の優先レベルを指定できます。

特定の優先度でフルユーザーベースにメッセージを送信するには、通知チャネル設定 (ターゲットO+ デバイスへ) および によって優先度を間接的に指定し、個々の優先度をダッシュボード(<O デバイスへ) から送信することをお勧めします。

Android または Fire OS プッシュ通知で設定できる優先度レベルは次のとおりです。

詳細については、GoogleのAndroid通知ドキュメントを参照してください。

サウンド

Android O では、通知音は通知チャネルのプロパティになりました。開発者と協力して設定時にチャネルのサウンドを定義し、通知を送信するときにダッシュボードを使用して適切なチャネルを選択する必要があります。

Android O より前のバージョンを実行しているデバイスの場合、Braze を使用すると、ダッシュボードコンポーザーを通じて個々のプッシュメッセージのサウンドを設定できます。これを行うには、デバイスのローカルサウンドリソースを指定します (例: android.resource://com.mycompany.myapp/raw/mysound)。このフィールドに「default」を指定すると、デフォルトの通知音がデバイスで再生されます。これは、メッセージングAPIまたはダッシュボードのプッシュ作成画面の「詳細設定」で指定できる。

Braze プッシュコンポーザーのサウンドの高度な設定。

完全なサウンドリソース URI (例: android.resource://com.mycompany.myapp/raw/mysound) をダッシュ​​ボードプロンプトに入力します。

特定のサウンドでフルユーザーベースをメッセージするには、通知チャネル設定 (ターゲットO+ デバイスへ) および によってサウンドを間接的に指定し、ダッシュボードから個別のサウンド(ターゲット<O デバイスへ)を送信することをお勧めします。

guide/swift/push_notifications/customization.md developer_ %}

guide/fireos/push_notifications/customization.md developer_ %}

「このページはどの程度役に立ちましたか?」
New Stuff!