Skip to content

カスタムHTMLアプリ内メッセージ

標準のアプリ内メッセージは様々な方法でカスタマイズできるが、HTML、CSS、JavaScriptを使ってデザイン・構築されたメッセージを使えば、キャンペーンのルック&フィールをさらに自由にコントロールできる。簡単な構成で、あらゆるニーズに合ったカスタム機能とブランディングを実現できる。

HTMLアプリ内メッセージでは、以下のようにメッセージのルック&フィールをより自由にコントロールできる:

  • カスタムフォントとカスタムスタイル
  • ビデオ
  • 複数の画像
  • オン・クリック行動
  • インタラクティブ・コンポーネント
  • カスタム・アニメーション

カスタムHTMLメッセージは、JavaScript Bridgeのメソッドを使って、イベントのログを取ったり、カスタム属性を設定したり、メッセージを閉じたりすることができる!GitHubのリポジトリには、HTMLアプリ内メッセージの使い方やカスタマイズ方法、HTML5アプリ内メッセージのテンプレートなどが詳しく説明されている。

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メソッドがサポートされている:

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スキームは、すべて大文字と小文字を区別することに注意されたい。

ボタンのクリックトラッキング(非推奨)

アプリ内メッセージ分析のためにボタンのクリックを記録するには、ディープリンク、リダイレクト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>

新しいウィンドウでリンクを開く(モバイルのみ)

アプリ外のリンクを新しいウィンドウで開くには、?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プレビューとインタラクトする。

SDK 要件

アプリ内メッセージのHTMLプレビューを使用するには、以下のBraze SDK最小バージョンにアップグレードする必要がある:

キャンペーンを作成する

カスタムコードをアプリ内メッセージで作成する場合、カスタムタイプとしてプレビュー付きHTMLアップロードを選択する。アプリ内メッセージ(ライブまたは下書き)でカスタムコードを作成したことがない場合、このオプションは自動的に適用され、選択する必要はない。

メッセージタイプ」がカスタムコード、「カスタムタイプ」がプレビュー付きHTMLアップロードの場合、モバイルとウェブブラウザの両方に送信するアプリ内メッセージを作成する

モバイルアプリのユーザーがこのメッセージを受け取るには、サポートされているSDKのバージョンにアップグレードする必要があることを覚えておいてほしい。新しいBraze SDKバージョンに依存するキャンペーンを開始する前に、モバイルアプリをアップグレードするようユーザーに促すことを推奨する。

資産ファイル

HTMLアップロードでカスタムコードのアプリ内メッセージを作成する場合、キャンペーンアセットをメディアライブラリにアップロードし、メッセージ内で参照することができる。

アップロード可能なファイルタイプは以下の通りである:

ファイルの種類 ファイル拡張子
フォントファイル .ttf.woff,.otf.woff2
SVG画像 .svg
JavaScriptファイル .js
CSSファイル .css

Brazeは、2つの理由からメディアライブラリにアセットをアップロードすることを推奨している:

  1. メディアライブラリ経由でキャンペーンに追加したアセットにより、ユーザーがオフラインの状態やインターネット接続が悪い状態でもメッセージを表示することができる。
  2. Brazeにアップロードされたアセットは、キャンペーンをまたいで再利用できる。
アセットファイルを追加する

キャンペーンに新規または既存のアセットを追加できる。

キャンペーンに新しいアセットを追加するには、ドラッグ&ドロップセクションを使ってファイルをアップロードする。このセクションで追加されたアセットも、メディアライブラリに自動的に追加される。すでにメディアライブラリにアップロードしたアセットを追加するには、メディアライブラリから追加を選択する。

アセットが追加されると、このキャンペーンのアセットセクションに表示される。

アセットのファイル名がローカルのHTMLアセットと一致する場合、自動的に置き換えられる(例えば、cat.png がアップロードされ、<img src="cat.png" /> が存在する場合)。

それ以外の場合は、リストからアセットにカーソルを合わせ、 コピーを選択して、ファイルのURLをクリップボードにコピーする。次に、コピーしたアセットのURLを、リモートアセットを参照するときに通常行うようにHTMLに貼り付ける。

HTMLエディタ

HTMLに加えた変更は、入力と同時にプレビュー・パネルに自動的にレンダリングされる。HTMLで使用しているbrazeBridge JavaScriptメソッドは、ダッシュボードでプレビューしている間はユーザー・プロフィールを更新しない。

エディター設定では、テキストの折り返しの切り替え、フォントサイズの変更、カラーテーマの選択ができる。コード・エディターには、シンタックス・ハイライトのためのさまざまなカラー・テーマが用意されており、メッセージ・コンポーザーで潜在的なコード・エラーを直接発見したり、コードをよりよく整理したりするのに役立つ(スペースとタブのどちらを使うか、あなたがどちらの立場であれ)。

アプリ内でHTMLメッセージを作成する際、"Editor Settings "ドロップダウンにシンタックスハイライトのオプションがある。

ボタン・トラッキング

カスタム・コードのアプリ内メッセージでパフォーマンスを追跡するには 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")

インプレッションごとに複数のボタン・クリック・イベントをトラッキングできる。例えば、メッセージを閉じてボタン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は、文字、数字、スペース、ダッシュ、アンダースコアのみを含むことができる。

後方互換性のない変更

  1. この新しいメッセージ・タイプで最も顕著な互換性のない変更は、SDKの要件である。アプリSDKが最小SDKバージョン要件を満たしていないユーザーには、このメッセージは表示されない。

  2. これまでモバイルアプリでサポートされていたbraze://close のディープリンクは廃止され、JavaScriptbrazeBridge.closeMessage() がサポートされるようになった。ウェブはディープリンクをサポートしていないので、これによってクロスプラットフォームのHTMLメッセージが可能になる。

  3. ボタン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>
「このページはどの程度役に立ちましたか?」
New Stuff!