コンテンツカードによって促進された
アプリケーションで使用できるさまざまなデータモデルやカード固有のプロパティなど、Braze SDK のコンテンツカードについて説明します。
バナースタイルのメッセージにコンテンツカードを使用する?Banners-インライン、永続的なアプリ、ウェブメッセージに最適です。
このガイドでは、Braze Web SDK 4.0.0+ のコードサンプルを使用します。最新の Web SDK バージョンにアップグレードするには、SDK アップグレードガイドを参照してください。
前提条件
コンテンツカードを使用するには、 Braze Web SDK をアプリに統合する必要があります。ただし、追加のセットアップは必要ありません。代わりに独自のUI を構築するには、コンテンツカードカスタマイズガイドを参照してください。
標準フィードUI
付属のコンテンツカード UI を使用するには、Web サイト上のどこにフィードを表示するかを指定する必要があります。
この例では、コンテンツカードフィードを配置する <div id="feed"></div> があります。3つのボタンを使って、フィードの非表示、表示、トグル(現在の状態に応じて非表示、表示)を切り替える。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<button id="toggle" type="button">Toggle Cards Feed</button>
<button id="hide" type="button">Hide Cards Feed</button>
<button id="show" type="button">Show Cards Feed</button>
<nav>
<h1>Your Personalized Feed</h1>
<div id="feed"></div>
</nav>
<script>
const toggle = document.getElementById("toggle");
const hide = document.getElementById("hide");
const show = document.getElementById("show");
const feed = document.getElementById("feed");
toggle.onclick = function(){
braze.toggleContentCards(feed);
}
hide.onclick = function(){
braze.hideContentCards();
}
show.onclick = function(){
braze.showContentCards(feed);
}
</script>
toggleContentCards(parentNode, filterFunction) 、showContentCards(parentNode, filterFunction) メソッドを使用する際、引数が与えられない場合、すべてのコンテンツカードはページ右側の固定位置のサイドバーに表示される。そうでなければ、フィードは指定されたparentNode オプションに置かれる。
| パラメーター | 説明 |
|---|---|
parentNode |
コンテンツカードをレンダリングするHTMLノード。親ノードがすでに直系の子孫として Braze コンテンツカードビューを持っている場合、既存のコンテンツカードは置き換えられます。たとえば、document.querySelector(".my-container") を渡す必要があります。 |
filterFunction |
このビューに表示されるカードのフィルターまたはソート機能。Card オブジェクトの配列で呼び出され、{pinned, date} でソートされます。このユーザーにレンダリングするために、ソートされた Card オブジェクトの配列を返す必要があります。省略した場合は、すべてのカードが表示される。 |
コンテンツカードの切り替えに関する詳細は、SDK リファレンスドキュメントを参照してください。
カードの種類とプロパティ
コンテンツカードデータモデルはWeb SDKで使用でき、次のコンテンツカードタイプを提供します。ImageOnly、CaptionedImage、ClassicCardである。各タイプは、ベースモデルカードから共通のプロパティを継承し、以下の追加プロパティを持つ。
コンテンツカードデータを記録するには、記録分析を参照してください。
基準カード型式
すべてのコンテンツカードは、以下の共有プロパティを持っています。
| プロパティ | 説明 |
|---|---|
expiresAt |
カードの有効期限を示すUNIXタイムスタンプ。 |
extras |
(オプション)値文字列を持つ文字列オブジェクトとしてフォーマットされたキーと値のペアデータ。 |
id |
(オプション)カードのID。これは、分析目的でイベントとともに Braze に報告されます。 |
pinned |
このプロパティは、カードがダッシュボードで「ピン留め」されているかどうかを反映する。 |
updated |
このカードが最後に更新されたUNIXタイムスタンプ。 |
viewed |
このプロパティは、ユーザがカードを閲覧したかどうかを反映する。 |
isControl |
カードが AB テスト内の「コントロール」グループである場合、このプロパティは true です。 |
画像のみ
ImageOnlyカードは、クリック可能なフルサイズの画像である。
| プロパティ | 説明 | |
|---|---|---|
aspectRatio |
カードの画像のアスペクト比。画像の読み込みが完了する前のヒントとなる。特定の状況ではプロパティが提供されない場合があることに注意してください。 | |
categories |
このプロパティは、純粋にカスタム実装で整理するためのもので、これらのカテゴリーはダッシュボードコンポーザーで設定できます。 | |
clicked |
このプロパティは、このカードがこのデバイスでクリックされたことがあるかどうかを示す。 | |
created |
Brazeからのカード作成時間のUNIXタイムスタンプ。 | |
dismissed |
このプロパティは、このカードが却下されたかどうかを示す。 | |
dismissible |
このプロパティは、ユーザーがカードを閉じてビューから削除できるかどうかを反映します。 | |
imageUrl |
カードの画像のURL。 | |
linkText |
URLの表示テキスト。 | |
url |
カードがクリックされた後に開かれるURL。 |
キャプション付き画像
CaptionedImageカードは、クリック可能なフルサイズの画像で、説明文が添えられている。
| プロパティ | 説明 | |
|---|---|---|
aspectRatio |
カードの画像のアスペクト比。画像の読み込みが完了する前のヒントとなる。特定の状況ではプロパティが提供されない場合があることに注意してください。 | |
categories |
このプロパティは、純粋にカスタム実装で整理するためのもので、これらのカテゴリーはダッシュボードコンポーザーで設定できます。 | |
clicked |
このプロパティは、このカードがこのデバイスでクリックされたことがあるかどうかを示す。 | |
created |
Brazeからのカード作成時間のUNIXタイムスタンプ。 | |
dismissed |
このプロパティは、このカードが却下されたかどうかを示す。 | |
dismissible |
このプロパティは、ユーザーがカードを閉じてビューから削除できるかどうかを反映します。 | |
imageUrl |
カードの画像のURL。 | |
linkText |
URLの表示テキスト。 | |
title |
このカードのタイトルテキスト。 | |
url |
カードがクリックされた後に開かれるURL。 |
クラシック
ClassicCardモデルは、テキストなしの画像、または画像付きのテキストを含むことができる。
| プロパティ | 説明 | |
|---|---|---|
aspectRatio |
カードの画像のアスペクト比。画像の読み込みが完了する前のヒントとなる。特定の状況ではプロパティが提供されない場合があることに注意してください。 | |
categories |
このプロパティは、純粋にカスタム実装で整理するためのもので、これらのカテゴリーはダッシュボードコンポーザーで設定できます。 | |
clicked |
このプロパティは、このカードがこのデバイスでクリックされたことがあるかどうかを示す。 | |
created |
Brazeからのカード作成時間のUNIXタイムスタンプ。 | |
description |
このカードの本文。 | |
dismissed |
このプロパティは、このカードが却下されたかどうかを示す。 | |
dismissible |
このプロパティは、ユーザーがカードを閉じてビューから削除できるかどうかを反映します。 | |
imageUrl |
カードの画像のURL。 | |
linkText |
URLの表示テキスト。 | |
title |
このカードのタイトルテキスト。 | |
url |
カードがクリックされた後に開かれるURL。 |
対照群
デフォルトのコンテンツカードフィードを使用すると、インプレッションとクリックが自動的に追跡されます。
コンテンツカード用のカスタム統合を使用している場合、コントロールカードが表示されたときのインプレッションを記録する必要があります。この作業の一環として、AB テストでインプレッションを記録する際には、必ずコントロールカードを処理するようにしてください。これらのカードは空白であり、ユーザーに表示されませんが、コントロールカードでないカードとのパフォーマンスを比較するために、インプレッションを記録する必要がある。
コンテンツカードが AB テストのコントロールグループにあるかどうかを判断するには、card.isControl プロパティ(Web SDK v4.5.0+) を確認するか、カードが ControlCard インスタンス (card instanceof braze.ControlCard) かどうかをチェックします。
カードメソッド
| 方法 | 説明 |
|---|---|
logContentCardImpressions |
指定されたカードの一覧のインプレッションイベントを記録します。これは、Braze UI ではなく、カスタマイズされた UI を使用する場合に必要です。 |
logContentCardClick |
指定されたカードのクリックイベントをログに記録する。これは、Braze UI ではなく、カスタマイズされた UI を使用する場合に必要です。 |
showContentCards |
ユーザーのコンテンツカードを表示する。 |
hideContentCards |
現在表示されているBrazeコンテンツカードを非表示にする。 |
toggleContentCards |
ユーザーのコンテンツカードを表示する。 |
getCachedContentCards |
前回のコンテンツカードの更新から、現在利用可能なすべてのカードを取得する。 |
subscribeToContentCardsUpdates |
コンテンツカードの更新を購読する。 サブスクライバーのコールバックは、コンテンツカードが更新されるたびに呼び出されます。 |
dismissCard |
プログラムでカードを解除する(v2.4.1で利用可能)。 |
詳細については、SDK リファレンスドキュメントを参照してください。
Google タグマネージャの使用
Google Tag Manager は、 Braze CDN (当社Web SDKのバージョン) をWeb サイト コードに直接注入することで機能します。これは、コンテンツカードを実装する場合を除き、Google Tag Manager なしでSDKを統合した場合と同様に、すべてのSDK方法を利用できることを意味します。
コンテンツカードの設定
コンテンツカードフィードを標準的に統合するには、Google タグマネージャでカスタムHTMLタグを使用できます。以下をカスタムHTML タグに追加すると、標準のコンテンツカードフィードが有効になります。
1
2
3
<script>
window.braze.showContentCards();
</script>

