コンテンツカード
アプリケーションで使用できるさまざまなデータモデルやカード固有のプロパティなど、Braze SDK のコンテンツカードについて説明します。
前提条件
ろう付けコンテンツカードを使用する前に、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タイムスタンプで返す。 |
getIsPinned |
カードがピン留めされているかどうかを示すブール値を返す。 |
getOpenUriInWebView() |
このカードの Uris を開くべきかどうかを示すブール値を返す。 Braze WebView で開くべきかどうか |
getExpiredAt() |
カードの有効期限を取得する。 |
getIsRemoved() |
エンドユーザーがこのカードを退会したかどうかを示すブール値を返す。 |
getIsDismissible() |
カードがピン留めされているかどうかを示すブール値を返す。 |
画像のみ
画像のみのカードはクリック可能なフルサイズの画像です。
| プロパティ | 説明 |
|---|---|
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 に記録します。カードがすでに却下済みとしてマークされている場合、そのカードを再度却下済みとしてマークすることはできません。 |
Prerequisites
Before you can use Content Cards, you’ll need to integrate the Braze Swift SDK into your app. However, no additional setup is required.
View controller contexts
The default Content Cards UI can be integrated from the BrazeUI library of the Braze SDK. Create the Content Cards view controller using the braze instance. If you wish to intercept and react to the Content Card UI lifecycle, implement BrazeContentCardUIViewControllerDelegate as the delegate for your BrazeContentCardUI.ViewController.
For more information about iOS view controller options, refer to the Apple developer documentation.
The BrazeUI library of the Swift SDK provides two default view controller contexts: navigation or modal. This means you can integrate Content Cards in these contexts by adding a few lines of code to your app or site. Both views offer customization and styling options as described in the customization guide. You can also create a custom Content Card view controller instead of using the standard Braze one for even more customization options—refer to the Content Cards UI tutorial for an example.
To handle control variant Content Cards in your custom UI, pass in your Braze.ContentCard.Control object, then call the logImpression method as you would with any other Content Card type. The object will implicitly log a control impression to inform our analytics of when a user would have seen the control card.
Navigation
A navigation controller is a view controller that manages one or more child view controllers in a navigation interface. Here is an example of pushing a BrazeContentCardUI.ViewController instance into a navigation controller:
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];
}
Modal
Use modal presentations to create temporary interruptions in your app’s workflow, such as prompting the user for important information. This model view has a navigation bar on top and a Done button on the side of the bar. Here is an example of pushing a BrazeContentCard.ViewController instance into a modal controller:
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];
}
For example usage of BrazeUI view controllers, check out the corresponding Content Cards UI samples in our Examples app.
Base card model
The Content Cards data model is available in the BrazeKit module of the Braze Swift SDK. This module contains the following Content Card types, which are an implementation of the Braze.ContentCard type. For a full list of Content Card properties and their usage, see ContentCard class.
- Image only
- Captioned image
- Classic
- Classic image
- Control
To access the Content Cards data model, call contentCards.cards on your braze instance. See Logging analytics for more information on subscribing to card data.
Keep in mind, BrazeKit offers an alternative ContentCardRaw class for Objective-C compatibility.
Card methods
Each card is initialized with a Context object, which contains various methods for managing your card’s state. Call these methods when you want to modify the corresponding state property on a particular card object.
| Method | Description |
|---|---|
card.context?.logImpression() |
Log the content card impression event. |
card.context?.logClick() |
Log the content card click event. |
card.context?.processClickAction() |
Process a given ClickAction input. |
card.context?.logDismissed() |
Log the content card dismissed event. |
card.context?.logError() |
Log an error related to the content card. |
card.context?.loadImage() |
Load a given content card image from a URL. This method can be nil when the content card does not have an image. |
For more details, refer to the Context class documentation
このガイドでは、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 ログを有効にする] を選択します。

Prerequisites
Before you can use this feature, you’ll need to integrate the 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 が閉じられたことを記録します。 |
フルッターコンテンツカードについて
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:ネイティブレイヤーからコンテンツカードデータを転送する
ステップ 1 の Dart レイヤーでデータを受信するには、次のコードを追加して、ネイティブレイヤーからコンテンツカードデータを転送します。
コンテンツカードデータは Android レイヤーから自動的に転送されます。
-
subscribeToUpdates のドキュメントの説明に従って、コンテンツカードの最新情報を購読登録するように
contentCards.subscribeToUpdatesを実装します。 -
contentCards.subscribeToUpdatesコールバックの実装ではBrazePlugin.processContentCards(contentCards)を呼び出す必要があります。
例としては AppDelegate.swiftを参照のこと。
コンテンツカードのコールバックを再生する
コールバックが利用可能になる前にトリガーされたコンテンツカードを保存し、設定後に再生するには、BrazePlugin の初期化時に次のエントリを customConfigs マップに追加します。
1
BrazePlugin braze = new BrazePlugin(customConfigs: {replayCallbacksConfigKey: true});
Reactネイティブコンテンツカードについて
Braze SDK には、コンテンツカードを使い始めるためのデフォルトのカードフィードが含まれています。カードフィードを表示するには、Braze.launchContentCards() メソッドを使用できます。Braze SDK に含まれるデフォルトのカードフィードは、ユーザーのコンテンツカードの分析トラッキング、却下、レンダリングをすべて処理します。
Prerequisites
Before you can use this feature, you’ll need to integrate the 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) |
特定のカードのアクションを実行する。 |
カードの種類とプロパティ
コンテンツカードのデータモデルは、対応ネイティブSDKで使用でき、次のコンテンツカード型を提供します。Image Only、キャプションイメージ、およびクラシック。また、特殊なコントロール カード型もあります。これは、指定されたカードのユーザーs に返されます。各タイプは、固有のプロパティに加えて、基本モデルから共通のプロパティを継承します。
基準カード型式
ベースカードモデルは、すべてのカードの基本的な動作を規定します。
| プロパティ | 説明 |
|---|---|
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 のクリックとインプレッションを記録します。
Xamarin Contentカードについて
Braze Xamarin SDK には、コンテンツカードの使用を開始するためのデフォルトのカードフィードが含まれています。Braze SDKに含まれるデフォルトのカードフィードは、ユーザーのコンテンツカードのすべてのアナリティクスのトラッキング、却下、レンダリングを処理する。
前提条件
この機能を使用する前に、Xamarin Braze SDKを統合する必要があります。
カードの種類とプロパティ
Braze Xamarin SDK には、基本モデルを共有する3 つの独自のコンテンツカードタイプがあります。バナー、キャプションイメージ、およびクラシック。各タイプはベースモデルから共通のプロパティを継承し、次の追加プロパティを持ちます。
ベースカードモデル
| プロパティ | 説明 |
|---|---|
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 でこのページを編集