Skip to content

コンテンツカード

アプリケーションで使用できるさまざまなデータモデルやカード固有のプロパティなど、Braze SDK のコンテンツカードについて説明します。

前提条件

ろう付けコンテンツカードを使用する前に、Android SDK をアプリに統合する必要があります。ただし、追加のセットアップは必要ありません。

Googleフラグメント

Android では、コンテンツカードフィードは Braze Android UI プロジェクトで使用可能なフラグメントとして実装されます。このContentCardsFragmentクラスは、コンテンツカードの内容を自動的に更新して表示し、使用状況分析をログに記録します。ユーザーのContentCards カードに表示できるカードは、Braze ダッシュボードで作成されます。

アクティビティにフラグメントを追加する方法については、Googleのフラグメントドキュメントを参照してください。

カードの種類とプロパティ

コンテンツカードデータモデルはAndroid SDK で利用でき、以下のユニークなコンテンツカードタイプを提供します。各タイプは基本モデルを共有しており、基本モデルから共通のプロパティを継承するだけでなく、独自の固有のプロパティも持つことができます。完全なリファレンスドキュメントについては、com.braze.models.cards を参照してください。

ベースカードモデル

ベースカードモデルは、すべてのカードの基本的な動作を規定します。

画像のみ

画像のみのカードはクリック可能なフルサイズの画像です。

キャプション画像

キャプション付き画像カードはクリック可能なフルサイズの画像で、説明文が添えられています。

クラシック

画像が含まれていないクラシック カードは、テキストアナウンス カードになります。画像が含まれている場合は、ショートニュースカードを受け取ります。

カードメソッド

すべてのCardデータモデルオブジェクトは、ユーザーイベントを 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.

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.

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.

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.

For more details, refer to the Context class documentation

前提条件

コンテンツカードを使用する前に、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 オプションに置かれる。

コンテンツカードの切り替えに関する詳細は、SDK リファレンスドキュメントを参照してください。

カードの種類とプロパティ

コンテンツ・カード・データ・モデルはWeb SDKで利用可能で、以下のコンテンツ・カード・タイプを提供する:ImageOnlyCaptionedImageClassicCardである。各タイプは、ベースモデルカードから共通のプロパティを継承し、以下の追加プロパティを持つ。

ベースカードモデル

すべてのコンテンツカードは、以下の共有プロパティを持っています。

画像のみ

ImageOnlyカードは、クリック可能なフルサイズの画像である。

キャプション付き画像

CaptionedImageカードは、クリック可能なフルサイズの画像で、説明文が添えられている。

クラシック

ClassicCardモデルは、テキストなしの画像、または画像付きのテキストを含むことができる。

対照群

デフォルトのコンテンツカードフィードを使用すると、インプレッションとクリックが自動的に追跡されます。

コンテンツカード用のカスタム統合を使用している場合、コントロールカードが表示されたときのインプレッションを記録する必要があります。この作業の一環として、AB テストでインプレッションを記録する際には、必ずコントロールカードを処理するようにしてください。これらのカードは空白であり、ユーザーに表示されませんが、コントロールカードでないカードとのパフォーマンスを比較するために、インプレッションを記録する必要がある。

コンテンツカードが AB テストのコントロールグループにあるかどうかを判断するには、card.isControl プロパティ(Web SDK v4.5.0+) を確認するか、カードが ControlCard インスタンス (card instanceof braze.ControlCard) かどうかをチェックします。

カードメソッド

詳細については、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>

コンテンツカードのフィードを表示するカスタムHTMLタグのGoogleタグマネージャーでのタグ設定

コンテンツカードとそのフィードの外観をより自由にカスタマイズするために、コンテンツカードをネイティブ 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つのステップを実行します。

  1. タグテンプレートを更新する
    ワークスペース内のTemplates ページに移動します。更新が利用可能であることを示すアイコンが表示されます。

    更新があることを示すテンプレートページ

    そのアイコンをクリックし、変更を確認した後、Accept Updateをクリックします。

    新旧タグテンプレートの比較画面と「更新を受け入れる」ボタン

  2. バージョン番号を更新する
    タグテンプレートが更新されたら、Braze 初期化タグを編集し、SDK バージョンを最新の major.minor バージョンに更新します。たとえば、最新バージョンが4.1.2 の場合、4.1 と入力します。SDKのバージョン一覧は変更履歴で見ることができる。

    SDKバージョンを変更するための入力フィールドを持つBraze初期化テンプレート

  3. QA および公開
    Google Tag Manager の [デバッグツール] を使用して、新しい SDK バージョンが動作していることを確認してから、タグコンテナーに更新を公開します。

トラブルシューティング

タグデバッグを有効にする

それぞれのBraze タグ テンプレートにはオプションのGTM タグ デバッグ チェックボックスがあり、ウェブページのJavaScript コンソールへのデバッグメッセージのログ記録に使用できます。

Google Tag Managerのデバッグツール

デバッグモードに入る

Google Tag Manager の統合をデバッグするもう1つの方法は、Google の [プレビューモード] 機能を使用することです。

これにより、Web ページのデータレイヤーから、トリガーされた Braze 各タグに送信されている値を特定できるほか、トリガーされたタグとトリガーされなかったタグについても確認できます。

Braze 初期化タグの概要ページには、トリガーされたタグに関する情報など、タグの概要が表示されます。

詳細ログの有効化

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

Google Tag Manager 統合で、Braze 初期化タグに移動し、[Web SDK ログを有効にする] を選択します。

Web SDK ログを有効にするオプションがオンになっている Braze 初期化タグの概要ページ。

