コンテンツにスキップ

チュートリアル: プレースメントIDによるバナーの表示

このチュートリアルのサンプルコードに沿って、プレースメントIDを使用してバナーを表示します。詳細については、バナーを参照してください。

前提条件

このチュートリアルを始める前に、Braze SDKが最低バージョン要件を満たしていることを確認してください:

Web SDKのバナーを表示する

1. デバッグを有効にする(任意) {#1-enable-debugging-optional} {#1-enable-debugging-optional}

開発中のトラブルシューティングを容易にするために、デバッグの有効化を検討してください。

2. バナーイベントを購読する {#2-subscribe-to-banner-events} {#2-subscribe-to-banner-events}

Web SDK 7.0.0以降では、subscribeToBannersEvents() を使用してハンドラーを登録します。ハンドラーは、バナーキャッシュがリプレイ、再読み込み、または更新されたとき、あるいはエラーが発生したときに実行されます。ハンドラー内では、event.cacheSnapshot.banners からプレースメントを読み取ります。subscribeToBannersUpdates() は以前のパターンであり、7.0.0で非推奨になりました。イベントの全一覧については、イベント購読を参照してください。

3. バナーを挿入してコントロールグループを処理する {#3-insert-the-banner-and-handle-control-groups} {#3-insert-the-banner-and-handle-control-groups}

braze.insertBanner(banner, container) を使用して、バナーが返されたときにバナーを挿入します。レイアウトを整った状態に保つため、コントロールグループに含まれるバナー(例えば、isControl が true の場合)は非表示にするか折りたたんでください。

4. バナーを更新する {#4-refresh-your-banners} {#4-refresh-your-banners}

SDKを初期化した後、requestBannersRefresh(["global_banner", ...]) を呼び出して、各セッションの開始時にバナーが更新されるようにします。

また、この関数はいつでも呼び出して、後からバナープレースメントを更新することもできます。

5. バナー用のコンテナを追加する {#5-add-a-container-for-your-banner} {#5-add-a-container-for-your-banner}

HTMLに新しい <div> 要素を追加し、global-banner-container のようなバナーに関連する短い id を付けます。Brazeはこの <div> を使用して、バナーをページに挿入します。

Please rate this tutorial:

★ ★ ★ ★ ★

前提条件

このチュートリアルを始める前に、Braze SDKが最低バージョン要件を満たしていることを確認してください。

Android SDKのバナーを表示する

1. デバッグを有効にする(オプション) {#1-enable-debugging-optional}

開発中のトラブルシューティングを容易にするため、デバッグを有効にすることを検討してください。

2. バナーイベントを購読する {#2-subscribe-to-banner-events}

subscribeToBannersEvents() を使用して、バナーキャッシュが再生または更新されたときに実行されるハンドラーを登録します。BannersCacheSnapshot.banners は、プレースメントIDから Banner へのマップです。

受信できるイベントの一覧については、イベントの購読を参照してください。

3. banners.xml で BannerView を定義する {#3-define-bannerview-in-your-bannersxml}

banners.xml で、app:placementId="PLACEMENT_ID" を指定した <com.braze.ui.banners.BannerView> を宣言し、android:layout_height を 0dp に設定します。バナーがコンテンツの高さを報告するまで、ビューは高さゼロのままレイアウト内に残るため、バナーが読み込まれる前に画面に空のスペースが確保されることはありません。

更新後、SDKは該当するプレースメントのコンテンツが変更された場合にのみ BannerView を更新します。変更のない表示中のバナーはそのまま維持されます。

4. バナーの高さを更新する {#4-update-the-banner-height}

BannerView に heightCallback を設定します。コールバックはバナーの高さをdp単位で受け取ります。その高さはご自身でビューに適用してください。dpをピクセルに変換してから、レイアウトの高さを設定します。

バナーのHTMLはJavaScriptインターフェイスを通じて高さを報告するため、heightCallback はメインスレッド以外で実行されることがあります。変更がメインスレッドで実行されるよう、bannerView.post 内でビューを更新してください。

高さが 0.0 の場合は、表示するコンテンツがないことを意味します。SDKは、プレースメントにバナーがない場合、バナーがコントロールグループに含まれる場合、またはバナーが閉じられた場合に 0.0 を報告します。0.0 も適用することで、ビューが折りたたまれ、次のバナーのためにレイアウト内に残ります。

5. バナーの高さを制限する {#5-limit-the-banner-height}

適用する高さに上限を設けます。この例では、min(heightDp, 80.0) によってバナーの高さを80 dp以下に抑えています。

6. プレースメントを更新する {#6-refresh-your-placements}

Braze SDKを初期化した後、requestBannersRefresh(["PLACEMENT_ID"]) を呼び出して、そのプレースメントの最新のバナーコンテンツを取得します。

この呼び出しは既存のバナーキャッシュにマージされます。リクエストしたプレースメントIDのみが追加、更新、または削除されます。他のプレースメントのキャッシュ済みバナーはキャッシュに残り、元の有効期限で期限切れになります。リクエストしたプレースメントに対してサーバーがバナーを返さない場合、そのプレースメントはキャッシュから削除されます。

Please rate this tutorial:

★ ★ ★ ★ ★

Jetpack Composeを使用するには、アプリモジュールに com.braze:android-sdk-jetpack-compose アーティファクトを追加します。他のBraze Android SDK依存関係と同じバージョンを使用してください。

1. デバッグを有効にする(オプション)

開発中のトラブルシューティングを容易にするため、デバッグを有効にすることを検討してください。

2. バナーイベントを購読する

subscribeToBannersEvents を呼び出し、コンポーザブルが画面から外れたときに削除できるようサブスクライバーを保持しておきます。CacheReplay、CacheLoad、または DataUpdated にこのプレースメントが含まれる場合に hasBannerForPlacement を設定します。FeatureDisabled を伴う ErrorEvent の場合は、hasBannerForPlacement を false に設定します。

バナーイベントはバックグラウンドスレッドで届きます。UIの更新はメインスレッドにポストしてください。

各イベントが発生するタイミングについては、イベントの購読を参照してください。

3. プレースメントを更新する {#3-refresh-your-placements}

サブスクライバーを登録した後、requestBannersRefresh(["PLACEMENT_ID"]) を呼び出して、そのプレースメントの最新のバナーコンテンツを取得します。不要になったら、removeSingleSubscription でサブスクライバーを削除してください。

4. キャッシュに含まれた後にのみバナーを表示する {#4-only-show-the-banner-after-it-is-in-the-cache}

hasBannerForPlacement がtrueの場合にのみ Banner を表示します。キャッシュにそのプレースメントのバナーが含まれるまで、プレースメントはレイアウトに表示されません。

com.braze.jetpackcompose.banners.Banner をインポートしてください。他のComposeライブラリも独自の Banner コンポーザブルを定義しています。

5. バナーの高さを更新する {#5-update-the-banner-height}

Banner に heightCallback を渡します。コールバックはバナーの高さをdp単位で受け取ります。それを contentHeight に保存し、Modifier.height で適用します。Banner はサイズ設定をレイアウト側に委ねます。

heightCallback はメインスレッド以外で実行されることがあります。contentHeight を変更する前に、状態の更新をメインスレッドにポストしてください。

高さが 0.0 の場合は、表示するコンテンツがないことを意味し、UIに空のスペースが生じるのを防ぎます。SDKは、プレースメントにバナーがない場合、バナーがコントロールグループに含まれる場合、またはバナーが閉じられた場合に 0.0 を報告します。

6. バナーの高さを制限する {#6-limit-the-banner-height}

適用する高さに上限を設けます。この例では、min(contentHeight, 80.0) によってバナーの高さを80 dp以下に抑えています。

Please rate this tutorial:

★ ★ ★ ★ ★

前提条件

このチュートリアルを始める前に、Braze SDKが最低バージョン要件を満たしていることを確認してください:

Swift SDKのバナーを表示する

1. デバッグを有効にする(オプション) {#1-enable-debugging-optional} {#1-enable-debugging-optional}

開発中のトラブルシューティングを容易にするために、デバッグを有効にすることを検討してください。

2. バナーイベントをサブスクライブする {#2-subscribe-to-banner-events} {#2-subscribe-to-banner-events}

subscribeToEventsを使用して、バナーキャッシュがリプレイ、リロード、または更新されたとき、あるいはエラーが発生したときに実行されるハンドラーを登録します。cacheSnapshot.bannersはプレースメントIDからBannerへのディクショナリです。SDKはBraze.Cancellableがデアロケートされると購読をキャンセルするため、返されたBraze.Cancellableへの強参照を保持してください。

各イベントがいつ発火するかについては、イベント購読を参照してください。

3. プレースメントを更新する {#3-refresh-your-placements} {#3-refresh-your-placements}

購読を登録した後、requestBannersRefresh(placementIds: ["PLACEMENT_ID"])を呼び出して、各セッションの開始時にバナーコンテンツを更新します。

4. バナーを初期化しコールバックを提供する {#4-initialize-the-banner-and-provide-a-callback} {#4-initialize-the-banner-and-provide-a-callback}

BrazeオブジェクトとプレースメントIDを使用してBrazeBannerUI.BannerUIViewインスタンスを作成し、processContentUpdatesコールバックを提供して、バナーを表示し、提供されたコンテンツの高さに基づいて高さ制約を更新します。

5. Auto Layoutの制約を有効にする {#5-enable-auto-layout-constraints} {#5-enable-auto-layout-constraints}

デフォルトでバナービューを非表示にし、Auto Layout制約を有効にするためにautoresizingマスクの変換を無効にします。

6. コンテンツをアンカーし高さ制約を設定する {#6-anchor-content-and-set-height-constraints} {#6-anchor-content-and-set-height-constraints}

Auto Layoutを使用してメインコンテンツを上部にアンカーし、その後にバナービューを配置します。バナーのleading、trailing、bottomエッジをセーフエリアにピン留めし、コンテンツ読み込み時に更新される初期高さ制約0を設定します。

Please rate this tutorial:

★ ★ ★ ★ ★

1. デバッグを有効にする(オプション) {#1-enable-debugging-optional}

開発中のトラブルシューティングを容易にするために、デバッグを有効にすることを検討してください。

2. プレースメントを更新する {#2-refresh-your-placements} {#2-refresh-your-placements}

Braze SDKを初期化した後、requestBannersRefresh(placementIds: ["PLACEMENT_ID"])を呼び出して、各セッションの開始時にバナーコンテンツを更新します。

3. ビューコンポーネントを作成する {#3-create-a-view-component} {#3-create-a-view-component}

利用可能なバナーを表示し、必要に応じてメインアプリコンテンツを含む再利用可能なSwiftUIビューコンポーネントを作成します。

4. バナーイベントをサブスクライブする {#4-subscribe-to-banner-events} {#4-subscribe-to-banner-events}

.onAppear内で、subscribeToEventsを使用して、バナーキャッシュがリプレイ、リロード、または更新されるたびにhasBannerForPlacementを設定するハンドラーを登録します。SDKはBraze.Cancellableがデアロケートされると購読をキャンセルするため、返されたBraze.Cancellableをステート内に強参照として保持してください。

各イベントがいつ発火するかについては、イベント購読を参照してください。

5. 読み込み後にのみBannerViewを表示する {#5-only-show-bannerview-after-it-loads} {#5-only-show-bannerview-after-it-loads}

UI上の空白を避けるために、バナーが存在しSDKが初期化されている場合にのみBrazeBannerUI.BannerViewを表示します。

6. バナーの高さをダイナミックに更新する {#6-dynamically-update-banner-height} {#6-dynamically-update-banner-height}

processContentUpdatesコールバックを使用して、バナーのコンテンツの高さが読み込まれたらすぐに取得します。SwiftUIのステート(contentHeight)を更新し、提供された高さを使用して.frame(height:)制約を適用します。

7. バナーの高さを制限する {#7-limit-the-banner-height} {#7-limit-the-banner-height}

バナーが最大高さを超えないようにするために、.frame(height: min(contentHeight, 80))モディファイアを適用します。これにより、バナーのコンテンツに関係なく、UIの視覚的なバランスが保たれます。

Please rate this tutorial:

★ ★ ★ ★ ★
New Stuff!