コンテンツカードとそのフィードの外観をより自由にカスタマイズするために、コンテンツカードをネイティブ Web サイトに直接統合できます。これには、標準フィード UI を使用する方法と、カスタムフィード UI を作成する方法の2つの方法があります。
スタンダードフィード UIを実装する場合、Brazeメソッドはメソッドの先頭にwindow.を追加する必要があります。たとえば、braze.showContentCards の代わりに window.braze.showContentCards にする必要があります。
カスタムフィードスタイルの場合、ステップsは、GTMなしでSDKを統合した場合と同じです。たとえば、コンテンツカードフィードの幅をカスタマイズする場合は、以下をCSSに貼り付けることができます。
1
2
3
body .ab-feed {
width: 800px;
}
テンプレートのアップグレード
Braze Web SDK の最新バージョンにアップグレードするには、Google Tag Manager ダッシュボードで次の3つのステップを実行します。
- タグテンプレートを更新する
ワークスペース内のTemplates ページに移動します。更新が利用可能であることを示すアイコンが表示されます。
そのアイコンをクリックし、変更を確認した後、Accept Updateをクリックします。
- バージョン番号を更新する
タグテンプレートが更新されたら、Braze 初期化タグを編集し、SDK バージョンを最新のmajor.minorバージョンに更新します。たとえば、最新バージョンが4.1.2の場合、4.1と入力します。SDKのバージョン一覧は変更履歴で見ることができる。
- QA および公開
Google Tag Manager の [デバッグツール] を使用して、新しい SDK バージョンが動作していることを確認してから、タグコンテナーに更新を公開します。
トラブルシューティング
タグデバッグを有効にする
それぞれのBraze タグ テンプレートにはオプションのGTM タグ デバッグ チェックボックスがあり、ウェブページのJavaScript コンソールへのデバッグメッセージのログ記録に使用できます。

