Skip to content

コンテンツカードによって促進された

アプリケーションで使用できるさまざまなデータモデルやカード固有のプロパティなど、Braze 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 オプションに置かれる。

コンテンツカードの切り替えに関する詳細は、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をクリックします。

    新旧のタグ テンプレート s を&quot と比較したスクリーン。Update&quot を受け入れる。

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

    SDK版を変更するためのインプットフィールドを持つBraze初期化テンプレート

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

トラブルシューティング

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

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

Googleタグマネージャのデバッグツール

デバッグモードに入る

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

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

Braze初期化タグの概要ページには、どのタグがトリガーされたかを含むタグの概要が表示されます。

詳細ログの有効化

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

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

Braze 初期化タグサマリページで、Web SDKログを有効にするオプションが有効になっています。

前提条件

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

Googleフラグメント

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

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

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

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

基準カード型式

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

画像のみ

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

キャプション付き”画像

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

クラシック

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

カードメソッド

すべてのCardデータモデルオブジェクトは、ユーザーイベントを Braze サーバーに記録するための次の分析方法を提供します。

前提条件

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

コントロール者コンテキストの表示

デフォルトのコンテンツカード UI は、Braze SDK の BrazeUI ライブラリーから統合できます。braze インスタンスを使用して、コンテンツカードビューコントローラーを作成します。コンテンツカードの UI ライフサイクルをインターセプトして対応するには、BrazeContentCardUIViewControllerDelegateBrazeContentCardUI.ViewController のデリゲートとして実装します。

Swift SDKのBrazeUI ライブラリーには、navigation またはモーダル という2 つのデフォルトビューコントロールコンテキストがあります。つまり、アプリやサイトに数行のコードを追加することで、これらのコンテキストにおいてコンテンツカードを統合できます。「カスタマイズガイド」で説明されているように、どちらのビューにもカスタマイズとスタイル指定のオプションが用意されています。Braze の標準ビューコントローラーの代わりにカスタムコンテンツカードビューコントローラーを作成して、カスタマイズオプションをさらに増やすこともできます。例については、コンテンツカードの UI チュートリアルを参照してください。

ナビゲーション

ナビゲーションコントローラーは、ナビゲーションインターフェイス内の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 を呼び出します。カードデータの購読の詳細については、「分析のロギング」を参照してください。

カードメソッド

各カードは、カードの状態を管理するためのさまざまなメソッドを含む Context オブジェクトを使用して初期化されます。特定のカードオブジェクトの対応する状態プロパティを変更する場合は、これらのメソッドを呼び出します。

詳細については、Context クラスのドキュメントを参照してください。

前提条件

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

カードフィード

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

コンテンツカード

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

Flutter コンテンツカードについて

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 レイヤーのデータを受信するには、次のコードを追加して、ネイティブiOS レイヤーからコンテンツカードデータを転送します。

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

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

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

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

コンテンツカードデータモデルはReact Native SDKで利用可能で、以下のコンテンツカードカードタイプを提供する:画像のみキャプション付き画像クラシック。また、特別なコントロールカードタイプもあり、これは指定されたカードのコントロールグループに属するユーザーに返される。各タイプは、独自のプロパティに加えて、ベースモデルから共通のプロパティを継承する。

ベースカードモデル

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

ベースカードの完全なリファレンスについては、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 のクリックとインプレッションを記録します。

.NET MAUI コンテンツカードについて

Braze .NET MAUI (旧Xamarin) SDKには、コンテンツカードの使用を開始するためのデフォルト カード フィードが含まれています。Braze SDKに含まれるデフォルトのカードフィードは、ユーザーのコンテンツカードのすべてのアナリティクスのトラッキング、却下、レンダリングを処理する。

前提条件

この機能を使用する前に、.NET MAUI Braze SDKを統合する必要がある。

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

Braze .NET MAUI SDKには、基本モデルを共有する3 つの一意のコンテンツカードs カードタイプがあります。バナーキャプションイメージ、およびクラシック。各タイプはベースモデルから共通のプロパティを継承し、次の追加プロパティを持ちます。

基準カード型式

ベースカードの完全なリファレンスについては、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!