Braze SDKを統合する
Braze SDKの統合方法について説明します。各SDKは独自のGitHub公開リポジトリでホストされており、Brazeの機能をテストしたり、独自のアプリケーションと一緒に実装したりするために使用できる、完全にビルド可能なサンプルアプリが含まれています。詳しくは、参照資料、リポジトリ、サンプルアプリを参照してください。SDKに関する一般的な情報については、はじめに:統合の概要を参照してください。
ドキュメント内のミラーされたSDK READMEコンテンツについては、リポジトリガイドを参照してください。

SDKを統合した後、SDK認証を有効にすることで、不正なSDKリクエストを防止し、セキュリティをさらに強化できます。SDK認証は、Web、Android、Swift、React Native、Flutter、Unity、Cordova、.NET MAUI(Xamarin)、Expoで利用可能です。

SDKの初期化がHTTPS証明書の信頼エラー(例:SSLHandshakeExceptionでTrust anchor for certification path not found)で失敗する場合は、SDK証明書信頼エラーのトラブルシューティングを参照してください。
Web Braze SDKについて
Web Braze SDKを使用すると、分析データを収集し、リッチなアプリ内メッセージ、プッシュ通知、Content Cardsメッセージを Web ユーザーに表示できます。詳しくは、Braze JavaScriptリファレンスドキュメントを参照してください。

このガイドでは、Braze Web SDK 4.0.0+ のコードサンプルを使用します。最新の Web SDK バージョンにアップグレードするには、SDK アップグレードガイドを参照してください。
Web SDKを統合する
以下の方法でWeb Braze SDKを統合できます。その他のオプションについては、その他の統合方法を参照してください。
- コードベースの統合: お好みのパッケージマネージャーまたはBraze CDNを使用して、Web Braze SDKをコードベースに直接統合します。これにより、SDKの読み込みと設定を完全にコントロールできます。
- Google Tag マネージャー: サイトのコードを変更せずにWeb Braze SDKを統合できるノーコードソリューションです。詳しくは、Google Tag マネージャー with the Braze SDKを参照してください。

NPM統合方法の使用を推奨します。この方法には、SDKライブラリをWebサイトにローカル保存できること、広告ブロッカー拡張機能の影響を受けないこと、バンドラーサポートの一部として読み込み時間の短縮に貢献することなどのメリットがあります。
ステップ1:Brazeライブラリをインストールする
以下のいずれかの方法でBrazeライブラリをインストールできます。ただし、WebサイトでContent-Security-Policyを使用している場合は、続行する前にContent Security Policyを確認してください。

ほとんどの広告ブロッカーはBraze Web SDKをブロックしませんが、一部のより制限の厳しい広告ブロッカーでは問題が発生することが知られています。
サイトでNPMまたはYarnパッケージマネージャーを使用している場合は、Braze NPMパッケージを依存関係として追加できます。
Typescriptの型定義はv3.0.0から含まれています。2.xから3.xへのアップグレードに関する注意事項については、変更ログを参照してください。
1
2
3
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk
インストール後、通常の方法でライブラリをimportまたはrequireできます:
1
2
3
import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");
CDNでホストされているスクリプトを参照して、Braze Web SDKをHTMLに直接追加します。これにより、ライブラリが非同期で読み込まれます。

Safariのデフォルトのクロスサイトトラッキング防止設定により、CDN統合方法を使用するとバナーやContent Cardsなどのアプリ内メッセージタイプが表示されない場合があります。この問題を回避するには、NPM統合方法を使用してください。これにより、Safariがこれらのメッセージをクロスサイトトラフィックとして分類せず、すべてのサポートされているブラウザでWebユーザーがメッセージを表示できるようになります。
ステップ2:SDKを初期化する
Braze Web SDKをWebサイトに追加した後、Brazeダッシュボードの設定 > アプリ設定にあるAPIキーとSDKエンドポイントURLを使用してライブラリを初期化します。braze.initialize()のオプションの完全なリストやその他のJavaScriptメソッドについては、Braze JavaScriptドキュメントを参照してください。

Web SDKリクエストのカスタムドメインはサポートされていません: Web SDKのbaseUrlはBraze SDKエンドポイント(例:sdk.iad-05.braze.com)である必要があります。BrazeはCNAMEレコードを介した顧客所有ドメイン経由でのWeb SDKトラフィックのルーティングをサポートしていません。Web SDKリクエストを独自のドメインから発信する必要がある場合は、Brazeサポートにお問い合わせください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
enableLogging: false, // set to `true` for debugging
allowUserSuppliedJavascript: false, // set to `true` to support custom HTML messages
});
// Enable automatic display of in-app messages
// Required if you want in-app messages to display automatically when triggered
braze.automaticallyShowInAppMessages();
// if you use Content Cards
braze.subscribeToContentCardsUpdates(function(cards){
// cards have been updated
});
// optionally set the current user's external ID before starting a new session
// you can also call `changeUser` later in the session after the user logs in
if (isLoggedIn){
braze.changeUser(userIdentifier);
}
// `openSession` should be called last - after `changeUser` and `automaticallyShowInAppMessages`
braze.openSession();

アプリ内メッセージの表示: トリガーされたアプリ内メッセージを自動的に表示するには、braze.automaticallyShowInAppMessages()を呼び出す必要があります。この呼び出しがないと、アプリ内メッセージは自動的に表示されません。メッセージの表示を手動で管理する場合は、この呼び出しを削除し、代わりにbraze.subscribeToInAppMessage()を使用してください。詳しくは、自動トリガーの無効化を参照してください。
匿名ユーザーのセッションが欠落する場合のトラブルシューティング
「セッションが欠落」する動作が見られる場合、またはWebで匿名のままのユーザーのセッションをトラッキングできない場合は、統合で初期化時にbraze.openSession()を呼び出していることを確認してください。
- シナリオ: 匿名ユーザーはBraze IDを返すことができますが、セッションデータが空または欠落しています。
- 原因: 実装で
braze.openSession()が呼び出されていません。 - 解決方法: 初期化後(およびexternal IDを設定する場合は
braze.changeUser()の後)に、常にbraze.openSession()を呼び出してください。
詳しくは、ステップ2:SDKを初期化するを参照してください。

モバイルまたはWebデバイスの匿名ユーザーは、MAUにカウントされる場合があります。その結果、MAUカウントからこれらのユーザーを除外するために、SDKの読み込みまたは初期化を条件付きで行うことを検討してください。
前提条件
この連携方法を使用する前に、Google Tag マネージャーのアカウントとコンテナを作成する必要があります。
ステップ 1: タグテンプレートギャラリーを開く
Google Tag マネージャーでワークスペースを選択し、Templatesを選びます。Tag Templateペインで、Search Galleryを選択します。

ステップ 2: 初期化タグのテンプレートを追加する
テンプレートギャラリーで braze-inc を検索し、Braze Initialization Tagを選択します。

Add to workspace > Addを選択します。

ステップ 3: タグを設定する
Templatesセクションから、新しく追加したテンプレートを選択します。

鉛筆アイコンを選択して、Tag Configurationのドロップダウンを開きます。

必要な最低限の情報を入力します。
| フィールド | 説明 |
|---|---|
| API Key | Braze APIキー。BrazeダッシュボードのSettings > App Settingsにあります。 |
| API Endpoint | RESTエンドポイントのURLです。エンドポイントは、インスタンスのBraze URLによって異なります。 |
| SDK Version | 変更ログに記載されている最新のWeb Braze SDKの MAJOR.MINOR バージョンです。たとえば、最新バージョンが 4.1.2 の場合、4.1 と入力します。詳細については、SDKのバージョン管理についてを参照してください。 |
追加の初期化設定を行うには、Braze Initialization Optionsを選択し、必要なオプションを選びます。

ステップ 4: 初期化オプションを選択する
Braze Initialization Tagは以下のオプションを公開しています。これらのほとんどはWeb SDKの InitializationOptionsに直接対応しており、一部はタグが初期化時に呼び出すWeb SDKメソッドに対応しています。連携のニーズに合うオプションを選択してください。
| GTMオプション | Web SDKの設定またはメソッド | 説明 |
|---|---|---|
| Allow HTML In-App Messages | allowUserSuppliedJavascript |
HTMLアプリ内メッセージ、バナー、およびユーザー提供のJavaScriptクリックアクションを有効にします。カスタムHTMLを使用するHTMLアプリ内メッセージやバナーに必須です。HTMLとJavaScriptのコンテンツを信頼できる場合にのみ有効にしてください。ユーザー提供のJavaScript実行を許可するためです。 |
| App Version Number | appVersion, appVersionNumber |
セグメンテーション用のアプリバージョン(例: 1.2.3.4)。 |
| Automatically Open New Session | braze.openSession() |
このメソッドを呼び出すことで、SDKの初期化後に新しいセッションを自動的に開きます。 |
| Automatically show new in app messages | braze.automaticallyShowInAppMessages() |
初期化後にこのメソッドを呼び出すことで、サーバーから新しいアプリ内メッセージが届いた際に自動的に表示します。 |
| Disable Automatic プッシュトークン Maintenance | disablePushTokenMaintenance |
新しいセッションでSDKがプッシュトークンをBrazeバックエンドと同期するのを停止します。 |
| Disable Automatic Service Worker Registration | manageServiceWorkerExternally |
サービスワーカーを自分で登録・制御する場合に使用します。 |
| Disable Cookies | noCookies |
ユーザー/セッションデータにCookieではなくlocalStorageを使用します。クロスサブドメイン認識を防ぎます。 |
| Disable Font Awesome | doNotLoadFontAwesome |
SDKがCDNからFont Awesomeを読み込むのを防ぎます。サイトに独自のFont Awesomeがある場合に使用します。 |
| Enable SDK Authentication | enableSdkAuthentication |
SDK認証を有効にします。 |
| Enable Web SDK Logging | enableLogging |
デバッグ用のコンソールログを有効にします。本番環境では削除してください。 |
| Minimum Interval Between Triggered Messages | minimumIntervalBetweenTriggerActionsInSeconds |
トリガーアクション間の最小秒数(デフォルト: 30)。 |
| Open Cards in New Tab | openCardsInNewTab |
デフォルトのフィードUIを使用している場合、Content Cardsのリンクを新しいタブで開きます。 |
| Service Worker Location | serviceWorkerLocation |
サービスワーカーファイルのカスタムパス(デフォルト: /service-worker.js)。 |
| Session Timeout (seconds) | sessionTimeoutInSeconds |
セッションタイムアウト(秒単位)(デフォルト: 1800)。 |

Google Tag マネージャーのBraze Initialization Tagを使用する際にカスタムHTMLアプリ内メッセージを有効にするには、Braze Initialization OptionsでAllow HTML In-App Messagesを選択します。このチェックボックスは braze.initialize() の allowUserSuppliedJavascript 初期化オプションに対応し、true に設定します。Google Tag マネージャーのBraze Initialization Tagは、オプション名ではなくこのラベルを使用します。
GTMテンプレートで公開されていないオプション(contentSecurityNonce、localization、devicePropertyAllowlist など)については、代わりにランタイム初期化を使用してください。
ステップ 5: すべてのページでトリガーされるように設定する
初期化タグはサイトのすべてのページで実行する必要があります。これにより、Braze SDKメソッドを使用し、Webプッシュの分析を記録できるようになります。

タグの順序付け: Braze Initialization Tagは、Braze SDKメソッドを呼び出す他のすべてのタグ(braze.getUser() や braze.logCustomEvent() など)よりも先に発火する必要があります。SDKが初期化される前にカスタムイベント、ユーザー属性、またはその他のBrazeメソッド呼び出しが発火すると、Uncaught TypeError: Cannot read properties of undefined (reading 'getUser') のようなエラーが発生する可能性があります。適切な順序を確保するには、Braze Initialization Tagをセットアップタグとして設定するか、GTMのタグ順序付け機能を使用して最初に発火するようにしてください。詳細については、Brazeアクションタグのタグ順序付けを参照してください。
ステップ 6: 連携を確認する
以下のいずれかの方法で連携を確認できます。
- オプション 1: Google Tag マネージャーのデバッグツールを使用して、設定したページやイベントでBraze Initialization Tagが正しくトリガーされているか確認できます。
- オプション 2: Webページからのネットワークリクエストを確認し、Brazeへのリクエストが行われているか確認します。さらに、グローバルの
window.brazeライブラリが定義されていることを確認してください。
ボットトラフィックのフィルタリング
MAUにはボットユーザーの割合が含まれる場合があり、月間アクティブユーザー数が水増しされることがあります。Braze Web SDKには、検索エンジンのボットやソーシャルメディアのプレビューボットなど、一般的なWebクローラーの検出機能が組み込まれていますが、SDKの更新だけでは常にすべての新しいボットを検出できるわけではないため、ボットを検出するための堅牢なソリューションを積極的に導入することが特に重要です。
SDK側のボット検出の限界
Web SDKには、既知のクローラーを除外する基本的なユーザーエージェントベースのボット検出機能が組み込まれています。しかし、この方法には限界があります。
- 新しいボットが次々と出現する: AI企業やその他の関係者は、検出を回避するために偽装する可能性のある新しいボットを定期的に作成しています。
- ユーザーエージェントの偽装: 高度なボットは、正当なブラウザーのユーザーエージェントを模倣できます。
- カスタムボット: 技術的知識のないユーザーでも、大規模言語モデル(LLM)を使って簡単にボットを作成できるようになり、ボットの挙動は予測不能になっています。
ボットフィルタリングの実装

以下に述べるソリューションは一般的な提案です。ボットフィルタリングのロジックを、独自の環境とトラフィックパターンに合わせて調整してください。
最も堅牢なソリューションは、Braze SDKを初期化する前に独自のボットフィルタリングロジックを実装することです。一般的な手法には以下が含まれます。
ユーザー操作を必須にする
ユーザーがCookie同意バナーの承諾、スクロール、クリックなどの意味のある操作を行うまで、SDKの初期化を遅らせることを検討してください。この手法は実装が容易な場合が多く、ボットトラフィックのフィルタリングに非常に効果的です。

SDKの初期化をユーザー操作まで遅らせると、バナーやContent Cardsもその操作が行われるまで表示されない可能性があります。
カスタムボット検出
特定のボットトラフィックパターンに基づいてカスタム検出を実装します。例えば:
- トラフィックで識別したパターンについて、ユーザーエージェント文字列を分析する
- ヘッドレスブラウザーの指標を確認する
- サードパーティのボット検出サービスを利用する
- サイト固有の行動シグナルを監視する
条件付き初期化の例:
1
2
3
4
5
6
7
8
// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE"
});
braze.automaticallyShowInAppMessages();
braze.openSession();
}
ベストプラクティス
- MAUデータとWebトラフィックのパターンを定期的に分析し、新たなボットの行動を識別してください。
- ボットフィルタリングが正当なユーザーのトラッキングを妨げないよう、徹底的にテストしてください。
- 環境内で観察されるボットのトラフィックパターンに基づいて、フィルタリングロジックを更新してください。
オプションの設定
ロギング
ロギングを素早く有効にするには、Webサイトの URL にパラメーターとして ?brazeLogging=true を追加します。または、基本ロギングやカスタムロギングを有効にすることもできます。すべてのプラットフォームにわたる一元的な概要については、詳細ログを参照してください。
基本ロギング
SDKが初期化される前に、基本的なデバッグメッセージをJavaScriptコンソールに記録するには、enableLogging を使用します。
1
enableLogging: true
メソッドは以下のようになります:
1
2
3
4
5
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
enableLogging: true
});
braze.openSession();
SDKが初期化された後に、基本的なデバッグメッセージをJavaScriptコンソールに記録するには、braze.toggleLogging() を使用します。メソッドは以下のようになります:
1
2
3
4
5
6
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();

カスタムロギング
カスタムデバッグメッセージをJavaScriptコンソールに記録するには、setLogger を使用します。基本ログとは異なり、これらのログはユーザーには表示されません。
1
setLogger(loggerFunction: (message: STRING) => void): void
STRING を単一の文字列パラメーターとしてメッセージに置き換えます。メソッドは以下のようになります:
1
2
3
4
5
braze.initialize('API-KEY');
braze.setLogger(function(message) {
console.log("Braze Custom Logger: " + message);
});
braze.openSession();
SDKのアップグレード