デバッグモードに入る
Google Tag Manager の統合をデバッグするもう1つの方法は、Google の [プレビューモード] 機能を使用することです。
これにより、Web ページのデータレイヤーから、トリガーされた Braze 各タグに送信されている値を特定できるほか、トリガーされたタグとトリガーされなかったタグについても確認できます。

詳細ログの有効化
Braze テクニカルサポートがテスト中にログにアクセスできるようにするには、Google Tag Manager 統合で詳細ログを有効にします。これらのログは、ブラウザーの開発者ツールの [コンソール] タブに表示されます。
Google Tag Manager 統合で、Braze 初期化タグに移動し、[Web SDK ログを有効にする] を選択します。

前提条件
Braze コンテンツカードを使用するには、Braze Android SDK をアプリに統合する必要があります。ただし、追加のセットアップは必要ありません。
Googleフラグメント
Android では、コンテンツカードフィードは Braze Android UI プロジェクトで使用可能なフラグメントとして実装されます。このContentCardsFragmentクラスは、コンテンツカードの内容を自動的に更新して表示し、使用状況分析をログに記録します。ユーザーのContentCards カードに表示できるカードは、Braze ダッシュボードで作成されます。
アクティビティにフラグメントを追加する方法については、Googleのフラグメントドキュメントを参照してください。
カードの種類とプロパティ
コンテンツカードデータモデルはAndroid SDKで使用でき、次の一意のコンテンツカードタイプを提供します。各タイプは基本モデルを共有しており、基本モデルから共通のプロパティを継承するだけでなく、独自の固有のプロパティも持つことができます。完全なリファレンスドキュメントについては、com.braze.models.cardsを参照してください。
基準カード型式
ベースカードモデルは、すべてのカードの基本的な動作を規定します。
| プロパティ | 説明 |
|---|---|
getId() |
Brazeで設定されたカードのID を返します。 |
getViewed() |
カードがユーザーによって既読か未読かを反映したブール値を返す。 |
getExtras() |
このカードのキーと値の追加のマップを返します。 |
getCreated() |
カードの作成時刻をBrazeからunixタイムスタンプで返す。 |
isPinned |
カードがピン留めされているかどうかを示すブール値を返す。 |
getOpenUriInWebView() |
このカードの Uris を開くべきかどうかを示すブール値を返す。 Braze WebView で開くべきかどうか |
getExpiredAt() |
カードの有効期限を取得する。 |
isRemoved() |
エンドユーザーがこのカードを退会したかどうかを示すブール値を返す。 |
isDismissibleByUser() |
カードがユーザーによって排除可能かどうかを示すブール値を返します。 |
isClicked() |
このカードのクリック状態を反映するブール値を返します。 |
isDismissed() |
このカードが削除された場合はブーリアン値を返します。 |
isControl() |
このカードがコントロール カードであり、レンダリングすべきでない場合はブール値を返します。 |
画像のみ
画像のみのカードはクリック可能なフルサイズの画像です。
| プロパティ | 説明 |
|---|---|
getImageUrl() |
カードの画像のURLを返す。 |
getUrl() |
カードがクリックされた後に開かれるURLを返す。HTTP (s) URL でもプロトコル URL でもかまいません。 |
getDomain() |
プロパティ URL のリンクテキストを返します。 |
キャプション付き”画像
キャプション付き画像カードはクリック可能なフルサイズの画像で、説明文が添えられています。
| プロパティ | 説明 |
|---|---|
getImageUrl() |
カードの画像のURLを返す。 |
getTitle() |
カードのタイトルテキストを返します。 |
getDescription() |
カードの本文を返します。 |
getUrl() |
カードがクリックされた後に開かれるURLを返す。HTTP (s) URL でもプロトコル URL でもかまいません。 |
getDomain() |
プロパティ URL のリンクテキストを返す。 |
クラシック
画像が含まれていないクラシック カードは、テキストアナウンス カードになります。画像が含まれている場合は、ショートニュースカードを受け取ります。
| プロパティ | 説明 |
|---|---|
getTitle() |
カードのタイトルテキストを返します。 |
getDescription() |
カードの本文を返します。 |
getUrl() |
カードがクリックされた後に開かれるURLを返す。HTTP (s) URL でもプロトコル URL でもかまいません。 |
getDomain() |
プロパティ URL のリンクテキストを返す。 |
getImageUrl() |
カードの画像の URL を返します。クラシックショートニュースカードにのみ適用されます。 |
カードメソッド
すべてのCardデータモデルオブジェクトは、ユーザーイベントを Braze サーバーに記録するための次の分析方法を提供します。
| 方法 | 説明 |
|---|---|
logImpression() |
特定のカードのインプレッションを手動でBrazeに記録する。 |
logClick() |
特定のカードのBrazeへのクリックを手動で記録する。 |
setIsDismissed() |
特定のカードの消去を手動で Braze に記録します。カードがすでに却下済みとしてマークされている場合、そのカードを再度却下済みとしてマークすることはできません。 |
前提条件
コンテンツカードを使用するには、 Braze Swift SDK をアプリに統合する必要があります。ただし、追加のセットアップは必要ありません。
コントロール者コンテキストの表示
デフォルトのコンテンツカード UI は、Braze SDK の BrazeUI ライブラリーから統合できます。braze インスタンスを使用して、コンテンツカードビューコントローラーを作成します。コンテンツカードの UI ライフサイクルをインターセプトして対応するには、BrazeContentCardUIViewControllerDelegate を BrazeContentCardUI.ViewController のデリゲートとして実装します。
iOS ビューコントローラーのオプションに関する詳細については、Apple の開発者向けドキュメントを参照してください。
Swift SDKのBrazeUI ライブラリーには、navigation またはモーダル という2 つのデフォルトビューコントロールコンテキストがあります。つまり、アプリやサイトに数行のコードを追加することで、これらのコンテキストにおいてコンテンツカードを統合できます。「カスタマイズガイド」で説明されているように、どちらのビューにもカスタマイズとスタイル指定のオプションが用意されています。Braze の標準ビューコントローラーの代わりにカスタムコンテンツカードビューコントローラーを作成して、カスタマイズオプションをさらに増やすこともできます。例については、コンテンツカードの UI チュートリアルを参照してください。
カスタム UI でコントロールバリアントコンテンツカードを処理するには、Braze.ContentCard.Control を渡した後、他のコンテンツカードタイプと同様に logImpression メソッドを呼び出します。オブジェクトはコントロールインプレッションを暗黙的にログに記録して、ユーザーがいつコントロールカードを表示したかを分析に通知します。
ナビゲーション
ナビゲーションコントローラーは、ナビゲーションインターフェイス内の1つ以上の子ビューコントローラーを管理するビューコントローラーです。以下は、BrazeContentCardUI.ViewController インスタンスをナビゲーションコントローラーにプッシュする例です。
1
2
3
4
5
6
7
func pushViewController() {
guard let braze = AppDelegate.braze else { return }
let contentCardsController = BrazeContentCardUI.ViewController(braze: braze)
// Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
contentCardsController.delegate = self
self.navigationController?.pushViewController(contentCardsController, animated: true)
}
1
2
3
4
5
6
- (void)pushViewController {
BRZContentCardUIViewController *contentCardsController = [[BRZContentCardUIViewController alloc] initWithBraze:self.braze];
// Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
[contentCardsController setDelegate:self];
[self.navigationController pushViewController:contentCardsController animated:YES];
}
モーダル
モーダルプレゼンテーションを使用して、ユーザーに重要情報の入力を求める場合などに、アプリのワークフローを一時的に中断させることができます。このモデルビューでは、上部にナビゲーションバーがあり、バーの横に [完了] ボタンがあります。以下は、BrazeContentCard.ViewController インスタンスをモーダルコントローラーにプッシュする例です。
1
2
3
4
5
6
7
func presentModalViewController() {
guard let braze = AppDelegate.braze else { return }
let contentCardsModal = BrazeContentCardUI.ModalViewController(braze: braze)
// Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
contentCardsModal.viewController.delegate = self
self.navigationController?.present(contentCardsModal, animated: true, completion: nil)
}
1
2
3
4
5
6
- (void)presentModalViewController {
BRZContentCardUIModalViewController *contentCardsModal = [[BRZContentCardUIModalViewController alloc] initWithBraze:AppDelegate.braze];
// Implement and set `BrazeContentCardUIViewControllerDelegate` if you wish to intercept click actions.
[contentCardsModal.viewController setDelegate:self];
[self.navigationController presentViewController:contentCardsModal animated:YES completion:nil];
}
BrazeUI ビューコントローラーの使用例については、サンプルアプリで対応するコンテンツカードの UI サンプルを確認してください。
基準カード型式
コンテンツカードデータモデルは、Braze スウィフトSDKのBrazeKit モジュールで使用できます。このモジュールには、Braze.ContentCard タイプの実装である以下のコンテンツカードタイプが含まれています。コンテンツカードのプロパティとその使用法の完全なリストについては、ContentCard class を参照してください。
- 画像のみ
- キャプション付き画像
- クラシック
- クラシック”画像
- コントロール
コンテンツカードデータモデルにアクセスするには、braze インスタンスで contentCards.cards を呼び出します。カードデータの購読の詳細については、「分析のロギング」を参照してください。
BrazeKit には、Objective-C 互換のための代替ContentCardRaw クラスが用意されています。
カードメソッド
各カードは、カードの状態を管理するためのさまざまなメソッドを含む Context オブジェクトを使用して初期化されます。特定のカードオブジェクトの対応する状態プロパティを変更する場合は、これらのメソッドを呼び出します。
| 方法 | 説明 |
|---|---|
card.context?.logImpression() |
コンテンツカードのインプレッションイベントを記録する。 |
card.context?.logClick() |
コンテンツカードのクリックイベントを記録する。 |
card.context?.processClickAction() |
指定された ClickAction の入力を処理します。 |
card.context?.logDismissed() |
コンテンツカードを閉じたイベントをロギングします。 |
card.context?.logError() |
コンテンツカードに関するエラーを記録する。 |
card.context?.loadImage() |
指定されたコンテンツカードの画像をURLから読み込む。コンテンツカードに画像がない場合、このメソッドはゼロになる。 |
詳細については、Context クラスのドキュメントを参照してください。
前提条件
この機能を使う前に、Cordova Braze SDKを統合する必要がある。
カードフィード
Braze SDK にはデフォルトのカードフィードが含まれています。デフォルトのカードフィードを表示するには、launchContentCards() メソッドを使用します。このメソッドは、ユーザーのコンテンツカードの分析トラッキング、却下、レンダリングをすべて行います。
コンテンツカード
以下の追加メソッドを使用して、アプリ内にカスタムコンテンツカードフィードを構築できます。
| 方法 | 説明 | |
|---|---|---|
requestContentCardsRefresh() |
Braze SDKサーバーから最新のコンテンツカードを要求するためのバックグラウンドリクエストを送信する。 | |
getContentCardsFromServer(successCallback, errorCallback) |
Braze SDKからコンテンツカードを取得する。これにより、サーバーから最新のコンテンツカードが要求され、完了時にカードのリストが返されます。 | |
getContentCardsFromCache(successCallback, errorCallback) |
Braze SDKからコンテンツカードを取得する。これは、前回の更新時に更新されたローカルキャッシュから最新のカードリストを返す。 | |
logContentCardClicked(cardId) |
指定されたコンテンツカードIDのクリックを記録する。 | |
logContentCardImpression(cardId) |
与えられたコンテンツカードIDのインプレッションを記録する。 | |
logContentCardDismissed(cardId) |
指定されたコンテンツカード ID が閉じられたことを記録します。 |
Flutter コンテンツカードについて
Braze SDK には、コンテンツカードを使い始めるためのデフォルトのカードフィードが含まれています。カードフィードを表示するには、braze.launchContentCards() メソッドを使用できます。Braze SDK に含まれるデフォルトのカードフィードは、ユーザーのコンテンツカードの分析トラッキング、却下、レンダリングをすべて処理します。
前提条件
この機能を使う前に、Flutter Braze SDKを統合する必要がある。
カードメソッド
これらの追加メソッドを使用して、プラグインパブリックインターフェイス で使用可能な以下のメソッドを使用して、アプリ内でカスタムコンテンツカードフィードを構築できます。
| 方法 | 説明 |
|---|---|
braze.requestContentCardsRefresh() |
Braze SDKサーバーから最新のコンテンツカードを要求する。 |
braze.logContentCardClicked(contentCard) |
与えられたContent Cardオブジェクトのクリックを記録する。 |
braze.logContentCardImpression(contentCard) |
与えられたContent Cardオブジェクトのインプレッションを記録する。 |
braze.logContentCardDismissed(contentCard) |
指定されたContent Cardオブジェクトの却下を記録する。 |
コンテンツカードデータの受信
Flutter アプリでコンテンツカードデータを受信するために、BrazePlugin は Dart ストリームを使用したコンテンツカードデータの送信をサポートしています。
BrazeContentCard オブジェクトは、description、title、image、url、extras などを含む、ネイティブモデルオブジェクトで使用可能なフィールドのサブセットをサポートします。
ステップ 1:Dart レイヤーでコンテンツカードデータをリッスンする
Dart レイヤーでコンテンツカードデータを受信するには、以下のコードを使用して StreamSubscription を作成し、braze.subscribeToContentCards() を呼び出します。不要になったストリームサブスクリプションを忘れずに cancel() してください。
1
2
3
4
5
6
7
8
9
// Create stream subscription
StreamSubscription contentCardsStreamSubscription;
contentCardsStreamSubscription = braze.subscribeToContentCards((List<BrazeContentCard> contentCards) {
// Handle Content Cards
}
// Cancel stream subscription
contentCardsStreamSubscription.cancel();
例としては main.dartを参照のこと。
ステップ2:ネイティブレイヤーからコンテンツカードデータを転送する
このステップはiOS専用です。コンテンツカードデータは Android レイヤーから自動的に転送されます。
ステップ 1 からDart レイヤーのデータを受信するには、次のコードを追加して、ネイティブiOS レイヤーからコンテンツカードデータを転送します。
-
subscribeToUpdates のドキュメントの説明に従って、コンテンツカードの最新情報を購読登録するように
contentCards.subscribeToUpdatesを実装します。 -
contentCards.subscribeToUpdatesコールバックの実装ではBrazePlugin.processContentCards(contentCards)を呼び出す必要があります。
例としては AppDelegate.swiftを参照のこと。
コンテンツカードのコールバックを再生する
コールバックが利用可能になる前にトリガーされたコンテンツカードを保存し、設定後に再生するには、BrazePlugin の初期化時に次のエントリを customConfigs マップに追加します。
1
BrazePlugin braze = new BrazePlugin(customConfigs: {replayCallbacksConfigKey: true});
React Nativeコンテンツカードについて
Braze SDK には、コンテンツカードを使い始めるためのデフォルトのカードフィードが含まれています。カードフィードを表示するには、Braze.launchContentCards() メソッドを使用できます。Braze SDK に含まれるデフォルトのカードフィードは、ユーザーのコンテンツカードの分析トラッキング、却下、レンダリングをすべて処理します。
前提条件
この機能を使う前に、React Native Braze SDKを統合する必要がある。
カードの方法
独自の UI を構築するには、利用可能なカードのリストを取得し、カードの更新をリッスンすることができます。
1
2
3
4
5
6
7
8
9
10
11
// Set initial cards
const [cards, setCards] = useState([]);
// Listen for updates as a result of card refreshes, such as:
// a new session, a manual refresh with `requestContentCardsRefresh()`, or after the timeout period
Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, async (update) => {
setCards(update.cards);
});
// Manually trigger a refresh of cards
Braze.requestContentCardsRefresh();
カードを表示する独自の UIを構築することを選択した場合、それらのカードの分析を受け取るために logContentCardImpression を呼び出す必要があります。これには、control カードも含まれる。カードはユーザーに表示されないが、追跡されなければならない。
以下の追加メソッドを使用して、アプリ内にカスタムコンテンツカードフィードを構築できます。
| 方法 | 説明 |
|---|---|
launchContentCards() |
コンテンツカードUI要素を起動する。 |
requestContentCardsRefresh() |
Braze SDKサーバーから最新のコンテンツカードを要求する。結果として得られるカードのリストは、以前に登録されたコンテンツカードイベントの各リスナーに渡されます。 |
getContentCards() |
Braze SDKからコンテンツカードを取得する。これは、サーバーからのカードの最新のリストで解決されるプロミスを返します。 |
getCachedContentCards() |
キャッシュから最新のコンテンツカードの配列を返す。 |
logContentCardClicked(cardId) |
指定されたコンテンツカードIDのクリックを記録する。この方法は、分析でのみ使用されます。クリックアクションを実行するには、さらに processContentCardClickAction(cardId) を呼び出します。 |
logContentCardImpression(cardId) |
与えられたコンテンツカードIDのインプレッションを記録する。 |
logContentCardDismissed(cardId) |
指定されたコンテンツカード ID が閉じられたことを記録します。 |
processContentCardClickAction(cardId) |
特定のカードのアクションを実行する。 |
カードの種類とプロパティ
コンテンツカードデータモデルはReact Native SDKで利用可能で、以下のコンテンツカードカードタイプを提供する:画像のみ、キャプション付き画像、クラシック。また、特別なコントロールカードタイプもあり、これは指定されたカードのコントロールグループに属するユーザーに返される。各タイプは、独自のプロパティに加えて、ベースモデルから共通のプロパティを継承する。
ベースカードモデル
ベースカードモデルは、すべてのカードの基本的な動作を規定します。
| プロパティ | 説明 |
|---|---|
id |
Braze によって設定されたカードの ID。 |
created |
Brazeからのカード作成時間のUNIXタイムスタンプ。 |
expiresAt |
カードの有効期限を示すUNIXタイムスタンプ。値が0より小さい場合は、カードの有効期限がないことを意味する。 |
viewed |
カードがユーザーによって読まれているか読まれていないか。これはアナリティクスのログを記録しない。 |
clicked |
カードがユーザーによってクリックされたかどうか。 |
pinned |
カードが固定されているかどうか。 |
dismissed |
ユーザーがこのカードを退会したかどうか。すでに閉じられたカードに閉じられたマークを付けることは、ノーオペになります。 |
dismissible |
ユーザーがカードを閉じられるかどうか。 |
url |
(オプション)カードクリックアクションに関連付けられたURL文字列。 |
openURLInWebView |
このカードの URL を Braze WebView で開封するかどうか。 |
isControl |
このカードがコントロールカードかどうか。コントロールカードをユーザーに表示しないでください。 |
extras |
このカードのキー・バリュー・エキストラのマップ。 |
ベースカードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。
画像のみ
画像のみのカードはクリック可能なフルサイズの画像です。
| プロパティ | 説明 |
|---|---|
type |
コンテンツカードの種類、IMAGE_ONLY |
image |
カードの画像のURL。 |
imageAspectRatio |
カード画像のアスペクト比。これは、画像の読み込みが完了する前にヒントとして利用するためです。特定の状況ではプロパティが提供されない場合があることに注意してください。 |
画像のみのカードの完全なリファレンスについては、[Android] および [iOS] のドキュメントを参照してください。
キャプション付き画像
キャプション付き画像カードはクリック可能なフルサイズの画像で、説明文が添えられています。
| プロパティ | 説明 |
|---|---|
type |
コンテンツカードの種類、CAPTIONED |
image |
カードの画像のURL。 |
imageAspectRatio |
カード画像のアスペクト比。これは、画像の読み込みが完了する前にヒントとして利用するためです。特定の状況ではプロパティが提供されない場合があることに注意してください。 |
title |
カードのタイトルテキスト。 |
cardDescription |
カードの説明テキスト。 |
domain |
(オプ シ ョ ナル) プ ロパテ ィ URL の リ ン ク テキス ト 、 た と えば"braze.com/resources/" 。カードの UI に表示され、カードをクリックした時の動作/方向を示すことができます。 |
キャプション付き画像カードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。
クラシック
クラシックカードには、タイトル、説明、およびオプションの画像がテキストの左側に表示されます。
| プロパティ | 説明 |
|---|---|
type |
コンテンツカードの種類、CLASSIC |
image |
(オプション)カードの画像のURL。 |
title |
カードのタイトルテキスト。 |
cardDescription |
カードの説明テキスト。 |
domain |
(オプ シ ョ ナル) プ ロパテ ィ URL の リ ン ク テキス ト 、 た と えば"braze.com/resources/" 。カードの UI に表示され、カードをクリックした時の動作/方向を示すことができます。 |
クラシック (テキストアナウンス) コンテンツカードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。クラシックな画像(短いニュース)カードについては、Androidと iOSのドキュメントを参照のこと。
コントロール
コントロールカードには、基本プロパティがすべて含まれていますが、いくつかの重要な違いがあります。最も重要な点:
isControlプロパティはtrueであることが保証されている。extrasプロパティは空であることが保証されます。
コントロールカードの完全なリファレンスについては、[Android] および [iOS] のドキュメントを参照してください。
前提条件
コンテンツカードを使用する前に、Braze Swift SDKをアプリに統合する必要がある。その後、tvOSアプリの設定ステップを完了させる必要がある。
コンテンツカードは Swift SDK を使用するヘッドレス UI でサポートされているため、独自のカスタムUI を実装する必要があります。これには tvOS のデフォルト UI やビューは含まれません。
tvOSアプリを設定する
ステップ1:新しいiOSアプリを作成する
Braze で、[設定] > [アプリの設定] を選択し、[アプリの追加] を選択します。tvOS アプリの名前を入力し、tvOS ではなく、iOS を選択し、アプリの追加を選択します。