Prerequisites

Before you can use this feature, you’ll need to integrate the Cordova Braze SDK.

カードフィード

Braze SDK にはデフォルトのカードフィードが含まれています。デフォルトのカードフィードを表示するには、launchContentCards() メソッドを使用します。このメソッドは、ユーザーのコンテンツカードの分析トラッキング、却下、レンダリングをすべて行います。

コンテンツカード

以下の追加メソッドを使用して、アプリ内にカスタムコンテンツカードフィードを構築できます。

フルッターコンテンツカードについて

Braze SDK には、コンテンツカードを使い始めるためのデフォルトのカードフィードが含まれています。カードフィードを表示するには、braze.launchContentCards() メソッドを使用できます。Braze SDK に含まれるデフォルトのカードフィードは、ユーザーのコンテンツカードの分析トラッキング、却下、レンダリングをすべて処理します。

前提条件

この機能を使う前に、Flutter Braze SDKを統合する必要がある。

カードメソッド

これらの追加メソッドを使用して、プラグインパブリックインターフェイス で使用可能な以下のメソッドを使用して、アプリ内でカスタムコンテンツカードフィードを構築できます。

コンテンツカードデータの受信

Flutter アプリでコンテンツカードデータを受信するために、BrazePluginDart ストリームを使用したコンテンツカードデータの送信をサポートしています。

BrazeContentCard オブジェクトは、descriptiontitleimageurlextras などを含む、ネイティブモデルオブジェクトで使用可能なフィールドのサブセットをサポートします。

ステップ 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 レイヤーから自動的に転送されます。

  1. subscribeToUpdates のドキュメントの説明に従って、コンテンツカードの最新情報を購読登録するように contentCards.subscribeToUpdates を実装します。

  2. 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();

以下の追加メソッドを使用して、アプリ内にカスタムコンテンツカードフィードを構築できます。

カードの種類とプロパティ

コンテンツカードのデータモデルは、対応ネイティブSDKで使用でき、次のコンテンツカード型を提供します。Image Onlyキャプションイメージ、およびクラシック。また、特殊なコントロール カード型もあります。これは、指定されたカードのユーザーs に返されます。各タイプは、固有のプロパティに加えて、基本モデルから共通のプロパティを継承します。

基準カード型式

ベースカードモデルは、すべてのカードの基本的な動作を規定します。

ベースカードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。

画像のみ

画像のみのカードはクリック可能なフルサイズの画像です。

画像のみのカードの完全なリファレンスについては、[Android] および [iOS] のドキュメントを参照してください。

キャプション付き画像

キャプション付き画像カードはクリック可能なフルサイズの画像で、説明文が添えられています。

キャプション付き画像カードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。

クラシック

クラシックカードには、タイトル、説明、およびオプションの画像がテキストの左側に表示されます。

クラシック (テキストアナウンス) コンテンツカードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。従来の”画像(短報)カードについては、AndroidおよびiOSドキュメントを参照してください。

コントロール

コントロールカードには、基本プロパティがすべて含まれていますが、いくつかの重要な違いがあります。最も重要な点:

  • isControl プロパティはtrue であることが保証されている。
  • extras プロパティは空であることが保証されます。

コントロールカードの完全なリファレンスについては、[Android] および [iOS] のドキュメントを参照してください。

前提条件

コンテンツカードを使用する前に、Braze Swift SDKをアプリに統合する必要がある。その後、tvOSアプリの設定ステップを完了させる必要がある。

tvOSアプリを設定する

ステップ1:新しいiOSアプリを作成する

Braze で、[設定] > [アプリの設定] を選択し、[アプリの追加] を選択します。tvOS アプリの名前を入力し、tvOS ではなくiOS を選択し、アプリの追加を選択します。

ALT_TEXT.

ステップ2:アプリのAPIキーを取得する

アプリの設定で、新しいtvOSアプリを選択し、アプリのAPIキーをメモする。このキーを使って Xcode でアプリを設定します。

ALT_TEXT

ステップ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 つの独自のコンテンツカードタイプがあります。バナーキャプションイメージ、およびクラシック。各タイプはベースモデルから共通のプロパティを継承し、次の追加プロパティを持ちます。

ベースカードモデル

ベースカードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。

バナー

バナーカードはクリック可能なフルサイズの画像である。

バナーカードの完全なリファレンスについては、Android および iOS のドキュメント (現在は画像のみに名称変更) を参照してください。

キャプション付き画像

キャプション付き画像カードはクリック可能なフルサイズの画像で、説明文が添えられています。

キャプション付き画像カードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。

クラシック

クラシックカードには、タイトル、説明、およびオプションの画像がテキストの左側に表示されます。

クラシック (テキストアナウンス) コンテンツカードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。クラシック画像 (ショートニュース) カードの完全なリファレンスについては、Android および iOS のドキュメントを参照してください。

カードメソッド

以下の追加メソッドを使用して、アプリ内にカスタムコンテンツカードフィードを構築できます。

方法 説明
requestContentCardsRefresh() Braze SDKサーバーから最新のコンテンツカードを要求する。
getContentCards() Braze SDKからコンテンツカードを取得する。これでサーバーから最新のカードリストが返される。
logContentCardClicked(cardId) 指定されたコンテンツカードIDのクリックを記録する。この方法は、分析でのみ使用されます。
logContentCardImpression(cardId) 与えられたコンテンツカードIDのインプレッションを記録する。
logContentCardDismissed(cardId) 指定されたコンテンツカード ID が閉じられたことを記録します。
New Stuff!