このガイドでは、Braze Web SDK 4.0.0+ のコードサンプルを使用します。最新の Web SDK バージョンにアップグレードするには、SDK アップグレードガイドを参照してください。
BrazeのコンテンツデリバリーネットワークからBraze Web SDKを参照している場合(例:https://js.appboycdn.com/web-sdk/a.a/braze.min.js、デフォルトの統合手順で推奨されています)、ユーザーがサイトを更新すると、マイナーアップデート(バグ修正や後方互換性のある機能、この例ではa.a.aからa.a.zのバージョン)が自動的に適用されます。
ただし、メジャーチェンジがリリースされた場合は、破壊的変更が統合に影響しないよう、Braze Web SDKを手動でアップグレードする必要があります。また、SDKをダウンロードしてご自身でホストしている場合は、バージョン更新が自動的に行われないため、最新の機能やバグ修正を受け取るには手動でアップグレードする必要があります。
最新リリースの情報は、お好みのRSSリーダーやサービスでリリースフィードをフォローすることで確認できます。また、Web SDKのリリース履歴の全記録については、変更ログを参照してください。Braze Web SDKをアップグレードするには、以下の手順を行います。
https://js.appboycdn.com/web-sdk/[OLD VERSION NUMBER]/braze.min.jsのバージョン番号を変更するか、パッケージマネージャーの依存関係を更新して、Brazeライブラリのバージョンを更新します。- Webプッシュを統合している場合は、サイト上のService Workerファイルを更新します。デフォルトでは、このファイルはサイトのルートディレクトリの
/service-worker.jsに配置されていますが、統合によってはカスタマイズされている場合があります。Service Workerファイルをホストするには、ルートディレクトリにアクセスする必要があります。
正常に機能させるためには、これら2つのファイルを連携して更新する必要があります。
その他の統合方法
Accelerated Mobile Pages (AMP)
詳細を見る
ステップ1:AMP Webプッシュスクリプトを含める
以下の非同期スクリプトタグをheadに追加します:
1
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>
ステップ2:購読ウィジェットを追加する
ユーザーがプッシュの購読および購読解除を行えるウィジェットをHTMLのbodyに追加します。
1
2
3
4
5
6
7
8
9
<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>
<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>
ステップ3:helper-iframeとpermission-dialogを追加する
AMP Webプッシュコンポーネントは、プッシュ購読を処理するためのポップアップを作成するので、この機能を有効にするには以下のヘルパーファイルをプロジェクトに追加する必要があります:
ステップ4:サービスワーカーファイルを作成する
Webサイトのルートディレクトリにservice-worker.jsファイルを作成し、以下のスニペットを追加します:
ステップ5:AMP Webプッシュ HTML要素を設定する
以下のamp-web-push HTML要素をHTMLのbodyに追加します。apiKeyとbaseUrlをクエリパラメータとしてservice-worker-URLに追加する必要がある点に注意してください。
1
2
3
4
5
6
7
<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>
Asynchronous Module Definition (AMD)
サポートの無効化
サイトがRequireJSやその他のAMDモジュールローダーを使用しているが、このリストの他のオプションを通じてBraze Web SDKを読み込みたい場合は、AMDサポートを含まないバージョンのライブラリを読み込むことができます。このバージョンのライブラリは以下のCDNから読み込めます:
モジュールローダー
RequireJSやその他のAMDモジュールローダーを使用する場合は、ライブラリのコピーをセルフホスティングし、他のリソースと同様に参照することを推奨します:
1
2
3
4
5
6
require(['path/to/braze.min.js'], function(braze) {
braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
// Required if you want in-app messages to display automatically
braze.automaticallyShowInAppMessages();
braze.openSession();
});
Electron
ElectronはWebプッシュ通知を公式にはサポートしていません(このGitHubイシューを参照)。Brazeではテストされていませんが、試すことができる他のオープンソースの回避策があります。
Jestフレームワーク
Jestを使用する際、SyntaxError: Unexpected token 'export'のようなエラーが表示されることがあります。これを修正するには、package.jsonの設定を調整してBraze SDKを無視するようにします:
1
2
3
4
5
"jest": {
"transformIgnorePatterns": [
"/node_modules/(?!@braze)"
]
}
SSRフレームワーク
Web SDKはブラウザ環境で動作します。SSRフレームワークでは、サーバーがSDKコードを実行しないように、クライアント専用コンポーネントでBrazeを初期化します。
フレームワークに依存しないダイナミックインポート
このセクションにフレームワークが記載されていない場合は、クライアント専用のライフサイクルフックからBrazeをダイナミックインポートできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// MyComponent/braze-exports.js
// Export the parts of the SDK that you need.
export { initialize, openSession } from "@braze/web-sdk";
// MyComponent/MyComponent.js
useEffect(() => {
import("./braze-exports.js").then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
webpackを使用している場合は、特定のSDKエクスポートのみをダイナミックインポートできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
// MyComponent.js
useEffect(() => {
import(
/* webpackExports: ["initialize", "openSession"] */
"@braze/web-sdk"
).then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
Next.jsとRemix用の共有フック
再利用可能なuseBrazeフックを作成し、アプリのルート付近で呼び出します。
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
29
30
31
32
33
34
35
// hooks/useBraze.ts
import { useEffect, useRef } from "react";
export function useBraze() {
const didInit = useRef(false);
useEffect(() => {
if (didInit.current) {
return;
}
didInit.current = true;
import("@braze/web-sdk")
.then((braze) => {
const initialized = braze.initialize("YOUR-API-KEY-HERE", {
// Use your Braze Web SDK endpoint, such as sdk.iad-01.braze.com.
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: false,
});
if (!initialized) {
return;
}
// Optional: Identify signed-in users before opening a session.
// braze.changeUser("external-id");
// Optional: Automatically display in-app messages.
// braze.automaticallyShowInAppMessages();
braze.openSession();
})
.catch((error) => {
console.error("Unable to load Braze SDK:", error);
});
}, []);
}
Next.js(App Router)
クライアントコンポーネントでuseBrazeを呼び出し、アプリをラップします。
1
2
3
4
5
6
7
8
9
10
// app/components/AppRoot.tsx
"use client";
import type { ReactNode } from "react";
import { useBraze } from "../hooks/useBraze";
export function AppRoot({ children }: { children: ReactNode }) {
useBraze();
return <>{children}</>;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// app/layout.tsx
import type { ReactNode } from "react";
import { AppRoot } from "./components/AppRoot";
export default function RootLayout({
children,
}: {
children: ReactNode;
}) {
return (
<html lang="en">
<body>
<AppRoot>{children}</AppRoot>
</body>
</html>
);
}
Next.js(Pages Router)
カスタムアプリコンポーネントの先頭でuseBrazeを呼び出します。
1
2
3
4
5
6
7
8
9
10
11
// pages/_app.tsx
import type { AppProps } from "next/app";
import { useBraze } from "../hooks/useBraze";
export default function App({ Component, pageProps }: AppProps) {
useBraze();
return (
<Component {...pageProps} />
);
}
Remix
ルートルートコンポーネントの先頭でuseBrazeを呼び出します。
ローカルのRemix検証例を実行するには、PORT=4013 npm run devを使用します。
1
2
3
4
5
6
7
8
9
// app/root.tsx
import { Outlet } from "@remix-run/react";
import { useBraze } from "./hooks/useBraze";
export default function App() {
useBraze();
return <Outlet />;
}
イベントのログとユーザーの更新
useBrazeがアプリのルートでSDKを初期化した後、他のクライアントコンポーネントからBrazeのメソッドを呼び出すことができます。一般的なパターンは、onClickやonSubmitなどのユーザーアクション内でメソッドを呼び出すことです。この例では、SDKメソッドはファイルの先頭ではなくクリックハンドラー内で読み込まれます。これにより、Web SDKをサーバーコードから分離し、そのアクションに必要なものだけを読み込みます。webpackExportsコメントは、どのメソッドを含めるかをwebpackに指示するため、バンドルサイズが小さくなります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// app/components/BuyButton.tsx
"use client";
export function BuyButton() {
const handleClick = async () => {
const { logCustomEvent, logPurchase, getUser } = await import(
/* webpackExports: ["logCustomEvent", "logPurchase", "getUser"] */
"@braze/web-sdk"
);
getUser()?.setCustomUserAttribute("last_purchase_date", "2026-05-04");
logCustomEvent("clicked_buy", { source: "product_page" });
logPurchase("sku_123", 19.99, "USD");
};
return <button onClick={handleClick}>Buy</button>;
}
この例は、ユーザーがBuyをクリックしたときにアクティビティをログするBuyButtonコンポーネントを示しています。まず、クリック時にlogCustomEvent、logPurchase、getUserのみをインポートします。次に、ユーザー属性を更新し、カスタムイベントをログし、購入をログします。このパターンにより、初期化をuseBrazeに集中させつつ、任意のクライアントコンポーネントから意味のあるアクションをトラッキングできます。
RemixとViteを使用していて、パッケージルートインポートがランタイムで失敗する場合は、既存のViteの回避策を使用してください。詳細については、Viteを参照してください。
利用可能なメソッドの完全なリストについては、Braze JavaScriptリファレンスドキュメントを参照してください。
Tealium iQ
Tealium iQは、基本的なターンキーのBraze統合を提供しています。統合を設定するには、Tealiumタグ管理インターフェイスでBrazeを検索し、ダッシュボードからWeb SDK APIキーを入力します。
詳細やTealiumの設定サポートについては、統合ドキュメントを確認するか、Tealiumのアカウントマネージャーにお問い合わせください。
Vite
Viteを使用していて、循環依存関係に関する警告やUncaught TypeError: Class extends value undefined is not a constructor or nullが表示される場合は、Braze SDKをViteの依存関係の検出から除外する必要があるかもしれません:
1
2
3
optimizeDeps: {
exclude: ['@braze/web-sdk']
},
その他のタグマネージャー
Brazeは、カスタムHTMLタグ内で統合手順に従うことで、他のタグ管理ソリューションとも互換性がある場合があります。これらのソリューションの評価についてサポートが必要な場合は、Brazeの担当者にお問い合わせください。
Android SDKの統合
ステップ1:Gradleビルド設定を更新する
プロジェクトのリポジトリ設定(settings.gradle、settings.gradle.kts、またはトップレベルのbuild.gradleなど)で、リポジトリのリストにmavenCentral()を追加します。この構文はGroovyとKotlin DSLの両方で同じです。
1
2
3
repositories {
mavenCentral()
}
次に、Brazeを依存関係に追加します。以下の例では、SDK_VERSIONをお使いのAndroid Braze SDKの現在のバージョンに置き換えてください。バージョンの全リストについては、変更ログを参照してください。

- Kotlin DSL(
build.gradle.kts)の場合は、implementation("...")構文を使用してください。 - Groovy(
build.gradle)の場合は、implementation '...'構文を使用してください。 - バージョンカタログの場合は、
gradle/libs.versions.tomlファイルにエントリを追加し、生成されたアクセサーを使用して参照してください。
Braze UIコンポーネントを使用する予定がない場合は、以下を依存関係に追加してください。
1
2
3
4
dependencies {
implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
gradle/libs.versions.tomlファイルに以下を追加します:
1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
次に、build.gradleまたはbuild.gradle.ktsファイルに以下の依存関係を追加します。この構文はGroovyとKotlin DSLの両方で同じです。
1
2
3
4
dependencies {
implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
Braze UIコンポーネントを使用する予定がある場合は、以下を依存関係に追加してください。
1
2
3
4
dependencies {
implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
gradle/libs.versions.tomlファイルに以下を追加します:
1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
次に、build.gradleまたはbuild.gradle.ktsファイルに以下の依存関係を追加します。この構文はGroovyとKotlin DSLの両方で同じです。
1
2
3
4
dependencies {
implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
ステップ2:braze.xmlを設定する

2019年12月以降、カスタムエンドポイントの新規発行は行われていません。既存のカスタムエンドポイントをお持ちの場合は、引き続き使用できます。詳細については、利用可能なエンドポイントの一覧 を参照してください。
プロジェクトのres/valuesフォルダーにbraze.xmlファイルを作成します。特定のデータクラスターを使用している場合、または既存のカスタムエンドポイントがある場合は、braze.xmlファイルでエンドポイントも指定する必要があります。
ファイルの内容は、以下のコードスニペットのようになります。YOUR_APP_IDENTIFIER_API_KEYをBrazeダッシュボードの設定の管理ページにある識別子に置き換えてください。dashboard.braze.comにログインして、クラスターアドレスを確認してください。
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
ステップ3:AndroidManifest.xmlにパーミッションを追加する
次に、AndroidManifest.xmlに以下のパーミッションを追加します:
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Android Mのリリースにより、Androidはインストール時のパーミッションモデルからランタイムパーミッションモデルに切り替わりました。ただし、これらのパーミッションはどちらも通常のパーミッションであり、アプリマニフェストに記載されていれば自動的に付与されます。詳細については、Androidのパーミッションドキュメントを参照してください。
ステップ4:遅延初期化を有効にする(オプション)
遅延初期化を使用するには、以下の最小Braze SDKバージョンが必要です:

遅延初期化が有効な間は、すべてのネットワーク接続がキャンセルされ、SDKからBrazeサーバーへのデータ送信が行われません。
ステップ4.1:braze.xmlを更新する
遅延初期化はデフォルトで無効になっています。有効にするには、以下のいずれかのオプションを使用してください:
プロジェクトのbraze.xmlファイルで、com_braze_enable_delayed_initializationをtrueに設定します。
1
<bool name="com_braze_enable_delayed_initialization">true</bool>
ランタイムで遅延初期化を有効にするには、以下のメソッドを使用します。
1
Braze.enableDelayedInitialization(context);
1
Braze.enableDelayedInitialization(context)

遅延初期化が有効な状態でプッシュ通知にディープリンクアクションが含まれている場合、そのディープリンクは解決されません。
ステップ4.2:プッシュ分析を設定する(オプション)
遅延初期化が有効な場合、プッシュ分析はデフォルトでキューに入れられます。ただし、プッシュ分析を明示的にキューに入れるか、ドロップするかを選択できます。
明示的にキューに入れる
プッシュ分析を明示的にキューに入れるには、以下のいずれかのオプションを選択してください:
braze.xmlファイルで、com_braze_delayed_initialization_analytics_behaviorをQUEUEに設定します:
1
<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>
Braze.enableDelayedInitialization()メソッドにQUEUEを追加します:
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
ドロップする
プッシュ分析をドロップするには、以下のいずれかのオプションを選択してください:
braze.xmlファイルで、com_braze_delayed_initialization_analytics_behaviorをDROPに設定します:
1
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>
Braze.enableDelayedInitialization()メソッドにDROPを追加します:
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)
ステップ4.3:SDKを手動で初期化する
選択した遅延期間の後、Braze.disableDelayedInitialization()メソッドを使用してSDKを手動で初期化します。
1
Braze.disableDelayedInitialization(context);
1
Braze.disableDelayedInitialization(context)
ステップ5:ユーザーセッショントラッキングを有効にする
ユーザーセッショントラッキングを有効にすると、openSession()、closeSession()、ensureSubscribedToInAppMessageEvents()、およびInAppMessageManagerの登録が自動的に処理されます。
アクティビティライフサイクルコールバックを登録するには、ApplicationクラスのonCreate()メソッドに以下のコードを追加してください。
1
2
3
4
5
6
7
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
}
1
2
3
4
5
6
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
}
利用可能なパラメーターのリストについては、BrazeActivityLifecycleCallbackListenerを参照してください。
セッショントラッキングのテスト

テスト中に問題が発生した場合は、詳細ログを有効にし、logcatを使用してアクティビティ内のopenSessionおよびcloseSession呼び出しの欠落を検出してください。
- BrazeでOverviewに移動し、アプリを選択してから、Display Data ForドロップダウンでTodayを選択します。

- アプリを開き、Brazeダッシュボードを更新します。メトリクスが1増加していることを確認してください。
- アプリ内を移動し、Brazeに記録されたセッションが1つだけであることを確認してください。
- アプリをバックグラウンドに送り、少なくとも10秒間待ってからフォアグラウンドに戻します。新しいセッションが記録されたことを確認してください。
オプション設定
ランタイム設定
braze.xmlファイルではなくコード内でBrazeオプションを設定するには、ランタイム設定を使用します。両方の場所に値が存在する場合、ランタイム値が使用されます。すべての必須設定がランタイムで提供された後は、braze.xmlファイルを削除できます。
以下の例では、ビルダーオブジェクトを作成し、Braze.configure()に渡しています。利用可能なランタイムオプションの一部のみが表示されています—完全なリストについてはKDocを参照してください。
1
2
3
4
5
6
7
8
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
6
7
8
val brazeConfig = BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build()
Braze.configure(this, brazeConfig)

Google Advertising ID
Google Advertising ID(GAID)は、Google Play サービスが提供する、広告用のオプションのユーザー固有、匿名、一意、リセット可能なIDです。GAIDにより、ユーザーは識別子をリセットしたり、Google Playアプリ内のインタレストベース広告をオプトアウトしたりでき、開発者はアプリの収益化を続けるためのシンプルで標準的なシステムを利用できます。
Google Advertising IDはBraze SDKによって自動的に収集されないため、Braze.setGoogleAdvertisingId()メソッドを使用して手動で設定する必要があります。
1
2
3
4
5
6
7
8
9
10
11
new Thread(new Runnable() {
@Override
public void run() {
try {
AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
suspend fun fetchAndSetAdvertisingId(
context: Context,
scope: CoroutineScope = GlobalScope
) {
scope.launch(Dispatchers.IO) {
try {
val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
Braze.getInstance(context).setGoogleAdvertisingId(
idInfo.id,
idInfo.isLimitAdTrackingEnabled
)
} catch (e: Exception) {
e.printStackTrace()
}
}
}

GoogleはAdvertising IDをUIスレッド以外で収集することを要求しています。
位置情報の追跡
Brazeの位置情報収集を有効にするには、braze.xmlファイルでcom_braze_enable_location_collectionをtrueに設定します:
1
<bool name="com_braze_enable_location_collection">true</bool>

Braze Android SDKバージョン3.6.0以降、Brazeの位置情報収集はデフォルトで無効になっています。
ログ出力
デフォルトでは、Braze Android SDKのログレベルはINFOに設定されています。ログを抑制したり、VERBOSE、DEBUG、WARNなどの別のログレベルを設定したりできます。
ログの有効化
アプリの問題をトラブルシューティングしたり、Brazeサポートとのやり取りの対応時間を短縮するために、SDKの詳細ログを有効にできます。詳細ログをBrazeサポートに送信する際は、アプリの起動直後から開始し、問題が発生した後まで十分に記録してください。概要については、詳細ログを参照してください。ログ出力の読み方については、詳細ログの読み方を参照してください。
詳細ログは開発環境でのみ使用することを想定しているため、アプリをリリースする前に無効にしてください。

Application.onCreate()内の他の呼び出しよりも前に詳細ログを有効にして、ログをできるだけ完全にしてください。
アプリ内で直接ログを有効にするには、アプリケーションのonCreate()メソッドで他のメソッドよりも前に以下を追加します。
1
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
1
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL
MIN_LOG_LEVELを、最小ログレベルとして設定したいログレベルの定数に置き換えてください。設定したMIN_LOG_LEVEL以上(>=)のレベルのログはすべて、AndroidのデフォルトのLogメソッドに転送されます。設定したMIN_LOG_LEVEL未満(<)のログはすべて破棄されます。
| 定数 | 値 | 説明 |
|---|---|---|
VERBOSE |
2 | デバッグと開発のための最も詳細なメッセージをログに記録します。 |
DEBUG |
3 | デバッグと開発のための説明的なメッセージをログに記録します。 |
INFO |
4 | 一般的なハイライトのための情報メッセージをログに記録します。 |
WARN |
5 | 潜在的に有害な状況を特定するための警告メッセージをログに記録します。 |
ERROR |
6 | アプリケーションの障害や重大な問題を示すエラーメッセージをログに記録します。 |
ASSERT |
7 | 開発中に条件がfalseの場合のアサーションメッセージをログに記録します。 |
たとえば、以下のコードはログレベル2、3、4、5、6、7をLogメソッドに転送します。
1
BrazeLogger.setLogLevel(Log.VERBOSE);
1
BrazeLogger.logLevel = Log.VERBOSE
braze.xmlでログを有効にするには、ファイルに以下を追加します:
1
<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>
MIN_LOG_LEVELを、最小ログレベルとして設定したいログレベルの値に置き換えてください。設定したMIN_LOG_LEVEL以上(>=)のレベルのログはすべて、AndroidのデフォルトのLogメソッドに転送されます。設定したMIN_LOG_LEVEL未満(<)のログはすべて破棄されます。
| 定数 | 値 | 説明 |
|---|---|---|
VERBOSE |
2 | デバッグと開発のための最も詳細なメッセージをログに記録します。 |
DEBUG |
3 | デバッグと開発のための説明的なメッセージをログに記録します。 |
INFO |
4 | 一般的なハイライトのための情報メッセージをログに記録します。 |
WARN |
5 | 潜在的に有害な状況を特定するための警告メッセージをログに記録します。 |
ERROR |
6 | アプリケーションの障害や重大な問題を示すエラーメッセージをログに記録します。 |
ASSERT |
7 | 開発中に条件がfalseの場合のアサーションメッセージをログに記録します。 |
たとえば、以下のコードはログレベル2、3、4、5、6、7をLogメソッドに転送します。
1
<integer name="com_braze_logger_initial_log_level">2</integer>
詳細ログの検証
ログがVERBOSEに設定されていることを確認するには、ログのどこかにV/Brazeが表示されているかチェックします。表示されていれば、詳細ログが正常に有効化されています。例:
1
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started
ログの抑制
Braze Android SDKのすべてのログを抑制するには、アプリケーションのonCreate()メソッドで他のメソッドよりも前にログレベルをBrazeLogger.SUPPRESSに設定します。
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)
複数のAPIキー
複数のAPIキーの最も一般的なユースケースは、デバッグとリリースのビルドバリアント用にAPIキーを分離することです。
ビルドで複数のAPIキーを簡単に切り替えるには、関連するビルドバリアントごとに別々のbraze.xmlファイルを作成することを推奨します。ビルドバリアントは、ビルドタイプとプロダクトフレーバーの組み合わせです。デフォルトでは、新しいAndroidプロジェクトはdebugとreleaseのビルドタイプで設定されており、プロダクトフレーバーはありません。
関連するビルドバリアントごとに、src/<build variant name>/res/values/ディレクトリに新しいbraze.xmlを作成します。ビルドバリアントがコンパイルされると、新しいAPIキーが使用されます。
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>

アプリ内メッセージの排他的TalkBack
Androidアクセシビリティガイドラインに準拠して、Braze Android SDKはデフォルトでAndroid TalkBackを提供しています。アプリのタイトルバーやナビゲーションなど他の画面要素を含めず、アプリ内メッセージの内容のみが読み上げられるようにするには、TalkBackの排他モードを有効にできます。
アプリ内メッセージの排他モードを有効にするには:
1
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
1
2
3
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
1
2
3
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());
R8とProGuard
コード圧縮の設定は、Brazeインテグレーションに自動的に含まれます。
Brazeコードを難読化するクライアントアプリは、Brazeがスタックトレースを解釈するためにリリースマッピングファイルを保存する必要があります。すべてのBrazeコードを保持し続けたい場合は、ProGuardファイルに以下を追加します:
1
2
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }
Swift SDKの統合
Braze Swift SDKは、Swift Package マネージャー(SPM)、CocoaPods、または手動での統合方法を使って統合しカスタマイズできます。各種SDKシンボルに関する詳細情報は、Braze Swiftリファレンスドキュメントを参照してください。
前提条件
始める前に、最新のBraze Swift SDKバージョンがお使いの環境をサポートしていることを確認してください。
ステップ1:Braze Swift SDKをインストールする
Braze Swift SDKのインストールには、Swift Package マネージャー(SwiftPM)またはCocoaPodsの使用を推奨します。あるいは、SDKを手動でインストールすることもできます。
ステップ1.1:SDKバージョンのインポート
プロジェクトを開き、プロジェクトの設定に移動します。Swift Packagesタブを選択し、パッケージリストの下にある追加ボタンをクリックします。


バージョン7.4.0以降、Braze Swift SDKには静的XCFrameworksおよび動的XCFrameworksとしての追加の配布チャネルがあります。これらの形式のいずれかを使用したい場合は、それぞれのリポジトリのインストール手順に従ってください。
iOS Swift SDKリポジトリのURL https://github.com/braze-inc/braze-swift-sdk をテキストフィールドに入力します。Dependency Ruleセクションで、SDKバージョンを選択します。最後に、Add Packageをクリックします。

ステップ1.2:パッケージを選択する
Braze Swift SDKは、開発者がどの機能をプロジェクトにインポートするかをより詳細にコントロールできるように、機能をスタンドアロンライブラリーに分離しています。
| パッケージ | 詳細 |
|---|---|
BrazeKit |
分析とプッシュ通知をサポートするメインSDKライブラリー。 |
BrazeLocation |
位置情報分析とジオフェンス監視をサポートする位置情報ライブラリー。 |
BrazeUI |
アプリ内メッセージ、Content Cards、バナー用のBraze提供ユーザーインターフェイスライブラリー。デフォルトのUIコンポーネントを使用する場合は、このライブラリーをインポートしてください。 |
拡張ライブラリーについて

BrazeNotificationServiceとBrazePushStoryは追加機能を提供する拡張モジュールであり、メインアプリケーションターゲットに直接追加しないでください。代わりにリンクされたガイドに従って、それぞれのターゲット拡張機能に個別に統合してください。
| パッケージ | 詳細 |
|---|---|
BrazeNotificationService |
リッチプッシュ通知をサポートする通知サービス拡張ライブラリー。 |
BrazePushStory |
Push Storiesをサポートする通知コンテンツ拡張ライブラリー。 |
ご自身のニーズに最も適したパッケージを選択し、Add Packageをクリックしてください。必ず最低でもBrazeKitを選択してください。

ステップ1.1:CocoaPodsをインストールする
完全な手順については、CocoaPodsの入門ガイドを参照してください。そうでなければ、以下のコマンドを実行すればすぐに始められます:
1
$ sudo gem install cocoapods
行き詰まった場合は、CocoaPodsのトラブルシューティングガイドを確認してください。
ステップ1.2:Podfileの構築
次に、Xcodeプロジェクトディレクトリ内にPodfileという名前のファイルを作成します。

バージョン7.4.0以降、Braze Swift SDKには静的XCFrameworksおよび動的XCFrameworksとしての追加の配布チャネルがあります。これらの形式のいずれかを使用したい場合は、それぞれのリポジトリのインストール手順に従ってください。
次の行をPodfileに追加します:
1
2
3
target 'YourAppTarget' do
pod 'BrazeKit'
end
BrazeKitにはメインSDKライブラリーが含まれており、分析とプッシュ通知のサポートが提供されています。
ポッドの更新がマイナーバージョンの更新よりも小さいものを自動的に取得するように、Brazeをバージョン管理することを推奨します。これはpod 'BrazeKit' ~> Major.Minor.Buildのようになります。大きな変更があっても、Braze SDKの最新バージョンを自動的に統合したい場合は、Podfileでpod 'BrazeKit'を使用できます。
追加ライブラリーについて
Braze Swift SDKは、開発者がどの機能をプロジェクトにインポートするかをより詳細にコントロールできるように、機能をスタンドアロンライブラリーに分離しています。BrazeKitに加えて、以下のライブラリーをPodfileに追加できます:
| ライブラリー | 詳細 |
|---|---|
pod 'BrazeLocation' |
位置情報分析とジオフェンス監視をサポートする位置情報ライブラリー。 |
pod 'BrazeUI' |
アプリ内メッセージ、Content Cards、バナー用のBraze提供ユーザーインターフェイスライブラリー。デフォルトのUIコンポーネントを使用する場合は、このライブラリーをインポートしてください。 |
拡張ライブラリー
BrazeNotificationServiceとBrazePushStoryは、追加機能を提供する拡張モジュールであり、メインアプリケーションターゲットに直接追加すべきではありません。代わりに、これらのモジュールごとに個別の拡張ターゲットを作成し、対応するターゲットにBrazeモジュールをインポートする必要があります。
| ライブラリー | 詳細 |
|---|---|
pod 'BrazeNotificationService' |
リッチプッシュ通知をサポートする通知サービス拡張ライブラリー。 |
pod 'BrazePushStory' |
Push Storiesをサポートする通知コンテンツ拡張ライブラリー。 |
ステップ1.3:SDKをインストールする
Braze SDK CocoaPodをインストールするには、ターミナル内でXcodeアプリプロジェクトのディレクトリに移動し、次のコマンドを実行します:
1
pod install
この時点で、CocoaPodsによって作成された新しいXcodeプロジェクトワークスペースを開くことができるはずです。Xcodeプロジェクトの代わりに、必ずこのXcodeワークスペースを使用してください。

CocoaPodsを使ってSDKを更新する
CocoaPodを更新するには、プロジェクトディレクトリ内で以下のコマンドを実行するだけです:
1
pod update
ステップ1.1:Braze SDKをダウンロードする
GitHubのBraze SDKリリースページに移動し、braze-swift-sdk-prebuilt.zipをダウンロードします。

ステップ1.2:フレームワークを選択する
Braze Swift SDKにはさまざまなスタンドアロンのXCFrameworkが含まれており、すべてを統合する必要はなく、必要な機能を自由に統合できます。次の表を参照して、XCFrameworksを選択してください:
| パッケージ | 必須 | 説明 |
|---|---|---|
BrazeKit |
はい | 分析とプッシュ通知をサポートするメインSDKライブラリー。 |
BrazeLocation |
いいえ | 位置情報分析とジオフェンス監視をサポートする位置情報ライブラリー。 |
BrazeUI |
いいえ | アプリ内メッセージ、Content Cards、バナー用のBraze提供ユーザーインターフェイスライブラリー。デフォルトのUIコンポーネントを使用する場合は、このライブラリーをインポートしてください。 |
BrazeNotificationService |
いいえ | リッチプッシュ通知をサポートする通知サービス拡張ライブラリー。このライブラリーを直接メインアプリケーションターゲットに追加しないでください。代わりにBrazeNotificationServiceライブラリーを個別に追加してください。 |
BrazePushStory |
いいえ | Push Storiesをサポートする通知コンテンツ拡張ライブラリー。このライブラリーを直接メインアプリケーションターゲットに追加しないでください。代わりにBrazePushStoryライブラリーを個別に追加してください。 |
BrazeKitCompat |
いいえ | Appboy-iOS-SDKバージョン4.X.Xで使用可能だったすべてのAppboyおよびABK*クラスとメソッドを含む互換性ライブラリー。使用の詳細については、移行ガイドの最小限の移行シナリオを参照してください。 |
BrazeUICompat |
いいえ | Appboy-iOS-SDKバージョン4.X.XのAppboyUIライブラリーで使用可能だったすべてのABK*クラスとメソッドを含む互換性ライブラリー。使用の詳細については、移行ガイドの最小限の移行シナリオを参照してください。 |
SDWebImage |
いいえ | 最小限の移行シナリオでBrazeUICompatによってのみ使用される依存関係。 |
ステップ1.3:ファイルを準備する
静的XCFrameworksまたは動的XCFrameworksのどちらを使用するかを決定してから、ファイルを準備します:
- XCFrameworks用の一時ディレクトリを作成します。
braze-swift-sdk-prebuiltで、dynamicディレクトリを開き、BrazeKit.xcframeworkを自分のディレクトリに移動します。ディレクトリは次のようになります:1 2
temp_dir └── BrazeKit.xcframework
- 選択した各XCFrameworkを一時ディレクトリに移動します。ディレクトリは次のようになります:
1 2 3 4 5
temp_dir ├── BrazeKit.xcframework ├── BrazeKitCompat.xcframework ├── BrazeLocation.xcframework └── SDWebImage.xcframework
ステップ1.4:フレームワークを統合する
次に、以前に準備した動的または静的XCFrameworksを統合します:
Xcodeプロジェクトでビルドターゲットを選択し、次にGeneralを選択します。Frameworks, Libraries, and Embedded Contentの下に、以前に準備したファイルをドラッグ&ドロップします。


Swift SDK 12.0.0以降では、静的および動的の両方のバリアントにおいて、Braze XCFrameworksに対して常にEmbed & Signを選択してください。これにより、フレームワークのリソースがアプリバンドルに適切に組み込まれます。

GIFサポートを有効にするには、braze-swift-sdk-prebuilt/staticまたはbraze-swift-sdk-prebuilt/dynamicにあるSDWebImage.xcframeworkを追加してください。
Objective-Cプロジェクトの一般的なエラー
XcodeプロジェクトにObjective-Cファイルのみが含まれている場合、プロジェクトのビルドを試みると「missing symbol」エラーが発生することがあります。これらのエラーを修正するには、プロジェクトを開き、ファイルツリーに空のSwiftファイルを追加します。これにより、ビルドツールチェーンがSwiftランタイムを埋め込み、ビルド時に適切なフレームワークにリンクするようになります。
1
FILE_NAME.swift
FILE_NAMEを任意のスペースのない文字列に置き換えます。ファイルは次のようになります:
1
empty_swift_file.swift
ステップ2:遅延初期化を設定する(任意)
Braze Swift SDKの初期化を遅らせることができます。これは、アプリが設定を読み込む必要がある場合や、SDKを開始する前にユーザーの同意を待つ必要がある場合に便利です。遅延初期化により、SDK初期化前に受信したBrazeプッシュ通知とプッシュトークンは、SDKが初期化された時点でキューに入れられ処理されます。
遅延初期化を使用するには、最低限のBraze SDKバージョンが必要です:
ステップ2.1:遅延初期化の準備
アプリのライフサイクルにおいて、できるだけ早い段階でBraze.prepareForDelayedInitialization()を呼び出してください。理想的にはapplication(_:didFinishLaunchingWithOptions:)内またはそれ以前に呼び出します。これにより、SDKが初期化される前に受信したプッシュ通知が確実にキャプチャされ、後で適切に処理されます。

これはBrazeからのプッシュ通知にのみ適用されます。その他のプッシュ通知は、システムデリゲートによって通常通り処理されます。
1
2
3
4
5
6
7
8
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor var appDelegate: AppDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
}
1
2
3
4
5
6
7
8
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Prepare the SDK for delayed initialization
[Braze prepareForDelayedInitialization];
// ... Additional non-Braze setup code
return YES;
}
遅延初期化を使用する場合、プッシュ通知のオートメーションは暗黙的に有効になります。pushAutomationパラメータを渡すことで、プッシュオートメーションの設定をカスタマイズできます。
ステップ2.2:プッシュ分析の動作を設定する(任意)
遅延初期化が有効な場合、プッシュ分析はデフォルトでキューに格納されます。ただし、プッシュ分析を明示的にキューに入れるか破棄するかを選択することもできます。
明示的にキューに入れる
プッシュ分析を明示的にキューに入れるには(デフォルト動作)、analyticsBehaviorパラメータに.queueを渡します。初期化前にキューに追加されたプッシュ分析イベントは、初期化時に処理されサーバーに送信されます。
1
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
破棄する
SDK初期化前に受信したプッシュ分析を破棄するには、analyticsBehaviorパラメータに.dropを渡します。このオプションでは、SDKが初期化されていない間に発生したプッシュ分析イベントはすべて無視されます。
1
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];
ステップ2.3:プッシュオートメーションをカスタマイズする(任意)
pushAutomationパラメータを渡すことで、プッシュオートメーションの設定をカスタマイズできます。デフォルトでは、requestAuthorizationAtLaunchを除くすべてのオートメーション機能が有効になっています。
1
2
3
4
5
6
7
8
// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)
// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
1
2
3
4
5
6
7
8
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];
// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];
ステップ2.4:SDKを初期化する
選択した遅延期間の後(例えば、サーバーから設定を取得した後やユーザーの同意を得た後)、通常通りSDKを初期化します:
1
2
3
4
5
6
7
8
9
10
func initializeBraze() {
let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = true
let braze = Braze(configuration: configuration)
// Store the Braze instance for later use
AppDelegate.braze = braze
}
1
2
3
4
5
6
7
8
9
10
- (void)initializeBraze {
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
// Store the Braze instance for later use
AppDelegate.braze = braze;
}

SDKが初期化されると、キューに蓄積されたプッシュ通知、プッシュトークン、ディープリンクは自動的に処理されます。
ステップ3:アプリデリゲートを更新する

以下は、プロジェクトに既にAppDelegateを追加済み(デフォルトでは生成されません)であり、遅延初期化機能を使用していないことを前提としています。AppDelegateを使用する予定がない場合は、アプリの起動時など、できるだけ早い段階でBraze SDKを初期化してください。遅延初期化機能を使用している場合は、SDKの初期化についてはステップ2.4を参照し、このステップは無視してください。
AppDelegate.swiftファイルに以下のコード行を追加して、Braze Swift SDKに含まれる機能をインポートします:
1
import BrazeKit
次に、AppDelegateクラスにstaticプロパティを追加し、アプリケーションのライフタイムを通してBrazeインスタンスへの強い参照を保持します:
1
2
3
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
}
SDKでは、アプリケーションが使用期間を通してBrazeインスタンスへの強い参照を保持する必要があります。予期しない副作用を防ぐため、Brazeインスタンスのプロパティやメソッドにアクセスまたは変更する前に、その参照を完全にキャプチャしていることを確認してください。
最後に、AppDelegate.swiftで、application:didFinishLaunchingWithOptions:メソッドに次のスニペットを追加します:
1
2
3
4
5
6
let configuration = Braze.Configuration(
apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
アプリ設定ページから、YOUR-APP-IDENTIFIER-API-KEYとYOUR-BRAZE-ENDPOINTを正しい値に更新してください。アプリ識別子APIキーの場所については、API識別子の種類を参照してください。
次のコード行をAppDelegate.mファイルに追加します:
1
@import BrazeKit;
次に、AppDelegate.mファイルに静的変数を追加して、アプリケーションのライフタイムを通してBrazeインスタンスへの参照を保持します:
1
2
3
4
5
6
7
8
9
10
11
static Braze *_braze;
@implementation AppDelegate
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
@end
SDKでは、アプリケーションが使用期間を通してBrazeインスタンスへの強い参照を保持する必要があります。予期しない副作用を防ぐため、Brazeインスタンスのプロパティやメソッドにアクセスまたは変更する前に、その参照を完全にキャプチャしていることを確認してください。
最後に、AppDelegate.mファイル内で、application:didFinishLaunchingWithOptions:メソッド内に以下のスニペットを追加します:
1
2
3
4
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
設定の管理ページから、YOUR-APP-IDENTIFIER-API-KEYとYOUR-BRAZE-ENDPOINTを正しい値で更新してください。アプリ識別子APIキーの場所について詳しくは、APIドキュメントをご覧ください。

Braze.initは呼び出しスレッド上で即座に返されます。SDKは内部キューで起動処理を行います。initの直後にメインスレッドでbraze.deviceIdなどの同期プロパティを読み取ると、SDKが初期化後の処理を完了するまで呼び出しスレッドがブロックされます。メインスレッドやレイテンシに敏感なコンテキストでは、ブロックせずに値を読み取るためにbraze.getDeviceId(_:)(Swift)または[braze getDeviceIdWithCompletion:^(NSString *deviceId) { ... }](Objective-C)を使用してください。
オプション設定
ロギング
すべてのプラットフォームにわたる一元的な概要については、詳細ログを参照してください。ログ出力の解釈方法については、詳細ログの読み方を参照してください。
ログレベル
Braze Swift SDKのデフォルトのログレベルは.errorです。これはログが有効な場合にサポートされる最低レベルでもあります。以下がログレベルの一覧です:
| Swift | Objective-C | 説明 |
|---|---|---|
.debug |
BRZLoggerLevelDebug |
デバッグ情報 + .info + .errorを記録します。 |
.info |
BRZLoggerLevelInfo |
一般的なSDK情報(ユーザーの変更など)+ .errorを記録します。 |
.error |
BRZLoggerLevelError |
エラーを記録します。 |
.disabled |
BRZLoggerLevelDisabled |
ロギングは行われません。 |
ログレベルの設定
実行時にBraze.Configurationオブジェクト内でログレベルを割り当てることができます。完全な使用方法の詳細については、Braze.Configuration.Loggerを参照してください。
1
2
3
4
5
6
7
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
1
2
3
4
5
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
Cordova SDKの統合
前提条件
開始する前に、お使いの環境が最新のBraze Cordova SDKバージョンでサポートされていることを確認してください。
ステップ1:プロジェクトにSDKを追加する

Braze Cordova SDKは、以下の方法でのみ追加してください。他の方法でインストールしようとすると、セキュリティ上の問題が発生する可能性があります。
Cordova 6以降をお使いの場合は、GitHubから直接SDKを追加できます。また、GitHubリポジトリのZIPをダウンロードして、手動でSDKを追加することもできます。
位置情報の収集やジオフェンスを使用する予定がない場合は、GitHubのmasterブランチを使用してください。
1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master
位置情報の収集やジオフェンスを使用する予定がある場合は、GitHubのgeofence-branchを使用してください。
1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch

このステップを繰り返すことで、masterとgeofence-branchをいつでも切り替えることができます。
ステップ2:プロジェクトを設定する
次に、プロジェクトのconfig.xmlファイルのplatform要素に以下の設定を追加します。
1
2
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
1
2
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />
以下の値を置き換えてください:
| 値 | 説明 |
|---|---|
BRAZE_API_KEY |
Braze REST APIキー。 |
CUSTOM_API_ENDPOINT |
カスタムAPIエンドポイント。このエンドポイントは、Brazeインスタンスのデータをダッシュボード内の正しいアプリグループにルーティングするために使用されます。 |
config.xmlファイルのplatform要素は、以下のようになります:
1
2
3
4
<platform name="ios">
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
1
2
3
4
<platform name="android">
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
プラットフォーム固有の構文
以下のセクションでは、CordovaをiOSまたはAndroidで使用する際のプラットフォーム固有の構文について説明します。
整数
整数のプリファレンスは、次の例のように文字列表現として読み取られます。
1
2
3
4
<platform name="ios">
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_session_timeout" value="5" />
</platform>
Cordova 8.0.0以降のフレームワークがプリファレンスを処理する方法に起因し、整数のみのプリファレンス(送信者IDなど)は、次の例のように str_ を先頭に付加した文字列として設定する必要があります。
1
2
3
4
<platform name="android">
<preference name="com.braze.android_fcm_sender_id" value="str_64422926741" />
<preference name="com.braze.android_default_session_timeout" value="str_10" />
</platform>
ブール値
ブール値のプリファレンスは、次の例のように YES および NO キーワードを文字列表現としてSDKに読み取られます。
1
2
3
4
<platform name="ios">
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>
ブール値のプリファレンスは、次の例のように true および false キーワードを文字列表現としてSDKに読み取られます。
1
2
3
4
<platform name="android">
<preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
</platform>
オプション設定
以下の設定をプロジェクトのconfig.xmlファイルのplatform要素に追加できます。
| メソッド | 説明 |
|---|---|
ios_api_key |
アプリケーションのAPIキーを設定します。 |
ios_api_endpoint |
アプリケーションのSDKエンドポイントを設定します。 |
ios_disable_automatic_push_registration |
自動プッシュ登録を無効にするかどうかを設定します。 |
ios_disable_automatic_push_handling |
自動プッシュ処理を無効にするかどうかを設定します。 |
ios_enable_idfa_automatic_collection |
Braze SDKがIDFA情報を自動的に収集するかどうかを設定します。詳細については、BrazeのIDFAメソッドのドキュメントを参照してください。 |
enable_location_collection |
自動ロケーション収集を有効にするかどうかを設定します(ユーザーが許可した場合)。geofence-branch |
geofences_enabled |
ジオフェンスを有効にするかどうかを設定します。 |
ios_session_timeout |
アプリケーションのBrazeセッションタイムアウトを秒単位で設定します。デフォルトは10秒です。 |
sdk_authentication_enabled |
SDK認証機能を有効にするかどうかを設定します。 |
display_foreground_push_notifications |
アプリケーションがフォアグラウンドにある間、プッシュ通知を表示するかどうかを設定します。 |
ios_disable_un_authorization_option_provisional |
UNAuthorizationOptionProvisionalを無効にするかどうかを設定します。 |
trigger_action_minimum_time_interval_seconds |
トリガー間の最小時間間隔を秒単位で設定します。デフォルトは30秒です。 |
ios_push_app_group |
iOSプッシュ拡張機能のアプリグループIDを設定します。 |
ios_forward_universal_links |
SDKがユニバーサルリンクを自動的に認識し、システムメソッドに転送するかどうかを設定します。iOSでプッシュ通知からのディープリンクを機能させるために必要です。デフォルトは無効です。 |
ios_log_level |
Braze.Configuration.Loggerの最小ログレベルを設定します。 |
ios_use_uuid_as_device_id |
ランダムに生成されたUUIDをデバイスIDとして使用するかどうかを設定します。 |
ios_flush_interval_seconds |
自動データフラッシュの間隔を秒単位で設定します。デフォルトは10秒です。 |
ios_use_automatic_request_policy |
Braze.Configuration.Apiのリクエストポリシーを自動にするか手動にするかを設定します。 |
should_opt_in_when_push_authorized |
プッシュ権限が承認された際に、ユーザーの通知購読状態を自動的にoptedInに設定するかどうかを指定します。 |

| メソッド | 説明 |
|---|---|
android_api_key |
アプリケーションのAPIキーを設定します。 |
android_api_endpoint |
アプリケーションのSDKエンドポイントを設定します。 |
android_small_notification_icon |
通知の小さなアイコンを設定します。 |
android_large_notification_icon |
通知の大きなアイコンを設定します。 |
android_notification_accent_color |
通知のアクセントカラーを16進数表記で設定します。 |
android_default_session_timeout |
アプリケーションのBrazeセッションタイムアウトを秒単位で設定します。デフォルトは10秒です。 |
android_handle_push_deep_links_automatically |
Braze SDKがプッシュディープリンクを自動的に処理するかどうかを設定します。Androidでプッシュ通知からのディープリンクを機能させるために必要です。デフォルトは無効です。 |
android_log_level |
アプリケーションのログレベルを設定します。デフォルトのログレベルは4で、最小限の情報をログに記録します。デバッグ用の詳細ログを有効にするには、ログレベル2を使用してください。 |
firebase_cloud_messaging_registration_enabled |
プッシュ通知にFirebase Cloud Messagingを使用するかどうかを設定します。 |
android_fcm_sender_id |
Firebase Cloud Messagingの送信者IDを設定します。 |
enable_location_collection |
自動ロケーション収集を有効にするかどうかを設定します(ユーザーが許可した場合)。 |
geofences_enabled |
ジオフェンスを有効にするかどうかを設定します。 |
android_disable_auto_session_tracking |
Android Cordovaプラグインによるセッションの自動トラッキングを無効にします。詳細については、自動セッショントラッキングの無効化を参照してください。 |
sdk_authentication_enabled |
SDK認証機能を有効にするかどうかを設定します。 |
trigger_action_minimum_time_interval_seconds |
トリガー間の最小時間間隔を秒単位で設定します。デフォルトは30秒です。 |
is_session_start_based_timeout_enabled |
セッションタイムアウトの動作を、セッション開始イベントに基づくかセッション終了イベントに基づくかを設定します。 |
default_notification_channel_name |
BrazeのデフォルトNotificationChannelでNotificationChannel.getNameを通じてユーザーに表示される名前を設定します。 |
default_notification_channel_description |
BrazeのデフォルトNotificationChannelでNotificationChannel.getDescriptionを通じてユーザーに表示される説明を設定します。 |
does_push_story_dismiss_on_click |
Push Storiesがクリックされた際に自動的に非表示になるかどうかを設定します。 |
is_fallback_firebase_messaging_service_enabled |
フォールバック用のFirebase Cloud Messagingサービスの使用を有効にするかどうかを設定します。 |
fallback_firebase_messaging_service_classpath |
フォールバック用のFirebase Cloud Messagingサービスのクラスパスを設定します。 |
is_content_cards_unread_visual_indicator_enabled |
Content Cardsの未読視覚インジケーターバーを有効にするかどうかを設定します。 |
is_firebase_messaging_service_on_new_token_registration_enabled |
Braze SDKがcom.google.firebase.messaging.FirebaseMessagingService.onNewTokenでトークンを自動的に登録するかどうかを設定します。 |
is_push_deep_link_back_stack_activity_enabled |
プッシュのディープリンクを自動的にたどる際に、Brazeがバックスタックにアクティビティを追加するかどうかを設定します。 |
push_deep_link_back_stack_activity_class_name |
プッシュのディープリンクを自動的にたどる際に、Brazeがバックスタックに追加するアクティビティを設定します。 |
should_opt_in_when_push_authorized |
プッシュが許可された際に、Brazeがユーザーを自動的にオプトインするかどうかを設定します。 |

以下は、追加設定を含むconfig.xmlファイルの例です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<platform name="ios">
<preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
<preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
<preference name="com.braze.enable_location_collection" value="NO"/"YES" />
<preference name="com.braze.geofences_enabled" value="NO"/"YES" />
<preference name="com.braze.ios_session_timeout" value="5" />
<preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
<preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
<preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
<preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
<preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
<preference name="com.braze.ios_log_level" value="2" />
<preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
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
<platform name="android">
<preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
<preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
<preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
<preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
<preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
<preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
<preference name="com.braze.enable_location_collection" value="true"/"false" />
<preference name="com.braze.geofences_enabled" value="true"/"false" />
<preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
<preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
<preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
<preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
<preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
<preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
<preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
<preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
<preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
<preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
<preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>
自動セッショントラッキングを無効にする(Androidのみ)
デフォルトでは、Android Cordovaプラグインは自動的にセッションをトラッキングします。自動セッショントラッキングを無効にするには、プロジェクトのconfig.xmlファイル内のplatform要素に以下の設定を追加してください。
1
2
3
<platform name="android">
<preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>
セッショントラッキングを再開するには、BrazePlugin.startSessionTracking()を呼び出してください。次回のActivity.onStart()以降に開始されたセッションのみがトラッキングされることに注意してください。
ヘッドアップ通知用の通知チャネルの設定(Androidのみ)
Android 8.0(API レベル 26)以降では、通知の動作は通知チャネルによって制御されます。ヘッドアップ通知(ユーザーがデバイスを使用中に画面上部に短時間表示されるアラート)を表示するには、AndroidアプリケーションコードでNotificationManager.IMPORTANCE_HIGHを指定した通知チャネルを作成する必要があります。
Cordova SDKでは、config.xmlの設定(default_notification_channel_nameおよびdefault_notification_channel_description)を通じてデフォルトの通知チャネル名と説明を設定できますが、重要度レベルはネイティブのAndroidコードでプログラム的に設定する必要があります。
例:高重要度の通知チャネルの作成
以下のコードをAndroidアプリケーションのApplicationクラスのonCreate()メソッドに追加します:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.os.Build
override fun onCreate() {
super.onCreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channelId = "high_priority_channel"
val channelName = "High Priority Notifications"
val importance = NotificationManager.IMPORTANCE_HIGH
val channel = NotificationChannel(channelId, channelName, importance).apply {
description = "Notifications that require immediate attention"
}
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;
@Override
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "high_priority_channel";
String channelName = "High Priority Notifications";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
channel.setDescription("Notifications that require immediate attention");
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
}
}
Androidコードでチャネルを作成した後、Brazeダッシュボードからプッシュ通知を送信する際にそのチャネルIDを使用します。通知チャネルの詳細については、Androidの通知チャネルを参照してください。
プラグインアップグレード後のiOSビルドのトラブルシューティング
Cordova Braze SDK 9.0.0以降は、Swift SDK 9.0.0以降を使用します。Swift SDK 8.0.0以降、このネイティブSDKはXcode 15.2でコンパイルされています。Cordovaプラグインを9.0.0以降にアップグレードした後にiOSビルドが失敗する場合は、Xcodeを15.2以降に更新し、プラグインが使用するネイティブiOSバージョンのSwift SDKの変更ログと一致していることを確認してください。
Flutter Braze SDKについて
AndroidとiOSでBraze Flutter SDKを統合した後、Dartで書かれたFlutterアプリ内でBraze APIを利用できるようになります。このプラグインには基本的な分析機能が用意されており、iOSとAndroid両方のアプリ内メッセージとContent Cardsを1つのコードベースで統合できます。
Flutter SDKの統合
前提条件
Braze Flutter SDKを統合する前に、以下を完了する必要があります。
| 前提条件 | 説明 |
|---|---|
| Braze APIアプリ識別子 | アプリの識別子を確認するには、設定 > APIと識別子 > アプリ識別子に移動します。詳細については、API識別子の種類を参照してください。 |
| Braze SDKエンドポイント | SDKエンドポイントのURL(例:sdk.<cluster>.braze.com)。エンドポイントはインスタンスのBraze URLに応じて異なります。 |
| Flutter SDK | 公式のFlutter SDKをインストールし、Braze Flutter SDKの最低サポートバージョンを満たしていることを確認してください。 |
ステップ1:Brazeライブラリーを統合する
コマンドラインからBraze Flutter SDKパッケージを追加します。これにより、適切な行がpubspec.yamlに追加されます。
1
flutter pub add braze_plugin
ステップ2:ネイティブSDKの設定を完了する
2.1 Androidの設定 {#21-set-up-android} {#21-set-up-android}
コンパイル時に認証情報を提供する
プロジェクトのandroid/res/valuesフォルダにbraze.xmlファイルを作成します。APIキーとエンドポイントはDartから実行時に提供されるため、このファイルでは不要です。遅延初期化を有効にするには、com_braze_enable_delayed_initializationをファイルに追加します。
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="com_braze_enable_delayed_initialization">true</bool>
<!-- API key and endpoint are not required here. They are set at runtime via Dart. -->
</resources>
実行時に認証情報を提供する
または、MainActivity.ktでプログラム的に遅延初期化を有効にすることもできます。
1
2
3
4
5
6
7
8
import com.braze.Braze
class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Braze.enableDelayedInitialization(context = this)
}
}
必要な権限をAndroidManifest.xmlファイルに追加します。
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 iOSの設定 {#22-set-up-ios} {#22-set-up-ios}
既存のapplication(_:didFinishLaunchingWithOptions:)メソッド内で、BrazePlugin.configure(_:postInitialization:)を呼び出して設定を保存します。Brazeインスタンスは、後でDartからinitialize()が呼び出されたときに作成されます。ここではAPIキーとエンドポイントは設定しません。
以下のコードをAppDelegate.swiftに追加します。
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
import BrazeKit
import braze_plugin
// ...
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// ... your existing didFinishLaunchingWithOptions setup ...
BrazePlugin.configure(
{ configuration in
configuration.logger.level = .info
// Set other non-API-key configurations here, such as:
// configuration.push.automation = true
// configuration.sessionTimeout = 60
},
postInitialization: { braze in
// Optional: Customize the Braze instance after creation.
// For example, set a custom in-app message presenter:
// let customPresenter = CustomInAppMessagePresenter()
// braze.inAppMessagePresenter = customPresenter
}
)
return true
}
以下のコードをAppDelegate.mに追加します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@import BrazeKit;
@import braze_plugin;
// ...
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[BrazePlugin configure:^(BRZConfiguration *configuration) {
configuration.logger.level = BRZLoggerLevelInfo;
// Set other non-API-key configurations here, such as:
// configuration.push.automation = ...
// configuration.sessionTimeout = 60;
} postInitialization:^(Braze *braze) {
// Optional: customize the Braze instance after creation.
}];
return YES;
}

BrazePlugin.configure()は設定を保存するだけです。Dartからinitialize()が呼び出されるまでBrazeインスタンスは存在しないため、configure()の後にAppDelegateでBraze SDKメソッドを呼び出さないでください。
2.1 Androidの設定 {#21-set-up-android-1}
Brazeサーバーに接続するには、プロジェクトのandroid/res/valuesフォルダにbraze.xmlファイルを作成します。以下のコードを貼り付けて、API識別子キーとエンドポイントをご自身の値に置き換えます。
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
必要な権限をAndroidManifest.xmlファイルに追加します。
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 iOSの設定 {#22-set-up-ios-1}
AppDelegate.swiftファイルの先頭にBraze SDKのインポートを追加します。
1
2
import BrazeKit
import braze_plugin
同じファイルのapplication(_:didFinishLaunchingWithOptions:)メソッドでBraze設定オブジェクトを作成し、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようAppDelegateに静的プロパティを作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static var braze: Braze? = nil
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// - Enable logging or customize configuration here
configuration.logger.level = .info
let braze = BrazePlugin.initBraze(configuration)
AppDelegate.braze = braze
return true
}
AppDelegate.mファイルの先頭にBraze SDKをインポートします。
1
2
@import BrazeKit;
@import braze_plugin;
同じファイルのapplication:didFinishLaunchingWithOptions:メソッドでBraze設定オブジェクトを作成し、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようAppDelegateに静的プロパティを作成します。
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
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:@"<BRAZE_API_KEY>"
endpoint:@"<BRAZE_ENDPOINT>"];
// - Enable logging or customize configuration here
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazePlugin initBraze:configuration];
AppDelegate.braze = braze;
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
ステップ3:プラグインを設定する
プラグインをインポートし、BrazePluginの単一インスタンスを作成します。
1
2
3
import 'package:braze_plugin/braze_plugin.dart';
final BrazePlugin braze = BrazePlugin();
次に、アプリ識別子APIキーとSDKエンドポイントを指定してinitialize()を呼び出し、Brazeインスタンスを作成します。アプリフロー内でこのメソッドを呼び出す場所については、以下のオプションを参照してください。
標準初期化
アプリの起動時にSDKを初期化するには、initState()内でinitialize()を呼び出します。
1
2
3
4
5
@override
void initState() {
super.initState();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}
遅延初期化
SDKの初期化をセッション内の後のタイミングまで延期するには(例:ユーザーが同意を付与した後やログインを完了した後)、準備ができた時点でinitialize()を呼び出します。
1
2
3
4
// ...
void onUserConsent() {
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

initialize()が呼び出される前に受信したプッシュ通知とディープリンクは、iOSでは処理されません。Androidでは、SDKが初期化を待っている間、プッシュ通知からのディープリンクは解決されません。アプリが起動時にプッシュ通知やディープリンクに依存している場合は、代わりに標準初期化を使用してください。
プラットフォーム固有のAPIキー
AndroidとiOSのアプリは異なるAPIキーを使用するため、プラットフォーム検出を使用します。
1
2
3
4
5
6
7
import 'dart:io' show Platform;
if (Platform.isAndroid) {
braze.initialize("<ANDROID_API_KEY>", "<BRAZE_ENDPOINT>");
} else if (Platform.isIOS) {
braze.initialize("<IOS_API_KEY>", "<BRAZE_ENDPOINT>");
}
再初期化
セッション中に異なるAPIキーとエンドポイントでSDKを再初期化するために、initialize()を複数回呼び出すことができます。呼び出すたびに、以前のBrazeインスタンスが破棄され、新しいインスタンスが作成されます。

未定義の動作を避けるため、Dartコード内では単一のBrazePluginインスタンスのみを割り当てて使用してください。initialize()の前に行われたすべてのSDKメソッド呼び出しはiOSでは無視されるため、他のBrazeメソッドを使用する前にinitialize()を呼び出してください。
Dartコードにプラグインをインポートするには、以下を使用します。
1
import 'package:braze_plugin/braze_plugin.dart';
次に、サンプルアプリのようにnew BrazePlugin()を呼び出して、Brazeプラグインのインスタンスを初期化します。

未定義の動作を避けるため、Dartコード内では単一のBrazePluginインスタンスのみを割り当てて使用してください。
統合のテスト
ダッシュボードでセッション統計を確認することで、SDKが統合されていることを検証できます。いずれかのプラットフォームでアプリケーションを実行すると、ダッシュボード(概要セクション)に新しいセッションが表示されます。
アプリ内で以下のコードを呼び出すことで、特定のユーザーのセッションを開始できます。
1
2
3
BrazePlugin braze = BrazePlugin();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
braze.changeUser("{some-user-id}");
1
2
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");
ダッシュボードのオーディエンス > ユーザーを検索で{some-user-id}のユーザーを検索します。そこで、セッションとデバイスデータが記録されていることを確認できます。
React Native Braze SDKについて
React Native Braze SDKを統合すると、基本的な分析機能が提供され、1つのコードベースでiOSとAndroid両方のアプリ内メッセージとContent Cardsを統合できます。
New Architectureの互換性
以下の最小SDKバージョンは、React NativeのNew Architectureを使用するすべてのアプリと互換性があります。
SDKバージョン6.0.0以降、BrazeはReact Native Turbo Moduleを使用しており、New Architectureとレガシーブリッジアーキテクチャの両方に対応しています。そのため、追加の設定は不要です。

iOSアプリがRCTAppDelegateに準拠しており、以前のAppDelegate設定に従っている場合は、Turbo Moduleでイベントをサブスクライブする際のクラッシュを防ぐため、ネイティブ設定を完了するのサンプルを確認してください。
ReactおよびReact Nativeのバージョン要件
BrazeはReact Native SDKがサポートする範囲を超えて、個別のReact最小バージョンを公開していません。SDKを統合するには、React Nativeバージョン0.71以降を使用してください。サポートされているReact Nativeバージョンの完全なリストについては、React Native SDK GitHubリポジトリを参照してください。
React、React Native、またはBraze SDKをアップグレードする際は、デプロイ前にSDKのCHANGELOGで破壊的変更を確認してください。
React Native SDKの統合
前提条件
サポートされているReact Nativeのバージョンとアップグレードガイダンスについては、ReactおよびReact Nativeのバージョン要件を参照してください。
ステップ1:Brazeライブラリを統合する
1
npm install @braze/react-native-sdk
1
yarn add @braze/react-native-sdk
ステップ2:ネイティブセットアップを完了する
アプリがExpoを使用している場合は、Expoプラグインを使用するを参照してください。アプリがピュアReact Nativeを使用している場合は、React Native CLIを使用するを参照してください。 各バージョンタブで、Expoプラグインまたは React Native CLIのいずれかのセットアップ方法を選択してください。
方法1:Expoプラグインを使用する
2.1 Braze Expoプラグインをインストールする {#21-install-the-braze-expo-plugin}
Braze Expoプラグインのバージョンが4.1.0以上であることを確認してください。サポートされているバージョンの完全なリストについては、Braze Expoプラグインリポジトリを参照してください。
以下のコードスニペットは、Braze Expoプラグインをインストールするコマンドを示しています:
1
npx expo install @braze/expo-plugin
2.2 プラグインをapp.jsonに追加する {#22-add-the-plugin-to-your-appjson}
app.jsonにBraze Expoプラグインを追加します。APIキーとエンドポイントはここでは設定しません。JavaScriptからBraze.initialize()を通じてランタイム時に提供します。実装のニーズに基づいて、以下のオプション設定パラメーターを追加してください:
| メソッド | 型 | 説明 |
|---|---|---|
enableBrazeIosPush |
boolean | iOSのみ。Brazeを使用してiOSでプッシュ通知を処理するかどうか。 |
enableFirebaseCloudMessaging |
boolean | Androidのみ。プッシュ通知にFirebase Cloud Messagingを使用するかどうか。 |
firebaseCloudMessagingSenderId |
string | Androidのみ。Firebase Cloud MessagingのセンダーID。 |
sessionTimeout |
integer | アプリケーションのBrazeセッションタイムアウト(秒単位)。 |
enableSdkAuthentication |
boolean | SDK認証機能を有効にするかどうか。 |
logLevel |
integer | アプリケーションのログレベル。デフォルトのログレベルは8で、最小限の情報をログに記録します。デバッグ用の詳細ログを有効にするには、ログレベル0を使用します。 |
minimumTriggerIntervalInSeconds |
integer | トリガー間の最小時間間隔(秒単位)。デフォルトは30秒です。 |
enableAutomaticLocationCollection |
boolean | 自動位置情報収集を有効にするかどうか(ユーザーが許可した場合)。 |
enableGeofence |
boolean | ジオフェンスを有効にするかどうか。 |
enableAutomaticGeofenceRequests |
boolean | ジオフェンスリクエストを自動的に行うかどうか。 |
dismissModalOnOutsideTap |
boolean | iOSのみ。ユーザーがアプリ内メッセージの外側をクリックした場合にモーダルアプリ内メッセージを閉じるかどうか。 |
androidHandlePushDeepLinksAutomatically |
boolean | Androidのみ。Braze SDKがプッシュディープリンクを自動的に処理するかどうか。 |
androidPushNotificationHtmlRenderingEnabled |
boolean | Androidのみ。プッシュ通知のテキストコンテンツをandroid.text.Html.fromHtmlを使用してHTMLとして解釈・レンダリングするかどうかを設定します。 |
androidNotificationAccentColor |
string | Androidのみ。Android通知のアクセントカラーを設定します。 |
androidNotificationLargeIcon |
string | Androidのみ。Android通知のラージアイコンを設定します。 |
androidNotificationSmallIcon |
string | Androidのみ。Android通知のスモールアイコンを設定します。 |
iosRequestPushPermissionsAutomatically |
boolean | iOSのみ。アプリ起動時にプッシュ権限のプロンプトを自動的に表示するかどうか。 |
enableBrazeIosRichPush |
boolean | iOSのみ。iOS向けのリッチプッシュ機能を有効にするかどうか。 |
enableBrazeIosPushStories |
boolean | iOSのみ。iOS向けのBraze Push Storiesを有効にするかどうか。 |
iosPushStoryAppGroup |
string | iOSのみ。iOS Push Storiesに使用するアプリグループ。 |
iosUseUUIDAsDeviceId |
boolean | iOSのみ。デバイスIDにランダムに生成されたUUIDを使用するかどうか。 |
iosForwardUniversalLinks |
boolean | iOSのみ。SDKがユニバーサルリンクを自動的に認識してシステムメソッドに転送するかどうかを指定します(デフォルト:false)。 |
以下のコードスニペットは、app.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
29
30
31
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
"iosForwardUniversalLinks": false
}
]
]
}
}
Androidプッシュ通知アイコンの設定
androidNotificationLargeIconとandroidNotificationSmallIconを使用する場合は、アイコンを適切に表示するために以下のベストプラクティスに従ってください:
アイコンの配置とフォーマット
Braze Expoプラグインでカスタムプッシュ通知アイコンを使用するには:
- 「アイコン要件」に記載されている要件に従ってアイコンファイルを作成します。
- プロジェクトのAndroidネイティブディレクトリ
android/app/src/main/res/drawable-<density>/に配置します。 たとえば、android/app/src/main/res/drawable-mdpi/やandroid/app/src/main/res/drawable-hdpi/を使用します。 - あるいは、React Nativeディレクトリでアセットを管理している場合は、Expoのapp.jsonアイコン設定を使用するか、Expo設定プラグインを作成してプレビルド時にアイコンをAndroid drawableフォルダーにコピーできます。
Braze Expoプラグインは、Androidのdrawableリソースシステムを使用してこれらのアイコンを参照します。
アイコン要件
- スモールアイコン: 透明な背景に白いシルエットである必要があります(これはAndroidプラットフォームの要件です)
- ラージアイコン: フルカラー画像を使用できます。
- フォーマット: PNG形式を推奨します。
- 命名規則: 小文字、数字、アンダースコアのみを使用してください(例:
my_large_icon.png)
app.jsonでの設定
以下のコードスニペットは、@drawable/プレフィックスを使用してapp.jsonでAndroid通知アイコンを参照する方法を示しています:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidNotificationLargeIcon": "@drawable/large_icon",
"androidNotificationSmallIcon": "@drawable/small_icon"
}
]
]
}
}