tvOSチェックボックスを選択した場合、コンテンツカードをtvOS用にカスタマイズすることはできない。
ステップ2:アプリのAPIキーを取得する
アプリの設定で、新しいtvOSアプリを選択し、アプリのAPIキーをメモする。このキーを使って Xcode でアプリを設定します。

ステップ 3:BrazeKitを統合する
アプリの API キーを使用して、Xcode で Braze Swift SDK を tvOS プロジェクトに統合します。Braze Swift SDK から BrazeKit を統合するだけでよいです。
ステップ 4:カスタムUIを作成する
BrazeはtvOS上のコンテンツカードのデフォルトUIを提供していないため、自分でカスタマイズする必要がある。完全なチュートリアルについては、ステップ・バイ・ステップのチュートリアルを参照のこと:コンテンツカードをtvOS用にカスタマイズする。サンプルプロジェクトについては、Braze Swift SDKのサンプルを参照してください。
前提条件
この機能を使用する前に、Unity Braze SDKを統合する必要がある。
コンテンツカードをネイティブに表示する
次の呼び出しを使用して、コンテンツカードのデフォルトユーザーインターフェイスを表示できます。
1
Appboy.AppboyBinding.DisplayContentCards();
Unityでコンテンツカードデータを受信する
Unity ゲームオブジェクトを登録して、コンテンツカードの受信について通知を受けることができます。Brazeコンフィギュレーションエディタから設定のゲームオブジェクトリスナを使用することをお勧めします。
ゲームオブジェクトのリスナーを実行時に設定する必要がある場合は、AppboyBinding.ConfigureListener() を使用し、BrazeUnityMessageType.CONTENT_CARDS_UPDATED を指定します。
さらに、AppboyBinding.RequestContentCardsRefresh() を呼び出して、iOS 上のゲームオブジェクトリスナーでデータの受信を開始する必要があります。
コンテンツカードの解析
Content Cards ゲームオブジェクトコールバックで受信した受信string メッセージは、事前に提供されているContentCard モデルオブジェクトに構文解析すると便利です。
コンテンツカードの解析にはJSON解析が必要で、詳細は以下の例を参照のこと:
コンテンツカードのコールバックの例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void ExampleCallback(string message) {
try {
JSONClass json = (JSONClass)JSON.Parse(message);
// Content Card data is contained in the `mContentCards` field of the top level object.
if (json["mContentCards"] != null) {
JSONArray jsonArray = (JSONArray)JSON.Parse(json["mContentCards"].ToString());
Debug.Log(String.Format("Parsed content cards array with {0} cards", jsonArray.Count));
// Iterate over the card array to parse individual cards.
for (int i = 0; i < jsonArray.Count; i++) {
JSONClass cardJson = jsonArray[i].AsObject;
try {
ContentCard card = new ContentCard(cardJson);
Debug.Log(String.Format("Created card object for card: {0}", card));
// Example of logging Content Card analytics on the ContentCard object
card.LogImpression();
card.LogClick();
} catch {
Debug.Log(String.Format("Unable to create and log analytics for card {0}", cardJson));
}
}
}
} catch {
throw new ArgumentException("Could not parse content card JSON message.");
}
}
コンテンツカードの更新
Braze からコンテンツカードを更新するには、次のいずれかのメソッドを呼び出します。
1
2
3
4
// results in a network request to Braze
AppboyBinding.RequestContentCardsRefresh()
AppboyBinding.RequestContentCardsRefreshFromCache()
分析
Braze によって直接表示されないコンテンツカードについては、クリックとインプレッションを手動でログに記録する必要があります。
Content カード でLogClick() およびLogImpression() を使用して、特定のカードs のクリックとインプレッションを記録します。
.NET MAUI コンテンツカードについて
Braze .NET MAUI (旧Xamarin) SDKには、コンテンツカードの使用を開始するためのデフォルト カード フィードが含まれています。Braze SDKに含まれるデフォルトのカードフィードは、ユーザーのコンテンツカードのすべてのアナリティクスのトラッキング、却下、レンダリングを処理する。
前提条件
この機能を使用する前に、.NET MAUI Braze SDKを統合する必要がある。
カードの種類とプロパティ
Braze .NET MAUI SDKには、基本モデルを共有する3 つの一意のコンテンツカードs カードタイプがあります。バナー、キャプションイメージ、およびクラシック。各タイプはベースモデルから共通のプロパティを継承し、次の追加プロパティを持ちます。
基準カード型式
| プロパティ | 説明 |
|---|---|
idString |
Braze によって設定されたカードの ID。 |
created |
Brazeからのカード作成時間のUNIXタイムスタンプ。 |
expiresAt |
カードの有効期限を示すUNIXタイムスタンプ。値が0より小さい場合は、カードの有効期限がないことを意味する。 |
viewed |
カードがユーザーによって読まれているか読まれていないか。これはアナリティクスのログを記録しない。 |
clicked |
カードがユーザーによってクリックされたかどうか。 |
pinned |
カードが固定されているかどうか。 |
dismissed |
ユーザーがこのカードを退会したかどうか。すでに閉じられたカードに閉じられたマークを付けることは、ノーオペになります。 |
dismissible |
ユーザーがカードを閉じられるかどうか。 |
urlString |
(オプション) カードのクリックアクションに関連付けられたURL ストリング。 |
openUrlInWebView |
このカードのURL をBraze WebView で開封するかどうか。 |
isControlCard |
このカードがコントロールカードかどうか。コントロールカードをユーザーに表示しないでください。 |
extras |
このカードのキー・バリュー・エキストラのマップ。 |
isTest |
このカードがテストカードかどうか。 |
ベースカードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。
バナー
バナーカードはクリック可能なフルサイズの画像である。
| プロパティ | 説明 |
|---|---|
image |
カードの画像のURL。 |
imageAspectRatio |
カード画像のアスペクト比。これは、画像の読み込みが完了する前にヒントとして利用するためです。特定の状況ではプロパティが提供されない場合があることに注意してください。 |
バナーカードの完全なリファレンスについては、Android および iOS のドキュメント (現在は画像のみに名称変更) を参照してください。
キャプション付き画像
キャプション付き画像カードはクリック可能なフルサイズの画像で、説明文が添えられています。
| プロパティ | 説明 |
|---|---|
image |
カードの画像のURL。 |
imageAspectRatio |
カード画像のアスペクト比。これは、画像の読み込みが完了する前にヒントとして利用するためです。特定の状況ではプロパティが提供されない場合があることに注意してください。 |
title |
カードのタイトルテキスト。 |
cardDescription |
カードの説明テキスト。 |
domain |
(オプ シ ョ ナル) プ ロパテ ィ URL の リ ン ク テキス ト 、 た と えば"braze.com/resources/" 。カードの UI に表示され、カードをクリックした時の動作/方向を示すことができます。 |
キャプション付き画像カードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。
クラシック
クラシックカードには、タイトル、説明、およびオプションの画像がテキストの左側に表示されます。
| プロパティ | 説明 |
|---|---|
image |
(オプション)カードの画像のURL。 |
title |
カードのタイトルテキスト。 |
cardDescription |
カードの説明テキスト。 |
domain |
(オプ シ ョ ナル) プ ロパテ ィ URL の リ ン ク テキス ト 、 た と えば"braze.com/resources/" 。カードの UI に表示され、カードをクリックした時の動作/方向を示すことができます。 |
クラシック (テキストアナウンス) コンテンツカードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。クラシック画像 (ショートニュース) カードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。
カードメソッド
以下の追加メソッドを使用して、アプリ内にカスタムコンテンツカードフィードを構築できます。
| 方法 | 説明 |
|---|---|
requestContentCardsRefresh() |
Braze SDKサーバーから最新のコンテンツカードを要求する。 |
getContentCards() |
Braze SDKからコンテンツカードを取得する。これでサーバーから最新のカードリストが返される。 |
logContentCardClicked(cardId) |
指定されたコンテンツカードIDのクリックを記録する。この方法は、分析でのみ使用されます。 |
logContentCardImpression(cardId) |
与えられたコンテンツカードIDのインプレッションを記録する。 |
logContentCardDismissed(cardId) |
指定されたコンテンツカード ID が閉じられたことを記録します。 |
GitHub でこのページを編集