プッシュ通知をカスタマイズする
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")
}
通知アクションボタンを使用すると、opens app
または deep link
アクションを持つボタンがクリックされると、BRAZE_PUSH_INTENT_NOTIFICATION_OPENED
インテントが起動します。ディープリンクとエクストラの処理は変わりません。close
アクション付きのボタンは BRAZE_PUSH_INTENT_NOTIFICATION_OPENED
インテントを起動せず、通知を自動的に閉じます。
Application.onCreate
でプッシュ通知リスナーを作成し、アプリが終了状態にある間にエンドユーザーが通知をタップした後にリスナーがトリガーされるようにします。
フォントのカスタマイズ
ステップ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>
すべての SDK バージョン間で互換性を維持するには、android:fontFamily
とfontFamily
両方のスタイル属性を設定する必要があります。
通知表示のカスタマイズ
ステップ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
オブジェクトを生成して表示することもできます。
Braze のプッシュデータキーに関するドキュメントは、Android SDK を参照してください。
ステップ 2:カスタム通知ファクトリーを設定する
Braze にカスタム通知ファクトリーを使用するように指示するには、setCustomBrazeNotificationFactory
メソッドを使用して IBrazeNotificationFactory
を設定します。
1
setCustomBrazeNotificationFactory(IBrazeNotificationFactory brazeNotificationFactory);
1
setCustomBrazeNotificationFactory(brazeNotificationFactory: IBrazeNotificationFactory)
カスタム IBrazeNotificationFactory
を設定する場所として推奨されるのは、Application.onCreate()
アプリケーションのライフサイクルメソッド (アクティビティではない) です。これにより、アプリプロセスがアクティブなときはいつでも通知ファクトリーを正しく設定できるようになります。
ゼロから独自の通知を作成するのは高度なユースケースです。十分なテストを行い、Braze のプッシュ機能を深く理解した上で行うようにしてください。たとえば、通知がプッシュ通知の開封数を正しくログに記録することを確認する必要があります。
カスタム IBrazeNotificationFactory
の設定を解除し、プッシュのデフォルトの Braze 処理に戻すには、null
をカスタム通知ファクトリー設定機能に渡します。
1
setCustomBrazeNotificationFactory(null);
1
setCustomBrazeNotificationFactory(null)
マルチプライヤテキストのレンダリング
Braze SDK バージョン3.1.1 では、HTML をデバイスに送信し、プッシュ通知でマルチプライヤーテキストをレンダリングできます。
この例は、以下の 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
は使用できません。
マルチカラーテキストレンダリングはデバイス固有であり、Android デバイスまたはバージョンに基づいて表示されない場合があります。
プッシュ通知でマルチカラーテキストをレンダリングするには、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 タグは変更される可能性があるため、次の表を参照するときは、この点に注意してください。
カテゴリー | HTMLタグ | 説明 |
---|---|---|
基本的なテキストスタイル | <b> ,<strong> |
太字のテキスト |
<i> ,<em> |
斜体テキスト | |
<u> |
テキストの下線 | |
<s> ,<strike> ,<del> |
テキストを取り消す | |
<sup> |
上付き文字 | |
<sub> |
添え字テキスト | |
<tt> |
モノスペーステキスト | |
サイズ/フォント | <big> ,<small> |
相対テキストサイズの変更 |
<font color="..."> |
前景色を設定する | |
<span> (インラインCSS付き) |
インラインスタイル(e.g.、色、背景) | |
段落&アンプ;ブロック | <p> ,<div> |
ブロックレベルのセクション |
<br> |
改行 | |
<blockquote> |
引用ブロック | |
<ul> + <li> |
行頭記号付きの順序なしリスト | |
表題 | <h1> - <h6> |
見出し(各種サイズ) |
リンク&アンプ;画像 | <a href="..."> |
クリック可能なリンク |
<img src="..."> |
インライン画像 | |
その他インライン | <em> ,<strong> 、<dfn> ,<cite> |
斜体または太字の同義語 |
インラインイメージのレンダリング
CDI の仕組み
インラインイメージプッシュを使用して、Androidプッシュ通知内に大きなイメージを表示できます。この設計により、ユーザーは画像を拡大するために手動でプッシュを拡大する必要がなくなります。通常の Android プッシュ通知とは異なり、インライン画像プッシュ画像の縦横比は 3:2 です。
互換性
インラインイメージを任意のデバイスに送信できますが、最小バージョンを満たさないデバイスとSDK には、代わりに標準イメージが表示されます。インラインイメージを正しく表示するには、Android Braze SDK v10.0.0+ とAndroid M+ を実行するデバイスの両方が必要です。
Android 12 を実行しているデバイスでは、カスタムプッシュ通知スタイルの変更によりレンダリングが異なります。
インラインイメージプッシュの送信
Android プッシュメッセージを作成する場合、この機能は [通知タイプ] ドロップダウンで使用できます。
設定
Braze ダッシュボード経由で送信されるAndroid プッシュ通知には、多くの詳細設定が利用可能です。この記事では、これらの機能とそれらを効果的に使用する方法について説明します。
通知 ID
通知 ID は、選択したメッセージカテゴリの一意の識別子です。その ID からの最新のメッセージのみを尊重するようメッセージングサービスに通知する役割を果たします。通知 ID を設定すると、古くて無関係なメッセージのスタックではなく、最新で関連性の高いメッセージだけを送信できます。
Firebase メッセージング配信の優先度
Firebase Messaging Delivery Priority フィールドでは、「通常」または「高」のどちらの優先度でプッシュを Firebase Cloud Messaging に送信するかを制御できます。
有効時間 (TTL)
有効期間 (TTL) フィールドを使用すると、プッシュメッセージングサービスでメッセージを保存する期間をカスタム設定できます。有効期間のデフォルト値は、FCM の場合は 4 週間、ADM の場合は 31 日です。
要約テキスト
要約テキストを使用すると、拡張通知ビューに追加のテキストを設定できます。画像付きの通知のキャプションとしても機能します。
要約テキストは、展開されたビューのメッセージ本文の下に表示されます。
画像を含むプッシュ通知の場合、折りたたまれたビューにはメッセージテキストが表示され、通知が展開されると、要約テキストが画像のキャプションとして表示されます。
カスタム URI
カスタム URI 機能を使用すると、通知がクリックされたときの誘導先 Web URL または Android リソースを指定できます。カスタム URI が指定されていない場合、通知をクリックするとユーザーはアプリに誘導されます。カスタム URI を使用してアプリ内でディープリンクし、アプリ外部のリソースにユーザーを誘導することができます。この設定は、メッセージングAPIまたはダッシュボードのプッシュ作成画面の「詳細設定」から行うことができる:
通知の表示優先度
通知の表示優先度設定は、Android O 以降を実行しているデバイスでは使用されなくなりました。新しいデバイスの場合は、通知チャネル設定を使用して優先度を設定します。
プッシュ通知の優先度レベルは、通知トレイ内で他の通知と比較して通知がどのように表示されるかに影響します。また、通常のメッセージや優先度の低いメッセージは、バッテリー寿命を延ばすために遅延がわずかに長くなったり、バッチ処理で送信されたりするのに対し、優先度の高いメッセージは常に即座に送信されるため、配信の速度と方法にも影響する可能性があります。
Android O では、通知の優先度が通知チャネルのプロパティになりました。開発者と協力して設定中にチャネルの優先度を定義し、ダッシュボードを使用して通知音を送信するときに適切なチャネルを選択する必要があります。Android before O を実行しているデバイスでは、Braze ダッシュボードとメッセージングAPI を使用してAndroid 通知の優先レベルを指定できます。
特定の優先度でフルユーザーベースにメッセージを送信するには、通知チャネル設定 (ターゲットO+ デバイスへ) および によって優先度を間接的に指定し、個々の優先度をダッシュボード(<O デバイスへ) から送信することをお勧めします。
Android または Fire OS プッシュ通知で設定できる優先度レベルは次のとおりです。
優先順位 | 説明/使用目的 | priority 値 (API メッセージ用) |
---|---|---|
マックス | 緊急または一刻を争うメッセージ | 2 |
高 | 友人からの新着メッセージなど、重要なコミュニケーション | 1 |
デフォルト | ほとんどの通知 - メッセージが他の優先度タイプのいずれにも明示的に該当しない場合に使用します | 0 |
低 | ユーザーに知ってもらいたいが、すぐに行動を起こす必要のない情報 | -1 |
最小 | コンテキストまたは背景情報 | -2 |
詳細については、GoogleのAndroid通知ドキュメントを参照してください。
サウンド
Android O では、通知音は通知チャネルのプロパティになりました。開発者と協力して設定時にチャネルのサウンドを定義し、通知を送信するときにダッシュボードを使用して適切なチャネルを選択する必要があります。
Android O より前のバージョンを実行しているデバイスの場合、Braze を使用すると、ダッシュボードコンポーザーを通じて個々のプッシュメッセージのサウンドを設定できます。これを行うには、デバイスのローカルサウンドリソースを指定します (例: android.resource://com.mycompany.myapp/raw/mysound
)。このフィールドに「default」を指定すると、デフォルトの通知音がデバイスで再生されます。これは、メッセージングAPIまたはダッシュボードのプッシュ作成画面の「詳細設定」で指定できる。
完全なサウンドリソース URI (例: android.resource://com.mycompany.myapp/raw/mysound
) をダッシュボードプロンプトに入力します。
特定のサウンドでフルユーザーベースをメッセージするには、通知チャネル設定 (ターゲットO+ デバイスへ) および によってサウンドを間接的に指定し、ダッシュボードから個別のサウンド(ターゲット<O デバイスへ)を送信することをお勧めします。
guide/swift/push_notifications/customization.md developer_ %}
guide/fireos/push_notifications/customization.md developer_ %}