アイコンを参照する際に、相対ファイルパス(src/assets/images/icon.pngなど)を使用したり、ファイル拡張子を含めたりしないでください。Expoプラグインでは、プレビルドプロセス後にAndroidネイティブフォルダー内のアイコンを正しく見つけるために@drawable/プレフィックスが必要です。
仕組み
Braze Expoプラグインは、Androidのdrawableディレクトリからアイコンファイルを参照します。npx expo prebuildを実行すると、Expoはネイティブのandroidプロジェクト構造を生成します。アイコンは、ビルドプロセスの前にAndroidのdrawableフォルダー内に存在する必要があります(手動で配置するか、設定プラグインを通じてコピーします)。プラグインはその後、これらのdrawableリソースを名前(パスや拡張子なし)で使用するようにBraze SDKを設定します。これが、設定で@drawable/プレフィックスが必要な理由です。
Android通知アイコンの詳細については、Androidの通知アイコンガイドラインを参照してください。
2.3 アプリケーションをビルドして実行する {#23-build-and-run-your-application}
アプリケーションをプレビルドすると、Braze Expoプラグインが動作するために必要なネイティブファイルが生成されます。
以下のコードスニペットは、アプリケーションをプレビルドするコマンドを示しています:
1
npx expo prebuild
Expoドキュメントの指定に従ってアプリケーションを実行します。設定オプションを変更した場合は、アプリケーションを再度プレビルドして実行してください。
方法2:React Native CLIを使用する
Androidのセットアップ
2.1 Kotlin Gradleプラグインを追加する
以下のコードスニペットは、トップレベルプロジェクトのbuild.gradleのbuildscript > dependenciesにKotlin Gradleプラグインを追加する方法を示しています:
1
2
3
4
5
6
7
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
これによりプロジェクトにKotlinが追加されます。
2.2 Braze SDKを設定する
プロジェクトのres/valuesフォルダーにbraze.xmlファイルを作成します。APIキーとエンドポイントはJavaScriptからランタイム時に提供されるため、このファイルでは不要です。以下のコードスニペットは、com_braze_enable_delayed_initializationを使用して遅延初期化を有効にする方法を示しています:
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="com_braze_enable_delayed_initialization">true</bool>
</resources>

braze.xmlにその他のネイティブ設定値(プッシュ、セッションタイムアウト、ログ設定など)を追加することもできます。これらはJavaScriptからBraze.initialize()が呼び出されると自動的に適用されます。
以下のコードスニペットは、AndroidManifest.xmlファイルに必要な権限を示しています:
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Braze Android SDKバージョン12.2.0以降では、gradle.propertiesファイルでimportBrazeLocationLibrary=trueを設定することで、android-sdk-locationライブラリを自動的に取り込むことができます。
2.3 ユーザーセッショントラッキングを実装する
openSession()とcloseSession()の呼び出しは自動的に処理されます。
以下のコードスニペットは、MainApplicationクラスのonCreate()メソッドに追加する内容を示しています:
1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
2.4 インテントの更新を処理する
MainActivityのandroid:launchModeがsingleTaskに設定されている場合、以下のコードスニペットはMainActivityクラスに追加する内容を示しています:
1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
iOSのセットアップ
2.5(オプション)動的XCFrameworks用にPodfileを設定する
BrazeUIなどの特定のBrazeライブラリをObjective-C++ファイルにインポートするには、#import構文を使用する必要があります。Braze Swift SDKのバージョン7.4.0以降、バイナリには動的XCFrameworksとしてのオプションの配布チャネルがあり、この構文と互換性があります。
この配布チャネルを使用する場合は、PodfileでCocoaPodsのソースロケーションを手動でオーバーライドしてください。以下のサンプルを参照し、{your-version}をインポートしたい関連バージョンに置き換えてください:
1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
2.6 Podをインストールする
React Nativeはライブラリをネイティブプラットフォームに自動的にリンクするため、CocoaPodsを使用してSDKをインストールできます。
以下のコードスニペットは、プロジェクトのルートフォルダーからPodをインストールする方法を示しています:
1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install
# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install
2.7 Braze SDKを設定する
AppDelegateでBrazeReactInitializer.configureを使用してネイティブ設定を登録します。提供するクロージャーは保存され、JavaScriptからBraze.initialize(apiKey, endpoint)が呼び出されたときに適用されます。
以下のコードスニペットは、AppDelegate.swiftファイルの先頭でBraze SDKをインポートする方法を示しています:
1
2
import BrazeKit
import braze_react_native_sdk
application(_:didFinishLaunchingWithOptions:)メソッドで、BrazeReactInitializer.configureを使用してネイティブ設定を登録します。ここではAPIキーやエンドポイントを設定しないでください。それらはJavaScriptからBraze.initialize()を通じて提供されます。
configureクロージャー:Braze.Configurationを受け取り、ネイティブ設定プロパティ(ログ、プッシュ、セッションなど)を設定できます。postInitializationクロージャー(オプション):作成後のライブBrazeインスタンスを受け取り、インスタンスを必要とするセットアップ(参照の保存やデリゲートの設定など)に使用します。
以下のコードスニペットは、BrazeReactInitializer.configureを使用したAppDelegate.swiftの実装例を示しています:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
BrazeReactInitializer.configure { configuration in
configuration.logger.level = .info
configuration.push.automation = true
} postInitialization: { braze in
AppDelegate.braze = braze
}
// ... React Native setup
return true
}
}
以下のコードスニペットは、AppDelegate.mファイルの先頭でBraze SDKをインポートする方法を示しています:
1
2
@import BrazeKit;
@import braze_react_native_sdk;
application:didFinishLaunchingWithOptions:メソッドで、BrazeReactInitializerを使用してネイティブ設定を登録します。ここではAPIキーやエンドポイントを設定しないでください。それらはJavaScriptからBraze.initialize()を通じて提供されます。
以下のコードスニペットは、BrazeReactInitializerを使用したAppDelegate.mの実装例を示しています:
1
2
3
4
5
6
7
8
9
10
11
12
13
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[BrazeReactInitializer configure:^(BRZConfiguration *configuration) {
configuration.logger.level = BRZLoggerLevelInfo;
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
} postInitialization:^(Braze *braze) {
// Store the Braze instance for later use.
}];
/* Other configuration */
return YES;
}

