カスタムHTMLアプリ内メッセージ
標準のアプリ内メッセージは様々な方法でカスタマイズできるが、HTML、CSS、JavaScriptを使ってデザイン・構築されたメッセージを使えば、キャンペーンのルック&フィールをさらに自由にコントロールできる。簡単な構成で、あらゆるニーズに合ったカスタム機能とブランディングを実現できる。
HTMLアプリ内メッセージでは、以下のようにメッセージのルック&フィールをより自由にコントロールできる:
- カスタムフォントとカスタムスタイル
- ビデオ
- 複数の画像
- オン・クリック行動
- インタラクティブ・コンポーネント
- カスタム・アニメーション
カスタムHTMLメッセージは、JavaScript Bridgeのメソッドを使って、イベントのログを取ったり、カスタム属性を設定したり、メッセージを閉じたりすることができる!GitHubのリポジトリには、HTMLアプリ内メッセージの使い方やカスタマイズ方法、HTML5アプリ内メッセージのテンプレートなどが詳しく説明されている。
Web SDKでHTMLアプリ内メッセージを有効にするには、BrazeにallowUserSuppliedJavascript
の初期化オプションを指定する必要がある:例えばbraze.initialize('YOUR-API_KEY', {allowUserSuppliedJavascript: true})
。HTMLのアプリ内メッセージはJavaScriptを実行することができるため、セキュリティ上の理由から、サイト管理者に有効にしてもらう必要がある。
JavaScriptブリッジ
Web、Android、iOS、およびSwift SDK用のHTMLアプリ内メッセージは、Braze SDKとインターフェースするためのJavaScript「ブリッジ」をサポートしており、ユーザーがリンクのある要素をクリックしたり、コンテンツに関与したりしたときに、Brazeのカスタムアクションをトリガーすることができる。これらのメソッドは、グローバル変数brazeBridge
またはappboyBridge
。
例えば、カスタム属性とカスタムイベントを記録し、メッセージを閉じるには、HTMLアプリ内メッセージ内で以下のJavaScriptを使うことができる:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<button id="button">Set Favorite Color</button>
<script>
// Wait for the `brazeBridge` ready event, "ab.BridgeReady"
window.addEventListener("ab.BridgeReady", function(){
// Event handler when the button is clicked
document.querySelector("#button").onclick = function(){
// Track Button 1 clicks for analytics
// Note: This requires Android SDK v8.0.0, Web SDK v2.5.0, Swift SDK v5.4.0, and iOS SDK v3.23.0
brazeBridge.logClick("0");
// Set the user's custom attribute
brazeBridge.getUser().setCustomUserAttribute("favorite color", "blue");
// Track a custom event
brazeBridge.logCustomEvent("completed survey");
// Send the enqueued data to Braze
brazeBridge.requestImmediateDataFlush();
// Close this in-app message
brazeBridge.closeMessage();
};
}, false);
</script>
JavaScriptブリッジ・メソッド
BrazeのHTMLアプリ内メッセージでは、以下のJavaScriptメソッドがサポートされている:
リキッドを参照して挿入することはできない customAttributes
をJavaScript Bridgeのメソッドに置き換える。
Method Name | Description |
---|---|
brazeBridge.closeMessage() |
Close the current in-app message. |
window.addEventListener("ab.BridgeReady", function(){...}, false) |
Callback method for when the brazeBridge has finished loading. All JavaScript code should be run within this callback function. |
brazeBridge.requestImmediateDataFlush() |
Flush queued data to the Braze servers. JS Docs |
brazeBridge.logClick(button_id_string) |
Log a button click for a given button ID. When button_id_string is left blank, a body-click will be logged instead. The button_id_string can be passed out as the button_id in in-app message click events via Currents. This method was introduced in Android SDK v8.0.0, Web SDK v2.5.0, and iOS SDK v3.23.0 The button_id_string only accepts alphanumeric characters, spaces, dashes, and underscores. Adding a character with an accent (for example, ö,â,ê) breaks the button click tracking, resulting in the button string not appearing in the campaign analytics section and clicks not being accounted for. |
brazeBridge.logCustomEvent(eventName,eventProperties) |
Log a custom event. JS Docs |
brazeBridge.logPurchase(productId, price, currencyCode, quantity, purchaseProperties) |
Log a purchase. JS Docs |
brazeBridge.display.showFeed() |
Show the News Feed. JS Docs |
brazeBridge.getUser().addAlias(alias, label) |
Adds an alias to a user. Introduced in Web SDK v2.7.0, Android v8.1.0, and iOS SDK v3.26.0 JS Docs |
brazeBridge.getUser().addToCustomAttributeArray(key, value) |
Adds to a custom attribute array. JS Docs |
brazeBridge.getUser().addToSubscriptionGroup(subscriptionGroupId) |
Adds a user to an email or SMS subscription group. JS Docs. This method was introduced in Android SDK v15.0.0, Web SDK v3.4.0, and iOS SDK v4.3.3. |
brazeBridge.getUser().removeFromSubscriptionGroup(subscriptionGroupId) |
Removes a user from an email or SMS subscription group. JS Docs. This method was introduced in Android SDK v15.0.0, Web SDK v3.4.0, and iOS SDK v4.3.3. |
brazeBridge.getUser().setFirstName(firstName) |
Set a user’s first name. JS Docs |
brazeBridge.getUser().setLastName(lastName) |
Set a user’s last name. JS Docs |
brazeBridge.getUser().setEmail(email) |
Set a user’s email address. JS Docs |
brazeBridge.getUser().setGender(gender) |
Set a user’s gender. JS Docs |
brazeBridge.getUser().setDateOfBirth(year, month, day) |
Set a user’s date of birth. JS Docs |
brazeBridge.getUser().setCountry(country) |
Set a user’s country. JS Docs |
brazeBridge.getUser().setHomeCity(city) |
Set a user’s city. JS Docs |
brazeBridge.getUser().setEmailNotificationSubscriptionType(notificationSubscriptionType) |
Set email notification subscription status. JS Docs |
brazeBridge.getUser().setPushNotificationSubscriptionType(notificationSubscriptionType) |
Set push notification subscription status. JS Docs |
brazeBridge.getUser().setPhoneNumber(phoneNumber) |
Set a user’s phone number. JS Docs |
brazeBridge.getUser().setCustomUserAttribute(key, value, merge) |
Set a custom user attribute. JS Docs |
brazeBridge.getUser().removeFromCustomAttributeArray(key, value) |
Remove a custom user attribute. JS Docs |
brazeBridge.getUser().incrementCustomUserAttribute(key, incrementValue) |
Increment a custom user attribute. JS Docs |
brazeBridge.getUser().setLanguage(language) |
Set a user’s language. Introduced in Android SDK v5.0.0 and Web SDK v2.6.0. JS Docs |
brazeBridge.getUser().setCustomLocationAttribute(key, latitude, longitude) |
Set a custom location attribute. Introduced in Android SDK v5.0.0. JS Docs |
brazeBridge.web.registerAppboyPushMessages(successCallback, deniedCallback) |
Register for web push (web only). This method is a no-op when called in a non-web environment. JS Docs |
brazeBridge.requestPushPermission(successCallback, deniedCallback) |
Register for push across Web, iOS, and Android. Note: the method’s callbacks are only supported on web. This method was introduced as of Web SDK v4.0.0, Android SDK v21.0.0, and Swift SDK v5.4.0. JS Docs |
brazeBridge.changeUser(id, sdkAuthSignature?) |
Identify user with a unique ID. JS Docs This method was introduced in Web SDK v4.3.0. |
リンクベースのアクション
カスタムJavaScriptに加えて、Braze SDKは、これらの便利なURLショートカットで分析データを送信することもできる。これらのクエリーパラメーターとURLスキームは、すべて大文字と小文字を区別することに注意されたい。
ボタンのクリックトラッキング(非推奨)
abButtonID
の使用は、HTML with Preview メッセージタイプではサポートされていません。詳しくは、アップグレードガイドを参照のこと。
アプリ内メッセージ分析のためにボタンのクリックを記録するには、ディープリンク、リダイレクトURL、アンカー要素<a>
のクエリパラメータとしてabButtonId
を追加する。ボタン1」のクリックを記録するには?abButtonId=0
、「ボタン2」のクリックを記録するには?abButtonId=1
。
他のURLパラメータと同様に、最初のパラメータはクエスチョンマーク?
で始め、それ以降のパラメータはアンパサンド&
で区切る。
URLの例
https://example.com/?abButtonId=0
- ボタン1クリックhttps://example.com/?abButtonId=1
- ボタン2をクリックするhttps://example.com/?utm_source=braze&abButtonId=0
- 他の既存のURLパラメータでボタン1クリックmyApp://deep-link?page=home&abButtonId=1
- ボタン2クリックでモバイル・ディープリンク<a href="https://example.com/?abButtonId=1">
- ボタン2クリックでアンカー要素<a>
アプリ内メッセージはボタン1とボタン2のクリックのみをサポートする。これら2つのボタンIDのいずれかを指定しないURLは、一般的な「ボディクリック」として記録される。
新しいウィンドウでリンクを開く(モバイルのみ)
アプリ外のリンクを新しいウィンドウで開くには、?abExternalOpen=true
を設定する。リンク先を開く前にメッセージが消える。
ディープリンクの場合、BrazeはabExternalOpen
の値に関係なくURLを開く。
ディープリンクとして開く(モバイルのみ)
BrazeにHTTPまたはHTTPSリンクをディープリンクとして扱わせるには、?abDeepLink=true
.
このクエリ文字列パラメータがないか、false
に設定されている場合、Brazeはホストアプリ内の内部ウェブブラウザでウェブリンクを開こうとする。
アプリ内メッセージを閉じる
アプリ内メッセージを閉じるには、brazeBridge.closeMessage()
javascriptメソッドを使うことができる。
例えば、<a onclick="brazeBridge.closeMessage()" href="#">Close</a>
、アプリ内メッセージを閉じる。
プレビュー付きHTMLアップロード
カスタムHTMLアプリ内メッセージを作成する際、Brazeで直接インタラクティブコンテンツをプレビューできる。
エディターのメッセージ・プレビュー・パネルには、メッセージに含まれるJavaScriptをレンダリングするリアルなプレビューが表示される。プレビューパネルから、ページネーションをクリックしたり、フォームやアンケートを送信したり、JavaScriptアニメーションを見たりして、カスタムメッセージをプレビューし、やりとりすることができる!
HTMLで使用しているbrazeBridge
JavaScriptメソッドは、ダッシュボードでプレビューしている間はユーザー・プロフィールを更新しない。
SDK 要件
アプリ内メッセージのHTMLプレビューを使用するには、以下のBraze SDK最小バージョンにアップグレードする必要がある:
このメッセージタイプは特定のSDKバージョン以降でしか受信できないため、サポートされていないSDKバージョンのユーザーはメッセージを受信できない。このメッセージタイプの採用は、ユーザーベースのかなりの部分が到達可能になってから検討するか、アプリのバージョンが要件より後のユーザーだけをターゲットにする。アプリの最新バージョンによるフィルタリングの詳細はこちら。
キャンペーンを作成する
カスタムコードをアプリ内メッセージで作成する場合、カスタムタイプとしてプレビュー付きHTMLアップロードを選択する。アプリ内メッセージ(ライブまたは下書き)でカスタムコードを作成したことがない場合、このオプションは自動的に適用され、選択する必要はない。
モバイルアプリのユーザーがこのメッセージを受け取るには、サポートされているSDKのバージョンにアップグレードする必要があることを覚えておいてほしい。新しいBraze SDKバージョンに依存するキャンペーンを開始する前に、モバイルアプリをアップグレードするようユーザーに促すことを推奨する。
資産ファイル
HTMLアップロードでカスタムコードのアプリ内メッセージを作成する場合、キャンペーンアセットをメディアライブラリにアップロードし、メッセージ内で参照することができる。
アップロード可能なファイルタイプは以下の通りである:
ファイルの種類 | ファイル拡張子 |
---|---|
フォントファイル | .ttf .woff ,.otf 、 .woff2 |
SVG画像 | .svg |
JavaScriptファイル | .js |
CSSファイル | .css |
Brazeは、2つの理由からメディアライブラリにアセットをアップロードすることを推奨している:
- メディアライブラリ経由でキャンペーンに追加したアセットにより、ユーザーがオフラインの状態やインターネット接続が悪い状態でもメッセージを表示することができる。
- Brazeにアップロードされたアセットは、キャンペーンをまたいで再利用できる。
アセットファイルを追加する
キャンペーンに新規または既存のアセットを追加できる。
キャンペーンに新しいアセットを追加するには、ドラッグ&ドロップセクションを使ってファイルをアップロードする。このセクションで追加されたアセットも、メディアライブラリに自動的に追加される。すでにメディアライブラリにアップロードしたアセットを追加するには、メディアライブラリから追加を選択する。
アセットが追加されると、このキャンペーンのアセットセクションに表示される。
アセットのファイル名がローカルのHTMLアセットと一致する場合、自動的に置き換えられる(例えば、cat.png
がアップロードされ、<img src="cat.png" />
が存在する場合)。
それ以外の場合は、リストからアセットにカーソルを合わせ、 コピーを選択して、ファイルのURLをクリップボードにコピーする。次に、コピーしたアセットのURLを、リモートアセットを参照するときに通常行うようにHTMLに貼り付ける。
HTMLエディタ
HTMLに加えた変更は、入力と同時にプレビュー・パネルに自動的にレンダリングされる。HTMLで使用しているbrazeBridge
JavaScriptメソッドは、ダッシュボードでプレビューしている間はユーザー・プロフィールを更新しない。
エディター設定では、テキストの折り返しの切り替え、フォントサイズの変更、カラーテーマの選択ができる。コード・エディターには、シンタックス・ハイライトのためのさまざまなカラー・テーマが用意されており、メッセージ・コンポーザーで潜在的なコード・エラーを直接発見したり、コードをよりよく整理したりするのに役立つ(スペースとタブのどちらを使うか、あなたがどちらの立場であれ)。
HTMLエディター内でCtrl+F(Windows)またはCommand+F(Mac)を押すと、コード内を検索できる!
ボタン・トラッキング
カスタム・コードのアプリ内メッセージでパフォーマンスを追跡するには brazeBridge.logClick(button_id)
JavaScriptメソッドを使う。これにより、brazeBridge.logClick("0")
、brazeBridge.logClick("1")
、brazeBridge.logClick()
を使って、「ボタン1」、「ボタン2」、「ボディクリック」をそれぞれプログラムで追跡することができる。
クリック数 | 方法 |
---|---|
ボタン1 | brazeBridge.logClick("0") |
ボタン2 | brazeBridge.logClick("1") |
ボディクリック | brazeBridge.logClick() |
カスタムボタンのトラッキング | brazeBridge.logClick("your custom name here") |
このボタン追跡方法は、以前の自動クリック追跡方法(?abButtonId=0
など)に取って代わるもので、現在は削除されている。
インプレッションごとに複数のボタン・クリック・イベントをトラッキングできる。例えば、メッセージを閉じてボタン2のクリックを記録するには、以下のようにする:
1
<a href="#" onclick="brazeBridge.logClick('1');brazeBridge.closeMessage()">✖</a>
また、新しいカスタムボタンの名前を追跡することもできる。brazeBridge.logClick("blue button")
、brazeBridge.logClick("viewed carousel page 3")
などがあります。
制限事項
- 1つのキャンペーンにつき、最大100個のユニークなボタンIDを持つことができる。
- ボタンIDはそれぞれ255文字まで持つことができる。
- ボタンIDは、文字、数字、スペース、ダッシュ、アンダースコアのみを含むことができる。
後方互換性のない変更
-
この新しいメッセージ・タイプで最も顕著な互換性のない変更は、SDKの要件である。アプリSDKが最小SDKバージョン要件を満たしていないユーザーには、このメッセージは表示されない。
-
これまでモバイルアプリでサポートされていた
braze://close
のディープリンクは廃止され、JavaScriptbrazeBridge.closeMessage()
がサポートされるようになった。ウェブはディープリンクをサポートしていないので、これによってクロスプラットフォームのHTMLメッセージが可能になる。 -
ボタンIDに
?abButtonId=0
を使用していた自動クリックトラッキングと、閉じるボタンの「ボディクリック」トラッキングは削除された。以下のコード例は、新しいクリック・トラッキングJavaScriptメソッドを使用するためにHTMLを変更する方法を示している:前 その後 <a href="
">Close Button</a> <a href="#" onclick="brazeBridge.logClick();brazeBridge.closeMessage()">Close Button</a>
<a href="
">Close Button</a> <a href="#" onclick="brazeBridge.logClick('0');brazeBridge.closeMessage()">Close Button</a>
<a href="
">Track button 1</a> <a href="
" onclick="brazeBridge.logClick('0')">Track button 1</a> <script>
location.href = ""
</script><script>
window.addEventListener("ab.BridgeReady", function(){
brazeBridge.logClick("1");
brazeBridge.closeMessage();
});
</script>