BrazeReactInitializer.configure()は設定を保存するだけです。JavaScriptからBraze.initialize()が呼び出されるまでBrazeインスタンスは存在しないため、configure()の後にAppDelegateでBraze SDKメソッドを呼び出さないでください。
Braze.initialize()を再度呼び出すと、同じconfigureとpostInitializationブロックが新しいBrazeインスタンスに適用されます。
方法1:Expoプラグインを使用する
ステップ2.1:Braze Expoプラグインをインストールする
Braze React Native SDKのバージョンが1.37.0以上であることを確認してください。サポートされているバージョンの完全なリストについては、Braze React Nativeリポジトリを参照してください。
以下のコードスニペットは、Braze Expoプラグインをインストールするコマンドを示しています:
1
npx expo install @braze/expo-plugin
ステップ2.2:プラグインをapp.jsonに追加する
app.jsonにBraze Expoプラグインを追加します。以下の設定オプションを指定できます:
| メソッド | 型 | 説明 |
|---|---|---|
androidApiKey |
string | 必須。AndroidアプリケーションのAPIキー。Brazeダッシュボードの設定の管理に配置されています。 |
iosApiKey |
string | 必須。iOSアプリケーションのAPIキー。Brazeダッシュボードの設定の管理に配置されています。 |
baseUrl |
string | 必須。アプリケーションのSDKエンドポイント。Brazeダッシュボードの設定の管理に配置されています。 |
enableBrazeIosPush |
boolean | iOSのみ。Brazeを使用してiOSでプッシュ通知を処理するかどうか。React Native SDK v1.38.0およびExpo Plugin v0.4.0で導入されました。 |
enableFirebaseCloudMessaging |
boolean | Androidのみ。プッシュ通知にFirebase Cloud Messagingを使用するかどうか。React Native SDK v1.38.0およびExpo Plugin v0.4.0で導入されました。 |
firebaseCloudMessagingSenderId |
string | Androidのみ。Firebase Cloud MessagingのセンダーID。React Native SDK v1.38.0およびExpo Plugin v0.4.0で導入されました。 |
sessionTimeout |
integer | アプリケーションのBrazeセッションタイムアウト(秒単位)。 |
enableSdkAuthentication |
boolean | SDK認証機能を有効にするかどうか。 |
logLevel |
integer | アプリケーションのログレベル。デフォルトのログレベルは8で、最小限の情報をログに記録します。デバッグ用の詳細ログを有効にするには、ログレベル0を使用します。 |
minimumTriggerIntervalInSeconds |
integer | トリガー間の最小時間間隔(秒単位)。デフォルトは30秒です。 |
enableAutomaticLocationCollection |
boolean | 自動位置情報収集を有効にするかどうか(ユーザーが許可した場合)。 |
enableGeofence |
boolean | ジオフェンスを有効にするかどうか。 |
enableAutomaticGeofenceRequests |
boolean | ジオフェンスリクエストを自動的に行うかどうか。 |
dismissModalOnOutsideTap |
boolean | iOSのみ。ユーザーがアプリ内メッセージの外側をクリックした場合にモーダルアプリ内メッセージを閉じるかどうか。 |
androidHandlePushDeepLinksAutomatically |
boolean | Androidのみ。Braze SDKがプッシュディープリンクを自動的に処理するかどうか。 |
androidPushNotificationHtmlRenderingEnabled |
boolean | Androidのみ。プッシュ通知のテキストコンテンツをandroid.text.Html.fromHtmlを使用してHTMLとして解釈・レンダリングするかどうかを設定します。 |
androidNotificationAccentColor |
string | Androidのみ。Android通知のアクセントカラーを設定します。 |
androidNotificationLargeIcon |
string | Androidのみ。Android通知のラージアイコンを設定します。 |
androidNotificationSmallIcon |
string | Androidのみ。Android通知のスモールアイコンを設定します。 |
iosRequestPushPermissionsAutomatically |
boolean | iOSのみ。アプリ起動時にプッシュ権限のプロンプトを自動的に表示するかどうか。 |
enableBrazeIosRichPush |
boolean | iOSのみ。iOS向けのリッチプッシュ機能を有効にするかどうか。 |
enableBrazeIosPushStories |
boolean | iOSのみ。iOS向けのBraze Push Storiesを有効にするかどうか。 |
iosPushStoryAppGroup |
string | iOSのみ。iOS Push Storiesに使用するアプリグループ。 |
iosUseUUIDAsDeviceId |
boolean | iOSのみ。デバイスIDにランダムに生成されたUUIDを使用するかどうか。 |
iosForwardUniversalLinks |
boolean | iOSのみ。SDKがユニバーサルリンクを自動的に認識してシステムメソッドに転送するかどうかを指定します(デフォルト:false)。有効にすると、SDKはアプリでのユニバーサルリンクのサポートで定義されたシステムメソッドにユニバーサルリンクを自動的に転送します。React Native SDK v11.1.0およびExpo Plugin v3.2.0で導入されました。 |
以下のコードスニペットは、app.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
29
30
31
32
33
34
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"baseUrl": "YOUR-SDK-ENDPOINT",
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
"iosForwardUniversalLinks": false
}
],
]
}
}
Androidプッシュ通知アイコンの設定
androidNotificationLargeIconとandroidNotificationSmallIconを使用する場合は、アイコンを適切に表示するために以下のベストプラクティスに従ってください:
アイコンの配置とフォーマット
Braze Expoプラグインでカスタムプッシュ通知アイコンを使用するには:
- 「アイコン要件」に記載されている要件に従ってアイコンファイルを作成します。
- プロジェクトのAndroidネイティブディレクトリ
android/app/src/main/res/drawable-<density>/に配置します(例:android/app/src/main/res/drawable-mdpi/、drawable-hdpi/など)。 - あるいは、React Nativeディレクトリでアセットを管理している場合は、Expoのapp.jsonアイコン設定を使用するか、Expo設定プラグインを作成してプレビルド時にアイコンをAndroid drawableフォルダーにコピーできます。
Braze Expoプラグインは、Androidのdrawableリソースシステムを使用してこれらのアイコンを参照します。
アイコン要件
- スモールアイコン: 透明な背景に白いシルエットである必要があります(これはAndroidプラットフォームの要件です)
- ラージアイコン: フルカラー画像を使用できます。
- フォーマット: PNG形式を推奨します。
- 命名規則: 小文字、数字、アンダースコアのみを使用してください(例:
my_large_icon.png)
app.jsonでの設定
以下のコードスニペットは、@drawable/プレフィックスを使用してapp.jsonでAndroid通知アイコンを参照する方法を示しています:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidNotificationLargeIcon": "@drawable/large_icon",
"androidNotificationSmallIcon": "@drawable/small_icon"
}
]
]
}
}

アイコンを参照する際に、相対ファイルパス(src/assets/images/icon.pngなど)を使用したり、ファイル拡張子を含めたりしないでください。Expoプラグインでは、プレビルドプロセス後にAndroidネイティブフォルダー内のアイコンを正しく見つけるために@drawable/プレフィックスが必要です。
仕組み
Braze Expoプラグインは、Androidのdrawableディレクトリからアイコンファイルを参照します。npx expo prebuildを実行すると、Expoはネイティブのandroidプロジェクト構造を生成します。アイコンは、ビルドプロセスの前にAndroidのdrawableフォルダー内に存在する必要があります(手動で配置するか、設定プラグインを通じてコピーします)。プラグインはその後、これらのdrawableリソースを名前(パスや拡張子なし)で使用するようにBraze SDKを設定します。これが、設定で@drawable/プレフィックスが必要な理由です。
Android通知アイコンの詳細については、Androidの通知アイコンガイドラインを参照してください。
ステップ2.3:アプリケーションをビルドして実行する
アプリケーションをプレビルドすると、Braze Expoプラグインが動作するために必要なネイティブファイルが生成されます。
以下のコードスニペットは、アプリケーションをプレビルドするコマンドを示しています:
1
npx expo prebuild
Expoドキュメントの指定に従ってアプリケーションを実行します。設定オプションを変更した場合は、アプリケーションを再度プレビルドして実行する必要があります。
方法2:React Native CLIを使用する
Androidのセットアップ
ステップ2.1:Kotlin Gradleプラグインを追加する
以下のコードスニペットは、トップレベルプロジェクトのbuild.gradleのbuildscript > dependenciesにKotlin Gradleプラグインを追加する方法を示しています:
1
2
3
4
5
6
7
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
これによりプロジェクトにKotlinが追加されます。
ステップ2.2:Braze SDKを設定する
Brazeサーバーに接続するには、プロジェクトのres/valuesフォルダーにbraze.xmlファイルを作成します。以下のコードスニペットは、braze.xmlの設定例を示しています。APIキーとエンドポイントをご自身の値に置き換えてください:
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
以下のコードスニペットは、AndroidManifest.xmlファイルに必要な権限を示しています:
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Braze Android SDKバージョン12.2.0以降では、gradle.propertiesファイルでimportBrazeLocationLibrary=trueを設定することで、android-sdk-locationライブラリを自動的に取り込むことができます。
ステップ2.3:ユーザーセッショントラッキングを実装する
openSession()とcloseSession()の呼び出しは自動的に処理されます。
以下のコードスニペットは、MainApplicationクラスのonCreate()メソッドに追加する内容を示しています:
1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
ステップ2.4:インテントの更新を処理する
MainActivityのandroid:launchModeがsingleTaskに設定されている場合、以下のコードスニペットはMainActivityクラスに追加する内容を示しています:
1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
iOSのセットアップ
ステップ2.5:(オプション)動的XCFrameworks用にPodfileを設定する
BrazeUIなどの特定のBrazeライブラリをObjective-C++ファイルにインポートするには、#import構文を使用する必要があります。Braze Swift SDKのバージョン7.4.0以降、バイナリには動的XCFrameworksとしてのオプションの配布チャネルがあり、この構文と互換性があります。
この配布チャネルを使用する場合は、PodfileでCocoaPodsのソースロケーションを手動でオーバーライドしてください。以下のコードスニペットはサンプルのオーバーライドを示しています。{your-version}をインポートしたい関連バージョンに置き換えてください:
1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
ステップ2.6:Podをインストールする
React Nativeはライブラリをネイティブプラットフォームに自動的にリンクするため、CocoaPodsを使用してSDKをインストールできます。
以下のコードスニペットは、プロジェクトのルートフォルダーからPodをインストールする方法を示しています:
1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install
# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install
ステップ2.7:Braze SDKを設定する
以下のコードスニペットは、AppDelegate.swiftファイルの先頭でBraze SDKをインポートする方法を示しています:
1
2
import BrazeKit
import braze_react_native_sdk
application(_:didFinishLaunchingWithOptions:)メソッドで、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、AppDelegateにスタティックプロパティを作成してアクセスしやすくします。

この例では、React Nativeのセットアップで多くの抽象化を提供するRCTAppDelegateの実装を前提としています。アプリで異なるセットアップを使用している場合は、必要に応じて実装を調整してください。
以下のコードスニペットは、AppDelegate.swiftのセットアップ例を示しています:
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
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "{BRAZE_API_KEY}",
endpoint: "{BRAZE_ENDPOINT}")
// Enable logging and customize the configuration here.
configuration.logger.level = .info
let braze = BrazeReactBridge.perform(
#selector(BrazeReactBridge.initBraze(_:)),
with: configuration
).takeUnretainedValue() as! Braze
AppDelegate.braze = braze
/* Other configuration */
return true
}
// MARK: - AppDelegate.braze
static var braze: Braze? = nil
以下のコードスニペットは、AppDelegate.mファイルの先頭でBraze SDKをインポートする方法を示しています:
1
2
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"
application:didFinishLaunchingWithOptions:メソッドで、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、AppDelegateにスタティックプロパティを作成してアクセスしやすくします。

この例では、React Nativeのセットアップで多くの抽象化を提供するRCTAppDelegateの実装を前提としています。アプリで異なるセットアップを使用している場合は、必要に応じて実装を調整してください。
以下のコードスニペットは、AppDelegate.mのセットアップ例を示しています:
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
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
endpoint:@"{BRAZE_ENDPOINT}"];
// Enable logging and customize the configuration here.
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazeReactBridge initBraze:configuration];
AppDelegate.braze = braze;
/* Other configuration */
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
ステップ3:SDKを初期化する
以下のコードスニペットは、React Nativeコードでライブラリをインポートする方法を示しています:
1
import Braze from "@braze/react-native-sdk";

React Native SDK 19.2.0以降では、React NativeレイヤーまたはネイティブのiOS・Androidレイヤーから Brazeを初期化できます。React Nativeレイヤーから初期化することで遅延初期化を使用でき、同意やログインなどのイベント後にSDKを開始できます。アプリが現在ネイティブレイヤーでBrazeを初期化している場合は、アップグレード時にそのセットアップを維持できます。各セットアップで通知がどのように動作するかを確認するには、コールドスタート時のプッシュ通知を参照してください。
次に、アプリ識別子APIキーとSDKエンドポイントを使用してBraze.initialize()を呼び出し、Brazeインスタンスを作成します。アプリフローのどこでこのメソッドを呼び出すかについては、以下のオプションを参照してください。
標準的な初期化
以下のコードスニペットは、useEffectでBraze.initialize()を呼び出してアプリ起動時にSDKを初期化する方法を示しています:
1
2
3
4
5
6
7
8
9
10
11
12
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}, []);
return (
// Your app components
);
};
遅延初期化
以下のコードスニペットは、SDK初期化をセッションの後半まで遅延する方法を示しています。たとえば、ユーザーが同意を付与するかログインを完了した後に初期化します:
1
2
3
function onUserConsent() {
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}

iOSでは、Braze.initialize()の前に受信したプッシュ通知はキューに入れられ、初期化後に処理されます。Androidでは、SDKが初期化を待機している間、Brazeはプッシュ通知からのディープリンクを解決しません。通知がアプリを起動する場合に通知を動作させ続けるには、コールドスタート時のプッシュ通知を参照してください。
プラットフォーム固有のAPIキー
以下のコードスニペットは、AndroidアプリとiOSアプリで異なるAPIキーを使用する場合のプラットフォーム検出方法を示しています:
1
2
3
4
5
6
7
8
9
import { Platform } from "react-native";
import Braze from "@braze/react-native-sdk";
const apiKey = Platform.select({
android: "YOUR-ANDROID-API-KEY",
ios: "YOUR-IOS-API-KEY",
}) ?? "";
Braze.initialize(apiKey, "YOUR-SDK-ENDPOINT");
再初期化
Braze.initialize()を複数回呼び出して、セッション中に異なるAPIキーとエンドポイントでSDKを再初期化できます。各呼び出しは前のBrazeインスタンスを破棄し、新しいインスタンスを作成します。

Braze.initialize()の前に行われたすべてのSDKメソッド呼び出しはiOSでは無視されるため、他のBrazeメソッドを使用する前にBraze.initialize()を呼び出してください。
コールドスタート時のプッシュ通知
通知がアプリを終了状態から起動する場合、Brazeは React Nativeが読み込まれる前にネイティブレイヤーに通知ペイロードを保存します。このため、React Nativeレイヤーからの初期化は、ペイロードがアプリに届くかどうかには影響しません。これらの通知を処理するには、ネイティブフックを追加し、React Nativeコードでペイロードを読み取ります。
Androidでは、MainActivityクラスのonCreate()メソッドでBrazeReactUtils.populateInitialPushPayloadFromIntent(intent)を呼び出します:
1
2
3
4
5
6
import com.braze.reactbridge.BrazeReactUtils
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
}
iOSでは、AppDelegateのapplication(_:didFinishLaunchingWithOptions:)メソッドでpopulateInitialPayload(fromLaunchOptions:)を呼び出します:
1
2
3
if let launchOptions {
BrazeReactUtils.sharedInstance().populateInitialPayload(fromLaunchOptions: launchOptions)
}
次に、React Nativeコードでペイロードを読み取ります:
1
2
3
4
5
Braze.getInitialPushPayload((pushPayload) => {
if (pushPayload) {
// Handle the notification, such as navigating to the pushPayload.url value
}
});

Androidで遅延初期化が有効な場合、Brazeは通知内のディープリンクを解決する代わりにメインアクティビティを開き、通知データをそのアクティビティに渡します。Braze.getInitialPushPayload()からのurl値を使用して、React Nativeコードでナビゲーションを処理してください。
プッシュ登録設定は、両方の初期化ロケーションのネイティブ設定に残り、Braze.initialize()の実行時にBrazeが適用します:
- Androidでは、
braze.xmlでcom_braze_firebase_cloud_messaging_registration_enabledとcom_braze_firebase_cloud_messaging_sender_idを設定します。 - iOSでは、
BrazeReactInitializer.configureに渡すconfigureクロージャー内の設定オブジェクトでpushプロパティを設定します。
アプリが終了状態から通知で起動された際のディープリンクに依存している場合は、React Native SDK 21.1.0以降を使用してください。これらのバージョンには、Androidでの初期プッシュペイロードのキャプチャとプッシュディープリンクの解決に関する修正が含まれています。変更の完全なリストについては、React Native SDKの変更ログを参照してください。
React Native SDK 19.1.0以前では、ネイティブ初期化はステップ2で行われます。BrazeメソッドをReact Nativeコードでインポートして呼び出します。詳細については、サンプルプロジェクトを確認してください。
1
import Braze from "@braze/react-native-sdk";
ステップ4:統合をテストする(オプション)
ダッシュボードでセッション統計を確認することで、SDKが統合されていることを検証できます。いずれかのプラットフォームでアプリケーションを実行すると、ダッシュボード(概要セクション)に新しいセッションが表示されるはずです。
以下のコードスニペットは、アプリで特定のユーザーのセッションを開く方法を示しています:
1
2
3
4
import Braze from "@braze/react-native-sdk";
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
Braze.changeUser("{some-user-id}");
ダッシュボードのオーディエンス > ユーザー検索で{some-user-id}のユーザーを検索します。そこで、セッションおよびデバイスデータがログに記録されていることを確認できます。
SDK統合をテストするために、以下のコードスニペットは、いずれかのプラットフォームでユーザーの新しいセッションを開始する方法を示しています。
1
Braze.changeUser("userId");
以下のコードスニペットは、アプリ起動時にユーザーIDを割り当てる例を示しています:
1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.changeUser("some-user-id");
}, []);
return (
<div>
...
</div>
)
Brazeダッシュボードで、ユーザー検索に移動し、some-user-idに一致するIDのユーザーを検索します。そこで、セッションおよびデバイスデータがログに記録されていることを確認できます。
Jestを使用したテスト
Braze SDKをインポートするReact Nativeのユニットテストでは、ネイティブモジュールとBraze Turbo Moduleのモックが必要です。Braze React Native SDKリポジトリでは、__tests__/jest.setup.jsにリファレンスとなるJestセットアップが含まれています。このファイル(または適宜調整したコピー)をJest設定のsetupFilesに追加することで、Braze APIを呼び出すコンポーネントのテスト時にNativeEventEmitter、TurboModuleRegistry、およびBrazeReactBridgeがモックされます。
次のステップ
Braze SDKを統合した後、一般的なメッセージング機能の実装を開始できます。
- プッシュ通知:ユーザーにプッシュ通知を設定して送信します。
- In-App Messages:アプリ内に文脈に応じたメッセージを表示します。
- バナー:アプリのインターフェイスに常駐バナーを表示します。
Roku SDKを統合する
ステップ1:ファイルを追加する
Braze SDKファイルは、Braze Roku SDKリポジトリのsdk_filesディレクトリにあります。
BrazeSDK.brsをアプリのsourceディレクトリに追加します。BrazeTask.brsとBrazeTask.xmlをアプリのcomponentsディレクトリに追加します。
ステップ2:参照を追加する
以下のscript要素を使用して、メインシーンにBrazeSDK.brsへの参照を追加します:
1
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>
ステップ3:設定する
main.brs内で、グローバルノードにBrazeの設定を行います:
1
2
3
4
5
6
7
8
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = {YOUR_API_KEY}
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = {YOUR_ENDPOINT}
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})
SDKエンドポイントとAPIキーは、Brazeダッシュボードで確認できます。
ステップ4:Brazeを初期化する
Brazeインスタンスを初期化します:
1
2
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)
オプション設定
ログ
Brazeの統合をデバッグするには、Rokuデバッグコンソールでログを確認できます。詳しくは、Roku Developersのコードのデバッグを参照してください。
Unity Braze SDKについて
型、関数、変数などの完全なリストについては、Unity宣言ファイルを参照してください。また、すでにUnityをiOS用に手動で統合している場合は、代わりに自動統合に切り替えることができます。
Unity SDKを統合する
前提条件
開始する前に、お使いの環境が最新のBraze Unity SDKバージョンでサポートされていることを確認してください。
ステップ1:Braze Unityパッケージを選択する
Braze .unitypackageは、AndroidプラットフォームとiOSプラットフォーム向けのネイティブバインディングをC#インターフェイスとともにバンドルします。
Braze UnityリリースページでいくつかのBraze Unityパッケージをダウンロードできます。
Appboy.unitypackage- このパッケージは、Braze AndroidおよびiOS SDKと、iOS SDKのSDWebImage依存関係をバンドルします。これは、Brazeアプリ内メッセージおよびiOS上のContent Cards機能を適切に機能させるために必要です。SDWebImageフレームワークは、GIFを含む画像のダウンロードと表示に使用されます。Brazeの完全な機能を使用する場合は、このパッケージをダウンロードしてインポートしてください。
Appboy-nodeps.unitypackage- このパッケージは
Appboy.unitypackageに似ていますが、SDWebImageフレームワークが含まれていない点が異なります。このパッケージは、iOSアプリにSDWebImageフレームワークを含めたくない場合に便利です。
- このパッケージは

Unity 2.6.0以降、バンドルされたBraze Android SDKアーティファクトにはAndroidX依存関係が必要です。以前にjetified unitypackageを使用していた場合は、対応するunitypackageに安全に移行できます。
Androidビルドが「This project uses AndroidX dependencies, but the ‘android.useAndroidX’ property is not enabled」で失敗する場合は、UnityのPublishing SettingsでCustom Gradle Properties Templateを有効にしてください。次にAssets/Plugins/Android/gradleTemplate.propertiesを開き、android.useAndroidX=trueを設定します。動作するテンプレートについては、Braze UnityサンプルアプリとそのgradleTemplate.propertiesファイルを参照してください。
Braze .unitypackageは、AndroidプラットフォームとiOSプラットフォーム向けのネイティブバインディングをC#インターフェイスとともにバンドルします。
Braze Unityパッケージは、次の2種類の統合オプションを使用して、Braze Unityリリースページでダウンロードできます。
Appboy.unitypackageのみ- このパッケージは、Braze AndroidとiOS SDKを追加の依存関係なしでバンドルします。この統合方法では、Brazeアプリ内メッセージおよびiOS上のContent Cards機能が適切に機能しません。カスタムコードなしでBrazeの完全な機能を使用する場合は、代わりに以下のオプションを使用してください。
- この統合オプションを使用する場合は、「Braze Configuration」の下にあるUnity UIで
Import SDWebImage dependencyの横にあるボックスにチェックマークが入っていないことを確認してください。
SDWebImageを含むAppboy.unitypackage- この統合オプションは、Braze AndroidおよびiOS SDKと、iOS SDKのSDWebImage依存関係をバンドルします。これは、Brazeアプリ内メッセージおよびiOS上のContent Cards機能を適切に機能させるために必要です。
SDWebImageフレームワークは、GIFを含む画像のダウンロードと表示に使用されます。Brazeの完全な機能を使用する場合は、このパッケージをダウンロードしてインポートしてください。 SDWebImageを自動的にインポートするには、「Braze Configuration」の下にあるUnity UIでImport SDWebImage dependencyの横にあるボックスにチェックマークが入っていることを確認してください。
- この統合オプションは、Braze AndroidおよびiOS SDKと、iOS SDKのSDWebImage依存関係をバンドルします。これは、Brazeアプリ内メッセージおよびiOS上のContent Cards機能を適切に機能させるために必要です。

ステップ2:パッケージをインポートする
Unityエディターで、Assets > Import Package > Custom Packageの順に移動して、Unityプロジェクトにパッケージをインポートします。次に、Importをクリックします。
または、カスタムUnityパッケージのインポートに関して詳しくは、Unityアセットパッケージのインポートの説明を参照してください。

iOSまたはAndroidプラグインのみをインポートする場合は、Braze .unitypackageをインポートするときにPlugins/AndroidまたはPlugins/iOSサブディレクトリの選択を解除してください。
Unityエディターで、Assets > Import Package > Custom Packageの順に移動して、Unityプロジェクトにパッケージをインポートします。次に、Importをクリックします。
または、カスタムUnityパッケージのインポートに関して詳しくは、Unityアセットパッケージのインポートの説明を参照してください。

iOSまたはAndroidプラグインのみをインポートする場合は、Braze .unitypackageをインポートするときにPlugins/AndroidまたはPlugins/iOSサブディレクトリの選択を解除してください。
ステップ3:SDKを設定する
ステップ3.1:AndroidManifest.xmlを設定する
Braze SDKが機能するようにAndroidManifest.xmlを設定します。アプリにAndroidManifest.xmlがない場合は、以下をテンプレートとして使用できます。すでにAndroidManifest.xmlがある場合は、以下の不足しているセクションが既存のAndroidManifest.xmlに追加されていることを確認してください。
Assets/Plugins/Android/ディレクトリに移動し、AndroidManifest.xmlファイルを開きます。これはUnityエディターのデフォルトの場所です。AndroidManifest.xmlに、以下のテンプレートにある必要な権限とアクティビティを追加します。- 完了後、
AndroidManifest.xmlには"android.intent.category.LAUNCHER"が存在するアクティビティが1つだけ含まれているはずです。
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
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="REPLACE_WITH_YOUR_PACKAGE_NAME">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/app_icon"
android:label="@string/app_name">
<!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
<activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:screenOrientation="sensor">
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>

AndroidManifest.xmlファイルに登録されているすべてのActivityクラスは、Braze Android SDKと完全に統合されている必要があります。そうでなければ分析が収集されません。独自のActivityクラスを追加する場合は、必ずBraze Unityプレーヤーを拡張して、これを防いでください。
ステップ3.2:AndroidManifest.xmlをパッケージ名で更新する
パッケージ名を確認するには、File > Build Settings > Player Settings > Android Tabを選択します。

AndroidManifest.xmlでは、REPLACE_WITH_YOUR_PACKAGE_NAMEのすべてのインスタンスを前のステップのPackage Nameに置き換える必要があります。
ステップ3.3:gradleの依存関係を追加する
Unityプロジェクトにgradleの依存関係を追加するには、まず公開設定で「Custom Main Gradle Template」を有効にします。これにより、プロジェクトで使用するテンプレートgradleファイルが作成されます。gradleファイルは、依存関係の設定やその他のビルド時のプロジェクト設定を処理します。詳細については、Braze UnityサンプルアプリのmainTemplate.gradleを参照してください。
次の依存関係が必要です。
1
2
3
4
5
6
implementation 'com.google.firebase:firebase-messaging:22.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1"
implementation 'androidx.core:core:1.6.0'
これらの依存関係は、External Dependency マネージャーを使用して設定することもできます。
ステップ3.4:Unity Android統合を自動化する
Brazeは、Unity Android統合を自動化するためのネイティブUnityソリューションを提供しています。
- UnityエディターでBraze > Braze Configurationの順に移動して、Braze設定を開きます。
- Automate Unity Android Integrationボックスにチェックマークを入れます。
- Braze API Keyフィールドに、Brazeダッシュボードの設定の管理にあるアプリケーションのAPIキーを入力します。

手動で作成したbraze.xmlファイルでは、プロジェクトのビルド中に設定値が競合する可能性があるため、この自動統合は使用しないでください。手動のbraze.xmlが必要な場合は、自動統合を無効にしてください。
ステップ3.1:APIキーを設定する
Brazeは、Unity iOS統合を自動化するためのネイティブUnityソリューションを提供しています。このソリューションは、UnityのPostProcessBuildAttributeを使用してビルドされたXcodeプロジェクトを変更し、IMPL_APP_CONTROLLER_SUBCLASSマクロを使用してUnityAppControllerをサブクラス化します。
- UnityエディターでBraze > Braze Configurationの順に移動して、Braze設定を開きます。
- Automate Unity iOS Integrationボックスにチェックマークを入れます。
- Braze API Keyフィールドに、設定の管理にあるアプリケーションのAPIキーを入力します。

アプリですでに別のUnityAppControllerサブクラスを使用している場合は、サブクラスの実装をAppboyAppDelegate.mmとマージする必要があります。
Unityパッケージをカスタマイズする
ステップ1:リポジトリを複製する
ターミナルで、Braze Unity SDK GitHubリポジトリを複製し、そのフォルダーに移動します。
1
2
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
1
2
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk
ステップ2:リポジトリからパッケージをエクスポートする
まずUnityを起動し、バックグラウンドで実行しておきます。次に、リポジトリのルートで以下のコマンドを実行して、パッケージをbraze-unity-sdk/unity-package/にエクスポートします。
1
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
1
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit

ステップ3:Unityにパッケージをインポートする
- Unityで、Assets > Import Package > Custom Packageの順に移動して、目的のパッケージをUnityプロジェクトにインポートします。
- インポートしたくないファイルがあれば、ここで選択を解除します。
Assets/Editor/Build.csにあるエクスポートされたUnityパッケージをカスタマイズします。
自動統合に切り替える(Swiftのみ)
Braze Unity SDKで提供される自動化されたiOS統合を利用するには、手動から自動統合に移行するための以下のステップに従ってください。
- Xcodeプロジェクトの
UnityAppControllerサブクラスから、Braze関連のコードをすべて削除します。 - UnityまたはXcodeプロジェクトからBraze iOSライブラリーを削除します(
Appboy_iOS_SDK.frameworkやSDWebImage.frameworkなど)。 - Braze Unityパッケージをプロジェクトに再度インポートします。完全なウォークスルーは、ステップ2:パッケージをインポートするを参照してください。
- APIキーを再度設定します。完全なウォークスルーは、ステップ3.1:APIキーを設定するを参照してください。
オプション設定
詳細ログ
Unityエディターで詳細ログを有効にするには、以下の手順を実行します。
- Braze > Braze Configurationの順に移動して、Braze設定を開きます。
- Show Braze Android Settingsドロップダウンをクリックします。
- SDK Log Levelフィールドに値「0」を入力します。
Prime 31の互換性
Prime31プラグインでBraze Unityプラグインを使用するには、Prime31互換のActivityクラスを使用するようにプロジェクトのAndroidManifest.xmlを編集します。以下のすべての参照を
com.braze.unity.BrazeUnityPlayerActivityからcom.braze.unity.prime31compatible.BrazeUnityPlayerActivityに変更してください。
Amazon Device Messaging (ADM)
Brazeは、UnityアプリへのADMプッシュの統合をサポートしています。ADMプッシュを統合する場合は、ADM APIキーを含むapi_key.txtというファイルを作成し、Plugins/Android/assets/フォルダーに配置してください。ADMとBrazeの統合の詳細については、ADMプッシュ統合の説明を参照してください。
Braze Unityプレーヤーの拡張(Androidのみ)
提供されているAndroidManifest.xmlファイルの例では、1つのActivityクラスBrazeUnityPlayerActivityが登録されています。このクラスはBraze SDKと統合され、セッション処理、アプリ内メッセージ登録、プッシュ通知分析ログなどの機能でUnityPlayerActivityを拡張します。UnityPlayerActivityクラスの拡張の詳細については、Unityを参照してください。
ライブラリーやプラグインプロジェクトで独自のカスタムUnityPlayerActivityを作成する場合は、カスタム機能をBrazeと統合するためにBrazeUnityPlayerActivityを拡張する必要があります。BrazeUnityPlayerActivityの拡張作業を始める前に、UnityプロジェクトにBrazeを統合するための手順に従ってください。
- Braze Android SDK統合の説明に従って、Braze Android SDKをライブラリーまたはプラグインプロジェクトに依存関係として追加します。
- Unity固有の機能を含むUnity
.aarを、Unity用に構築しているAndroidライブラリープロジェクトに統合します。appboy-unity.aarは、公開リポジトリから入手できます。Unityライブラリーが正常に統合されたら、BrazeUnityPlayerActivityを拡張するようにUnityPlayerActivityを変更します。 - ライブラリーまたはプラグインプロジェクトをエクスポートし、通常どおり
/<your-project>/Assets/Plugins/Androidにドロップします。ライブラリーやプラグインにBrazeのソースコードを含めないでください。それらはすでに/<your-project>/Assets/Plugins/Androidに存在しています。 /<your-project>/Assets/Plugins/Android/AndroidManifest.xmlを編集し、BrazeUnityPlayerActivityのサブクラスをメインアクティビティとして指定します。
これでUnity IDEから、Brazeと完全に統合され、カスタムUnityPlayerActivity機能を含む.apkをパッケージできるようになります。
トラブルシューティング
エラー:「File could not be read」
以下のようなエラーは無視して問題ありません。AppleのソフトウェアはCgBIと呼ばれる独自のPNG拡張を使用していますが、Unityはこれを認識しません。これらのエラーは、iOSのビルドやBrazeバンドル内の関連画像の適切な表示には影響しません。
1
Could not create texture from Assets/Plugins/iOS/AppboyKit/Appboy.bundle/...png: File could not be read
.NET MAUI SDKの統合
Braze .NET MAUI(旧称Xamarin)SDKを統合すると、基本的な分析機能に加え、ユーザーとのエンゲージメントに活用できる機能的なアプリ内メッセージが利用可能になります。
前提条件
.NET MAUI Braze SDKを統合する前に、以下の要件を満たしていることを確認してください。
version 3.0.0以降、このSDKでは.NET 6以降を使用する必要があり、Xamarinフレームワークを使用するプロジェクトのサポートは削除されています。version 4.0.0以降、このSDKはXamarin & Xamarin.Formsのサポートを終了し、.NET MAUIのサポートを追加しました。Xamarinのサポート終了に関するMicrosoftのポリシーを参照してください。
ステップ1: .NET MAUIバインディングを入手する
.NET MAUIバインディングとは、.NET MAUIアプリでネイティブライブラリーを利用する方法です。バインディングの実装は、ライブラリーに対してC#インターフェイスを構築し、アプリケーションでそのインターフェイスを使用することから構成されます。.NET MAUIのドキュメントを参照してください。Braze SDKバインディングを含めるには、NuGetを使用する方法と、ソースからコンパイルする方法の2つがあります。
最も簡単な統合方法は、NuGet.org中央リポジトリーからBraze SDKを取得することです。Visual StudioサイドバーでPackagesフォルダを右クリックし、Add Packages...をクリックします。「Braze」を検索し、BrazePlatform.BrazeAndroidBindingパッケージをプロジェクトにインストールします。
Brazeの位置情報サービスとジオフェンスを使用するには、BrazePlatform.BrazeAndroidLocationBindingパッケージもインストールしてください。
2番目の統合方法は、バインディングソースを含めることです。appboy-component/src/androidnet6にバインディングのソースコードがあります。.NET MAUIアプリケーションでBrazeAndroidBinding.csprojへのプロジェクト参照を追加すると、バインディングがプロジェクトと共にビルドされ、Braze Android SDKを利用できるようになります。
Brazeの位置情報サービスとジオフェンスを使用するには、appboy-component/src/androidnet6/BrazeAndroidLocationBindingにあるBrazeAndroidLocationBinding.csprojへのプロジェクト参照も追加してください。

.NET MAUI SDKバージョン4.0.0以降のiOSバインディングはBraze Swift SDKを使用しています。それ以前のバージョンでは従来のAppboyKit SDKを使用しています。
.NET MAUIバインディングとは、.NET MAUIアプリでネイティブライブラリーを利用する方法です。バインディングの実装は、ライブラリーに対してC#インターフェイスを構築し、アプリケーションでそのインターフェイスを使用することから構成されます。Braze SDKバインディングを含めるには、NuGetを使用する方法と、ソースからコンパイルする方法の2つがあります。
最も簡単な統合方法は、NuGet.org中央リポジトリーからBraze SDKを取得することです。Visual StudioサイドバーでPackagesフォルダを右クリックし、Add Packages...をクリックします。「Braze」を検索し、最新の.NET MAUI iOS NuGetパッケージであるBraze.iOS.BrazeKit、Braze.iOS.BrazeUI、およびBraze.iOS.BrazeLocationをプロジェクトにインストールします。
.NET MAUIへの移行を容易にするために、互換性ライブラリーパッケージBraze.iOS.BrazeKitCompatおよびBraze.iOS.BrazeUICompatも提供しています。
2番目の統合方法は、バインディングソースを含めることです。appboy-component/src/iosnet6にバインディングのソースコードがあります。.NET MAUIアプリケーションでBrazeiOSBinding.csprojへのプロジェクト参照を追加すると、バインディングがプロジェクトと共にビルドされ、Braze iOS SDKを利用できるようになります。プロジェクトの「Reference」フォルダにBrazeiOSBinding.csprojが表示されていることを確認してください。
ステップ2: Brazeインスタンスを設定する
ステップ2.1: Braze.xmlでBraze SDKを設定する
ライブラリーが統合されたので、プロジェクトのResources/valuesフォルダにBraze.xmlファイルを作成する必要があります。ファイルの内容は、次のコードスニペットのようになります。

YOUR_API_KEYを、Brazeダッシュボードの設定 > API キーにあるAPIキーに必ず置き換えてください。
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
<string-array name="com_braze_internal_sdk_metadata">
<item>XAMARIN</item>
<item>NUGET</item>
</string-array>
</resources>
バインディングソースを手動で含める場合は、コードから<item>NUGET</item>を削除してください。

ステップ2.2: Androidマニフェストに必要な権限を追加する
APIキーを追加したので、次の権限をAndroidManifest.xmlファイルに追加する必要があります。
1
<uses-permission android:name="android.permission.INTERNET" />
AndroidManifest.xmlの例については、Android MAUIサンプルアプリケーションを参照してください。
ステップ2.3: ユーザーセッションのトラッキングとアプリ内メッセージの登録
ユーザーセッショントラッキングを有効にし、アプリ内メッセージ用にアプリを登録するには、アプリのApplicationクラスのOnCreate()ライフサイクルメソッドに次の呼び出しを追加します。
1
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
Brazeインスタンスを設定する際に、次のスニペットを追加してインスタンスを設定します。

YOUR_API_KEYを、Brazeダッシュボードの設定 > API キーにあるAPIキーに必ず置き換えてください。
1
2
3
var configuration = new BRZConfiguration("YOUR_API_KEY", "YOUR_ENDPOINT");
configuration.Api.AddSDKMetadata(new[] { BRZSDKMetadata.Xamarin });
braze = new Braze(configuration);
iOS MAUIサンプルアプリケーションのApp.xaml.csファイルを参照してください。
ステップ3: 統合をテストする
これで、アプリケーションを起動して、セッションがBrazeダッシュボードに(デバイス情報やその他の分析と共に)記録されていることを確認できます。基本的なSDK統合のベストプラクティスの詳細については、Android統合の手順を参照してください。
これで、アプリケーションを起動して、セッションがBrazeダッシュボードに記録されていることを確認できます。基本的なSDK統合のベストプラクティスの詳細については、iOS統合の手順を参照してください。

現在公開中のiOS SDK向け.NET MAUIバインディングは、iOS Facebook SDK(ソーシャルデータの連携)には接続せず、またBrazeへのIDFA送信機能も含まれていません。
ChatGPTアプリの統合
セットアップ
ステップ1:Brazeの統合ファイルを取得する
ChatGPTアプリ統合リポジトリからbraze.jsファイルをプロジェクトにコピーします。このファイルには、必要なすべてのBraze SDKの設定とヘルパー関数が含まれています。
ステップ2:依存関係をインストールする
Brazeの最新機能を利用するには、Web SDKをインストールします。
クライアントサイド統合の場合:
1
npm install @braze/web-sdk
Implementation
There are two ways to integrate Braze with your ChatGPT app depending on your use case:
Client-side integration (custom widgets)

Recommended Approach: This method enables rich messaging experiences and real-time user interaction tracking within your ChatGPT app widgets.
For displaying Braze messaging and tracking user interactions within your custom ChatGPT app widgets, use the Web SDK integration. A full messaging example can be found in our sample repository here.
Configure widget metadata
Add the following metadata to your MCP server file to allow Braze domains, ensuring to update the CDN domain based on your region:
1
2
3
4
5
6
7
8
9
"openai/widgetCSP": {
connect_domains: ["https://YOUR-SDK-ENDPOINT"],
resource_domains: [
"https://appboy-images.com",
"https://braze-images.com",
"https://cdn.braze.eu",
"https://use.fontawesome.com"
],
}
YOUR-SDK-ENDPOINTを実際のBraze SDKエンドポイントに置き換えてください。
useBrazeフックを設定する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { useBraze } from "./utils/braze";
function YourWidget() {
const braze = useBraze({
apiKey: "your-braze-api-key",
baseUrl: "your-braze-endpoint.braze.com",
});
useEffect(() => {
if (!braze.isInitialized) {
return;
}
// Set user identity
braze.changeUser("user-id-123");
// Log widget interactions
braze.logCustomEvent("viewed_pizzaz_list");
}, [braze.isInitialized]);
return (
// Your widget JSX
);
}
Braze Content Cardsを表示する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const [cards, setCards] = useState([]);
useEffect(() => {
// Get cached content cards
setCards(braze.getCachedContentCards()?.cards ?? []);
// Subscribe to content card updates
braze.subscribeToContentCardsUpdates((contentCards) => {
setCards(contentCards.cards);
});
// Open session
braze.openSession();
return () => {
braze.removeAllSubscriptions();
}
}, []);
ウィジェットイベントをトラッキングする
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Track user interactions within your widget
const handleButtonClick = () => {
braze.logCustomEvent("widget_button_clicked", {
button_type: "save_list",
widget_name: "pizza_list"
});
};
const handleItemInteraction = (itemId) => {
braze.logCustomEvent("item_interacted", {
item_id: itemId,
interaction_type: "view_details"
});
};
サーバーサイド統合(MCPサーバー)
MCPサーバー上でメッセージング機能のサーバーサイド統合も必要な場合は、[email protected]までお問い合わせください。MCPサーバーからのイベントや購入のトラッキングには、REST APIを使用してください。
Braze Vega SDKについて
Braze Vega SDKを使用すると、分析データを収集し、リッチなアプリ内メッセージをユーザーに表示できます。Braze Vega SDKのほとんどのメソッドは非同期であり、awaitまたはresolveする必要があるPromiseを返します。
Braze Vega SDKの統合
ステップ1:Brazeライブラリをインストールする
お好みのパッケージマネージャーを使用してBraze Vega SDKをインストールします。
プロジェクトでNPMを使用している場合、Braze Vega SDKを依存関係として追加できます。
1
npm install @braze/vega-sdk --save
インストール後、必要なメソッドをインポートできます。
1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
プロジェクトでYarnを使用している場合、Braze Vega SDKを依存関係として追加できます。
1
yarn add @braze/vega-sdk
インストール後、必要なメソッドをインポートできます。
1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
ステップ2:SDKを初期化する
Braze Vega SDKをプロジェクトに追加した後、Brazeダッシュボードの設定 > アプリ設定にあるAPIキーとSDKエンドポイントURLを使用してライブラリを初期化します。

他のBrazeメソッドを呼び出す前に、changeUserのPromiseをawaitまたはresolveする必要があります。そうしないと、イベントや属性が誤ったユーザーに設定される可能性があります。
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
29
30
31
32
33
34
35
36
37
38
39
import { useEffect } from "react-native";
import {
initialize,
changeUser,
logCustomEvent,
openSession,
setCustomUserAttribute,
setUserCountry
} from "@braze/vega-sdk";
const App = () => {
useEffect(() => {
const initBraze = async () => {
// Initialize the SDK
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60,
appVersionNumber: "1.2.3.4",
enableLogging: true, // set to `true` for debugging
});
// Change user
await changeUser("user-id-123");
// Start a session
await openSession();
// Log custom events and set user attributes
logCustomEvent("visited-page", { pageName: "home" });
setCustomUserAttribute("my-attribute", "my-attribute-value");
setUserCountry("USA");
};
initBraze();
}, []);
return (
// Your app components
);
};

オプションの設定
ログ
デバッグやトラブルシューティングに役立つSDKログを有効にできます。ログを有効にするには複数の方法があります。
初期化時にログを有効にする
initialize() に enableLogging: true を渡すと、デバッグメッセージがコンソールに出力されます:
1
2
3
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
enableLogging: true
});

基本的なログはすべてのユーザーに表示されるため、コードを本番環境にリリースする前にログを無効にすることを検討してください。
初期化後にログを有効にする
toggleLogging() を使用して、初期化後にSDKログを有効または無効にできます:
1
2
3
4
import { toggleLogging } from "@braze/vega-sdk";
// Enable logging
toggleLogging();
カスタムログ
setLogger() を使用してカスタムロガー関数を提供することで、SDKログの処理方法をより細かくコントロールできます:
1
2
3
4
5
6
import { setLogger } from "@braze/vega-sdk";
setLogger((message) => {
console.log("Braze Custom Logger: " + message);
// Add your custom logging logic here
});
設定オプション
initialize() に追加の設定オプションを渡すことで、SDKの動作をカスタマイズできます:
1
2
3
4
5
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60, // Configure session timeout (default is 1800 seconds)
appVersionNumber: "1.2.3.4", // Set your app version
enableLogging: true, // Enable SDK logging
});
SDKのアップグレード
NPMまたはYarnからBraze Vega SDKを参照している場合、パッケージの依存関係を更新することで最新バージョンにアップグレードできます。
1
2
3
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk
統合のテスト
SDK統合が正しく動作しているかどうかを確認するには:
enableLogging: trueを設定してSDKを初期化し、コンソールにデバッグメッセージが表示されることを確認します- 他のSDKメソッドを呼び出す前に、必ず
await changeUser()を実行します await openSession()を呼び出してセッションを開始します- Brazeダッシュボードの概要でセッションデータが記録されていることを確認します
- カスタムイベントのログを記録し、ダッシュボードに表示されることを確認します
