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メッセージをウェブユーザーに表示できます。詳細については、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を統合できるノーコードソリューションです。詳しくは、Braze SDKでのGoogle Tag マネージャーの使用を参照してください。

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

ほとんどの広告ブロッカーはBraze Web SDKをブロックしませんが、一部のより制限の厳しい広告ブロッカーは問題を引き起こすことが知られています。
サイトがNPMまたはYarnパッケージマネージャーを使用している場合、Braze NPMパッケージを依存関係として追加できます。
Typescriptの型定義はv3.0.0以降含まれています。2.xから3.xへのアップグレードに関する注意事項については、変更ログを参照してください。
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk
インストール後、通常の方法でライブラリをimportまたはrequireできます:
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サポートにお問い合わせください。
// 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 Managerのアカウントとコンテナを作成する必要があります。
ステップ 1: タグテンプレートギャラリーを開く
Google Tag Managerでワークスペースを選択し、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 Push Token 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 ManagerのBraze Initialization Tagを使用する際にカスタムHTMLアプリ内メッセージを有効にするには、Braze Initialization OptionsでAllow HTML In-App Messagesを選択します。このチェックボックスは braze.initialize() の allowUserSuppliedJavascript 初期化オプションに対応し、true に設定します。Google Tag Managerの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 Managerのデバッグツールを使用して、設定したページやイベントで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もその操作が行われるまで表示されない可能性があります。
カスタムボット検出
特定のボットトラフィックパターンに基づいてカスタム検出を実装します。例えば:
- トラフィックで識別したパターンについて、ユーザーエージェント文字列を分析する
- ヘッドレスブラウザーの指標を確認する
- サードパーティのボット検出サービスを利用する
- サイト固有の行動シグナルを監視する
条件付き初期化の例:
// 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 を追加します。または、基本ログまたはカスタムログを有効にすることもできます。すべてのプラットフォームにわたる一元的な概要については、詳細ログを参照してください。
基本ログ
enableLogging を使用して、SDKが初期化される前に基本的なデバッグメッセージをJavaScriptコンソールに記録します。
enableLogging: true
メソッドは以下のようになります。
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
enableLogging: true
});
braze.openSession();
braze.toggleLogging() を使用して、SDKが初期化された後に基本的なデバッグメッセージをJavaScriptコンソールに記録します。メソッドは以下のようになります。
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();

カスタムログ
setLogger を使用して、カスタムのデバッグメッセージをJavaScriptコンソールに記録します。基本ログとは異なり、これらのログはユーザーには表示されません。
setLogger(loggerFunction: (message: STRING) => void): void
STRING をメッセージに置き換えます(単一の文字列パラメーターとして指定します)。メソッドは以下のようになります。
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のコンテンツデリバリーネットワーク(例:https://js.appboycdn.com/web-sdk/a.a/braze.min.js)からBraze Web SDKを参照する場合(デフォルトの統合手順で推奨されている方法)、ユーザーがサイトを更新すると、マイナーアップデート(バグ修正と後方互換性のある機能、この例では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.jsに配置されていますが、一部の統合ではカスタムの場所に設定されている場合があります。サービスワーカーファイルをホストするには、ルートディレクトリにアクセスする必要があります。
正常に動作させるために、これら2つのファイルを連携して更新する必要があります。
その他の統合方法
Accelerated Mobile Pages (AMP)
詳細を見る
ステップ1:AMP Webプッシュスクリプトを含める
以下の非同期スクリプトタグをheadに追加します:
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>
ステップ2:購読ウィジェットを追加する
ユーザーがプッシュの購読および購読解除を行えるウィジェットをHTMLのbodyに追加します。
<!-- 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に追加する必要がある点に注意してください。
<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}"
>
非同期モジュール定義(AMD)
サポートの無効化
サイトがRequireJSまたは他のAMDモジュールローダーを使用しているが、このリストの他のオプションのいずれかを使用してBraze Web SDKを読み込みたい場合は、AMDサポートを含まないバージョンのライブラリを読み込むことができます。このバージョンのライブラリは、以下のCDNロケーションから読み込むことができます:
モジュールローダー
RequireJSまたは他のAMDモジュールローダーを使用する場合は、ライブラリのコピーをセルフホストし、他のリソースと同様に参照することをお勧めします:
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のissueを参照してください)。Brazeではテストされていませんが、試すことができる他のオープンソースの回避策もあります。
Jestフレームワーク
Jestを使用する際に、SyntaxError: Unexpected token 'export'のようなエラーが表示されることがあります。これを修正するには、package.jsonの設定を調整してBraze SDKを無視するようにします:
"jest": {
"transformIgnorePatterns": [
"/node_modules/(?!@braze)"
]
}
SSRフレームワーク
Web SDKはブラウザ環境で実行されます。SSRフレームワークでは、サーバーがSDKコードを実行しないように、クライアント専用コンポーネントでBrazeを初期化します。
フレームワーク非依存の動的インポート
このセクションにフレームワークが記載されていない場合は、クライアント専用のライフサイクルフックからBrazeを動的にインポートできます。
// 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エクスポートのみを動的にインポートできます。
// 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フックを作成し、アプリのルート付近で呼び出します。
// 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を呼び出し、アプリをラップします。
// 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}</>;
}
// 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を呼び出します。
// 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を使用します。
// 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にどのメソッドを含めるかを指示するため、バンドルサイズを小さく保つことができます。
// 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を依存関係の検出から除外する必要があるかもしれません:
optimizeDeps: {
exclude: ['@braze/web-sdk']
},
その他のタグマネージャー
Brazeは、カスタムHTMLタグ内の統合手順に従うことで、他のタグ管理ソリューションとも互換性がある場合があります。これらのソリューションの評価についてサポートが必要な場合は、Brazeの担当者にお問い合わせください。
Android SDKを統合する
ステップ1:Gradleビルド設定を更新する
プロジェクトのリポジトリ設定(例:settings.gradle、settings.gradle.kts、またはトップレベルのbuild.gradle)で、リポジトリのリストにmavenCentral()を追加します。この構文はGroovyとKotlin DSLの両方で同じです。
repositories {
mavenCentral()
}
次に、Brazeを依存関係に追加します。以下の例では、SDK_VERSIONをお使いのAndroid Braze SDKの現在のバージョンに置き換えてください。バージョンの全リストについては、変更ログを参照してください。

- Kotlin DSL(
build.gradle.kts)の場合、implementation("...")構文を使用してください。 - Groovy(
build.gradle)の場合、implementation '...'構文を使用してください。 - バージョンカタログの場合、
gradle/libs.versions.tomlファイルにエントリを追加し、生成されたアクセサーを使用して参照してください。
Braze UIコンポーネントを使用する予定がない場合は、以下を依存関係に追加してください。
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.
}
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ファイルで:
[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の両方で同じです。
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コンポーネントを使用する予定がある場合は、以下を依存関係に追加してください。
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.
}
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ファイルで:
[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の両方で同じです。
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にログインして、クラスターアドレスを確認してください。
<?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に以下のパーミッションを追加します。
<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に設定します。
<bool name="com_braze_enable_delayed_initialization">true</bool>
ランタイムで遅延初期化を有効にするには、以下のメソッドを使用します。
Braze.enableDelayedInitialization(context);
Braze.enableDelayedInitialization(context)

遅延初期化が有効な場合、プッシュ通知にディープリンクアクションが含まれていても、ディープリンクは解決されません。
ステップ4.2:プッシュ分析を設定する(オプション)
遅延初期化が有効な場合、プッシュ分析はデフォルトでキューに入れられます。ただし、プッシュ分析を明示的にキューに入れるか、ドロップするかを選択することもできます。
明示的にキューに入れる
プッシュ分析を明示的にキューに入れるには、以下のいずれかのオプションを選択してください。
braze.xmlファイルで、com_braze_delayed_initialization_analytics_behaviorをQUEUEに設定します。
<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>
Braze.enableDelayedInitialization()メソッドにQUEUEを追加します。
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
ドロップする
プッシュ分析をドロップするには、以下のいずれかのオプションを選択してください。
braze.xmlファイルで、com_braze_delayed_initialization_analytics_behaviorをDROPに設定します。
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>
Braze.enableDelayedInitialization()メソッドにDROPを追加します。
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)
ステップ4.3:SDKを手動で初期化する
選択した遅延期間の後、Braze.disableDelayedInitialization()メソッドを使用してSDKを手動で初期化します。
Braze.disableDelayedInitialization(context);
Braze.disableDelayedInitialization(context)
ステップ5:ユーザーセッショントラッキングを有効にする
ユーザーセッショントラッキングを有効にすると、openSession()、closeSession()、ensureSubscribedToInAppMessageEvents()、およびInAppMessageManagerの登録の呼び出しを自動的に処理できます。
アクティビティのライフサイクルコールバックを登録するには、ApplicationクラスのonCreate()メソッドに以下のコードを追加してください。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
}
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を参照してください。
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);
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広告ID
Google広告ID(GAID)は、Google Playサービスが提供する、広告用のオプションのユーザー固有・匿名・一意・リセット可能なIDです。GAIDにより、ユーザーは識別子をリセットしたり、Google Playアプリ内のインタレストベース広告をオプトアウトしたりできます。また、開発者にはアプリの収益化を継続するためのシンプルで標準的なシステムが提供されます。
Google広告IDはBraze SDKによって自動的に収集されないため、Braze.setGoogleAdvertisingId()メソッドを使用して手動で設定する必要があります。
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();
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は、広告IDを非UIスレッドで収集することを求めています。
位置情報の追跡
Brazeの位置情報収集を有効にするには、braze.xmlファイルでcom_braze_enable_location_collectionをtrueに設定します:
<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()メソッドで他のメソッドよりも前に以下を追加します。
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
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メソッドに転送します。
BrazeLogger.setLogLevel(Log.VERBOSE);
BrazeLogger.logLevel = Log.VERBOSE
braze.xmlでログを有効にするには、ファイルに以下を追加します:
<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メソッドに転送します。
<integer name="com_braze_logger_initial_log_level">2</integer>
詳細ログの検証
ログがVERBOSEに設定されていることを確認するには、ログ内のどこかにV/Brazeが表示されるか確認してください。表示されていれば、詳細ログは正常に有効化されています。例:
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started
ログの抑制
Braze Android SDKのすべてのログを抑制するには、アプリケーションのonCreate()メソッドで他のメソッドよりも_前に_ログレベルをBrazeLogger.SUPPRESSに設定します。
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)
複数のAPIキー
複数のAPIキーの最も一般的なユースケースは、デバッグ用とリリース用のビルドバリアントでAPIキーを分離することです。
ビルド内で複数のAPIキーを簡単に切り替えるには、関連する各ビルドバリアントごとに個別のbraze.xmlファイルを作成することをお勧めします。ビルドバリアントは、ビルドタイプとプロダクトフレーバーの組み合わせです。デフォルトでは、新しいAndroidプロジェクトはdebugとreleaseのビルドタイプで構成され、プロダクトフレーバーはありません。
関連する各ビルドバリアントに対して、src/<build variant name>/res/values/ディレクトリに新しいbraze.xmlを作成します。ビルドバリアントがコンパイルされると、新しいAPIキーが使用されます。
<?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の排他モードを有効にできます。
アプリ内メッセージの排他モードを有効にするには:
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());
R8とProGuard
コード縮小の設定は、Brazeの統合に自動的に含まれます。
Brazeコードを難読化するクライアントアプリは、Brazeがスタックトレースを解釈できるように、リリースマッピングファイルを保存する必要があります。すべてのBrazeコードを保持し続けたい場合は、ProGuardファイルに以下を追加してください:
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }
Swift SDKを統合する
Swift Package Manager(SPM)、CocoaPods、または手動統合の方法を使用して、Braze Swift SDKを統合およびカスタマイズできます。さまざまなSDKシンボルの詳細については、Braze Swiftリファレンスドキュメントを参照してください。
前提条件
開始する前に、ご使用の環境が最新のBraze Swift SDKバージョンでサポートされていることを確認してください。
ステップ1:Braze Swift SDKをインストールする
Swift Package Manager(SwiftPM)またはCocoaPodsを使用してBraze Swift SDKをインストールすることを推奨します。また、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、およびBannersのためのBraze提供ユーザーインターフェイスライブラリ。デフォルトのUIコンポーネントを使用する場合は、このライブラリをインポートしてください。 |
拡張ライブラリについて

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

ステップ1.1:CocoaPodsをインストールする
完全なウォークスルーについては、CocoaPodsのGetting Startedガイドを参照してください。それ以外の場合は、以下のコマンドを実行してすぐに開始できます:
$ sudo gem install cocoapods
問題が発生した場合は、CocoaPodsのトラブルシューティングガイドを確認してください。
ステップ1.2:Podfileを構築する
次に、XcodeプロジェクトディレクトリにPodfileという名前のファイルを作成します。

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

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

ステップ1.2:フレームワークを選択する
Braze Swift SDKにはさまざまなスタンドアロンXCFrameworksが含まれており、必要な機能だけを自由に統合できます。以下のテーブルを参考にXCFrameworksを選択してください:
| パッケージ | 必須? | 説明 |
|---|---|---|
BrazeKit |
はい | 分析とプッシュ通知をサポートするメインSDKライブラリ。 |
BrazeLocation |
いいえ | 位置情報分析とジオフェンスモニタリングをサポートするロケーションライブラリ。 |
BrazeUI |
いいえ | アプリ内メッセージ、Content Cards、およびBannersのための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:ファイルを準備する
StaticまたはDynamic XCFrameworksのどちらを使用するかを決定し、ファイルを準備します:
- XCFrameworks用の一時ディレクトリを作成します。
braze-swift-sdk-prebuilt内のdynamicディレクトリを開き、BrazeKit.xcframeworkをディレクトリに移動します。ディレクトリは以下のようになるはずです:temp_dir └── BrazeKit.xcframework
- 選択した各XCFrameworkを一時ディレクトリに移動します。ディレクトリは以下のようになるはずです:
temp_dir ├── BrazeKit.xcframework ├── BrazeKitCompat.xcframework ├── BrazeLocation.xcframework └── SDWebImage.xcframework
ステップ1.4:フレームワークを統合する
次に、先ほど準備したDynamicまたはStatic 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 Runtimeを埋め込み、ビルド時に適切なフレームワークにリンクするようになります。
FILE_NAME.swift
FILE_NAMEをスペースを含まない任意の文字列に置き換えます。ファイルは以下のようになるはずです:
empty_swift_file.swift
ステップ2:遅延初期化を設定する(オプション)
Braze Swift SDKの初期化を遅延させることを選択できます。これは、アプリが設定を読み込む必要がある場合やSDKを開始する前にユーザーの同意を待つ必要がある場合に便利です。遅延初期化により、SDK初期化前に受信したBrazeプッシュ通知とプッシュトークンがキューに入れられ、SDKの初期化後に処理されます。
遅延初期化を使用するには、以下の最小Braze SDKバージョンが必要です:
ステップ2.1:遅延初期化を準備する
アプリのライフサイクルのできるだけ早い段階で、理想的にはapplication(_:didFinishLaunchingWithOptions:)内またはそれ以前にBraze.prepareForDelayedInitialization()を呼び出します。これにより、SDKが初期化される前に受信したプッシュ通知が適切にキャプチャされ、後で処理されるようになります。

これはBrazeからのプッシュ通知にのみ適用されます。その他のプッシュ通知はシステムデリゲートによって通常通り処理されます。
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
}
@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
}
}
- (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を渡します。初期化前にキューに入れられたプッシュ分析イベントは、初期化時に処理されサーバーにフラッシュされます。
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
破棄する
SDK初期化前に受信したプッシュ分析を破棄するには、analyticsBehaviorパラメーターに.dropを渡します。このオプションでは、SDKが初期化されていない間に発生したプッシュ分析イベントは無視されます。
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];
ステップ2.3:プッシュオートメーションをカスタマイズする(オプション)
pushAutomationパラメーターを渡すことで、プッシュオートメーションの設定をカスタマイズできます。デフォルトでは、requestAuthorizationAtLaunchを除くすべてのオートメーション機能が有効になっています。
// 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)
// 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を初期化します:
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
}
- (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に含まれる機能をインポートします:
import BrazeKit
次に、AppDelegateクラスに静的プロパティを追加して、アプリケーションのライフタイム全体を通じてBrazeインスタンスへの強参照を保持します:
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
}
SDKでは、アプリケーションが使用中にBrazeインスタンスへの強参照を保持する必要があります。予期しない副作用を防ぐために、Brazeインスタンスのプロパティやメソッドにアクセスまたは変更する前に、その参照を完全にキャプチャしていることを確認してください。
最後に、AppDelegate.swiftでapplication:didFinishLaunchingWithOptions:メソッドに以下のスニペットを追加します:
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をApp Settingsページの正しい値に更新してください。アプリ識別子APIキーの場所の詳細については、API識別子のタイプを確認してください。
AppDelegate.mファイルに以下のコード行を追加します:
@import BrazeKit;
次に、AppDelegate.mファイルに静的変数を追加して、アプリケーションのライフタイム全体を通じてBrazeインスタンスへの参照を保持します:
static Braze *_braze;
@implementation AppDelegate
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
@end
SDKでは、アプリケーションが使用中にBrazeインスタンスへの強参照を保持する必要があります。予期しない副作用を防ぐために、Brazeインスタンスのプロパティやメソッドにアクセスまたは変更する前に、その参照を完全にキャプチャしていることを確認してください。
最後に、AppDelegate.mファイルのapplication:didFinishLaunchingWithOptions:メソッド内に以下のスニペットを追加します:
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を参照してください。
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)
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ブランチを使用してください。
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master
位置情報収集とジオフェンスを使用する予定がある場合は、GitHubのgeofence-branchを使用してください。
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch

このステップを繰り返すことで、いつでもmasterとgeofence-branchを切り替えることができます。
ステップ2:プロジェクトを設定する
次に、プロジェクトのconfig.xmlファイルのplatform要素に以下のプリファレンスを追加します。
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
<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インスタンスのデータをBrazeダッシュボードの正しいアプリグループにルーティングするために使用されます。 |
config.xmlファイルのplatform要素は、以下のようになります:
<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>
<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で使用する際のプラットフォーム固有の構文について説明します。
整数
整数のプリファレンスは、以下の例のように文字列表現として読み取られます。
<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_ を先頭に付加した文字列として設定する必要があります。
<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が読み取ります。
<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が読み取ります。
<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ファイルの例です。
<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>
<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要素に以下の設定を追加してください。
<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()メソッドに追加してください:
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)
}
}
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プラグインをCordova Braze SDK 9.0.0以降にアップグレードした後にiOSビルドが失敗する場合は、Xcodeを15.2以降に更新し、プラグインが使用しているネイティブiOSバージョンのSwift SDKの変更ログと一致していることを確認してください。
Braze Flutter SDKをAndroidおよびiOSに統合すると、Dartで記述されたFlutterアプリ内でBraze APIを使用できるようになります。このプラグインは、基本的な分析機能を提供し、単一のコードベースでiOSとAndroidの両方にアプリ内メッセージとContent Cardsを統合できます。
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に適切な行が追加されます。
flutter pub add braze_plugin
ステップ2:ネイティブSDKのセットアップを完了する
2.1 Androidのセットアップ
コンパイル時に認証情報を提供する
プロジェクトのandroid/res/valuesフォルダにbraze.xmlファイルを作成します。APIキーとエンドポイントはDartからランタイム時に提供されるため、このファイルでは必要ありません。遅延初期化を有効にするには、com_braze_enable_delayed_initializationをファイルに追加します。
<?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でプログラム的に遅延初期化を有効にすることもできます。
import com.braze.Braze
class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Braze.enableDelayedInitialization(context = this)
}
}
AndroidManifest.xmlファイルに必要な権限を追加します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 iOSのセットアップ
既存のapplication(_:didFinishLaunchingWithOptions:)メソッド内で、BrazePlugin.configure(_:postInitialization:)を呼び出して設定を保存します。Brazeインスタンスは、Dartからinitialize()が呼び出されたときに後で作成されます。APIキーとエンドポイントはここでは設定しません。
AppDelegate.swiftに以下のコードを追加します。
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に以下のコードを追加します。
@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のセットアップ
Brazeサーバーに接続するには、プロジェクトのandroid/res/valuesフォルダにbraze.xmlファイルを作成します。以下のコードを貼り付け、API識別子キーとエンドポイントを自分の値に置き換えてください。
<?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ファイルに必要な権限を追加します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 iOSのセットアップ
AppDelegate.swiftファイルの先頭にBraze SDKのインポートを追加します。
import BrazeKit
import braze_plugin
同じファイルのapplication(_:didFinishLaunchingWithOptions:)メソッドでBraze設定オブジェクトを作成し、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようにAppDelegateにスタティックプロパティを作成します。
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をインポートします。
@import BrazeKit;
@import braze_plugin;
同じファイルのapplication:didFinishLaunchingWithOptions:メソッドでBraze設定オブジェクトを作成し、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようにAppDelegateにスタティックプロパティを作成します。
- (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の単一インスタンスを作成します。
import 'package:braze_plugin/braze_plugin.dart';
final BrazePlugin braze = BrazePlugin();
次に、アプリ識別子APIキーとSDKエンドポイントを指定してinitialize()を呼び出し、Brazeインスタンスを作成します。アプリフローのどこでこのメソッドを呼び出すかについては、以下のオプションを参照してください。
標準初期化
アプリの起動時にSDKを初期化するには、initState()内でinitialize()を呼び出します。
@override
void initState() {
super.initState();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}
遅延初期化
セッション中の後のタイミング(例:ユーザーが同意を許可した後やログインを完了した後)までSDKの初期化を延期するには、準備ができたときにinitialize()を呼び出します。
// ...
void onUserConsent() {
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

iOSでは、initialize()が呼び出される前に受信したプッシュ通知とディープリンクは処理されません。Androidでは、SDKが初期化を待機している間、プッシュ通知からのディープリンクは解決されません。アプリが起動時にプッシュ通知やディープリンクに依存している場合は、代わりに標準初期化を使用してください。
プラットフォーム固有のAPIキー
AndroidアプリとiOSアプリは異なるAPIキーを使用するため、プラットフォーム検出を使用します。
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の単一インスタンスのみを割り当てて使用してください。iOSでは、initialize()の前に行われたすべてのSDKメソッド呼び出しは無視されるため、他のBrazeメソッドを使用する前にinitialize()を呼び出してください。
Dartコードにプラグインをインポートするには、以下を使用します。
import 'package:braze_plugin/braze_plugin.dart';
次に、サンプルアプリのようにnew BrazePlugin()を呼び出してBrazeプラグインのインスタンスを初期化します。

未定義の動作を避けるため、DartコードではBrazePluginの単一インスタンスのみを割り当てて使用してください。
統合のテスト
ダッシュボードでセッション統計を確認することで、SDKが統合されていることを検証できます。いずれかのプラットフォームでアプリケーションを実行すると、ダッシュボードの概要セクションに新しいセッションが表示されるはずです。
アプリで以下のコードを呼び出すことで、特定のユーザーのセッションを開始できます。
BrazePlugin braze = BrazePlugin();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
braze.changeUser("{some-user-id}");
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ライブラリを統合する
npm install @braze/react-native-sdk
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プラグインをインストールするコマンドを示しています:
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のみ。iOSでBrazeを使用してプッシュ通知を処理するかどうか。 |
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設定の例を示しています:
{
"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通知アイコンを参照する方法を示しています:
{
"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プラグインが動作するために必要なネイティブファイルが生成されます。
以下のコードスニペットは、アプリケーションをプレビルドするコマンドを示しています:
npx expo prebuild
Expoドキュメントの指定に従ってアプリケーションを実行します。設定オプションを変更した場合は、プレビルドとアプリケーションの実行を再度行ってください。
方法2:React Native CLIを使用する
Androidのセットアップ
2.1 Kotlin Gradleプラグインを追加する
以下のコードスニペットは、トップレベルのプロジェクトbuild.gradleのbuildscript > dependenciesにKotlin Gradleプラグインを追加する方法を示しています:
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で遅延初期化を有効にする方法を示しています:
<?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ファイルに必要なパーミッションを示しています:
<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()メソッドに追加する内容を示しています:
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
2.4 インテントの更新を処理する
MainActivityのandroid:launchModeがsingleTaskに設定されている場合、以下のコードスニペットはMainActivityクラスに追加する内容を示しています:
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
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}をインポートする関連バージョンに置き換えてください:
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をインストールする方法を示しています:
# 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を設定する
BrazeReactInitializer.configureをAppDelegateで使用して、ネイティブ設定を登録します。指定したクロージャは保存され、JavaScriptからBraze.initialize(apiKey, endpoint)が呼び出されたときに適用されます。
以下のコードスニペットは、AppDelegate.swiftファイルの先頭でBraze SDKをインポートする方法を示しています:
import BrazeKit
import braze_react_native_sdk
application(_:didFinishLaunchingWithOptions:)メソッドで、BrazeReactInitializer.configureを使用してネイティブ設定を登録します。ここではAPIキーやエンドポイントを設定しないでください。これらはBraze.initialize()を通じてJavaScriptから提供されます。
configureクロージャ:Braze.Configurationを受け取り、ネイティブの設定プロパティ(ログ、プッシュ、セッションなど)を設定できます。postInitializationクロージャ(オプション):作成後のライブBrazeインスタンスを受け取り、インスタンスが必要なセットアップ(参照の保存やデリゲートの設定など)に使用します。
以下のコードスニペットは、BrazeReactInitializer.configureを使用したAppDelegate.swift実装の例を示しています:
@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をインポートする方法を示しています:
@import BrazeKit;
@import braze_react_native_sdk;
application:didFinishLaunchingWithOptions:メソッドで、BrazeReactInitializerを使用してネイティブ設定を登録します。ここではAPIキーやエンドポイントを設定しないでください。これらはBraze.initialize()を通じてJavaScriptから提供されます。
以下のコードスニペットは、BrazeReactInitializerを使用したAppDelegate.m実装の例を示しています:
- (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プラグインをインストールするコマンドを示しています:
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のみ。iOSでBrazeを使用してプッシュ通知を処理するかどうか。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設定の例を示しています:
{
"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通知アイコンを参照する方法を示しています:
{
"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プラグインが動作するために必要なネイティブファイルが生成されます。
以下のコードスニペットは、アプリケーションをプレビルドするコマンドを示しています:
npx expo prebuild
Expoドキュメントの指定に従ってアプリケーションを実行します。設定オプションを変更した場合は、プレビルドとアプリケーションの実行を再度行う必要があります。
方法2:React Native CLIを使用する
Androidのセットアップ
ステップ2.1:Kotlin Gradleプラグインを追加する
以下のコードスニペットは、トップレベルのプロジェクトbuild.gradleのbuildscript > dependenciesにKotlin Gradleプラグインを追加する方法を示しています:
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キーとエンドポイントをご自身の値に置き換えてください:
<?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ファイルに必要なパーミッションを示しています:
<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()メソッドに追加する内容を示しています:
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
ステップ2.4:インテントの更新を処理する
MainActivityのandroid:launchModeがsingleTaskに設定されている場合、以下のコードスニペットはMainActivityクラスに追加する内容を示しています:
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
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}をインポートする関連バージョンに置き換えてください:
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をインストールする方法を示しています:
# 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をインポートする方法を示しています:
import BrazeKit
import braze_react_native_sdk
application(_:didFinishLaunchingWithOptions:)メソッドで、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようにAppDelegateにスタティックプロパティを作成します。

この例は、React Nativeのセットアップにおいて多数の抽象化を提供するRCTAppDelegateの実装を前提としています。アプリで異なるセットアップを使用している場合は、必要に応じて実装を調整してください。
以下のコードスニペットは、AppDelegate.swiftセットアップの例を示しています:
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をインポートする方法を示しています:
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"
application:didFinishLaunchingWithOptions:メソッドで、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようにAppDelegateにスタティックプロパティを作成します。

この例は、React Nativeのセットアップにおいて多数の抽象化を提供するRCTAppDelegateの実装を前提としています。アプリで異なるセットアップを使用している場合は、必要に応じて実装を調整してください。
以下のコードスニペットは、AppDelegate.mセットアップの例を示しています:
- (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コードでライブラリをインポートする方法を示しています:
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を初期化する方法を示しています:
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の初期化を遅延させる方法を示しています。例えば、ユーザーが同意を付与した後やログインを完了した後に初期化します:
function onUserConsent() {
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}

iOSでは、Braze.initialize()の前に受信したプッシュ通知はキューに入れられ、初期化後に処理されます。Androidでは、SDKが初期化を待っている間、Brazeはプッシュ通知からのディープリンクを解決しません。いずれかの通知がアプリを起動したときに通知を正常に動作させるには、コールドスタート時のプッシュ通知を参照してください。
プラットフォーム固有のAPIキー
以下のコードスニペットは、AndroidとiOSのアプリで異なるAPIキーを使用する場合のプラットフォーム検出方法を示しています:
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)を呼び出します:
import com.braze.reactbridge.BrazeReactUtils
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
}
iOSでは、AppDelegateのapplication(_:didFinishLaunchingWithOptions:)メソッドでpopulateInitialPayload(fromLaunchOptions:)を呼び出します:
if let launchOptions {
BrazeReactUtils.sharedInstance().populateInitialPayload(fromLaunchOptions: launchOptions)
}
次に、React Nativeコードでペイロードを読み取ります:
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で行います。React NativeコードでライブラリをインポートしてBrazeメソッドを呼び出します。詳細については、サンプルプロジェクトを確認してください。
import Braze from "@braze/react-native-sdk";
ステップ4:統合をテストする(オプション)
ダッシュボードでセッション統計を確認することで、SDKが統合されていることを検証できます。いずれかのプラットフォームでアプリケーションを実行すると、ダッシュボード(概要セクション)に新しいセッションが表示されます。
以下のコードスニペットは、アプリで特定のユーザーのセッションを開始する方法を示しています:
import Braze from "@braze/react-native-sdk";
Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
Braze.changeUser("{some-user-id}");
ダッシュボードのオーディエンス > ユーザー検索で{some-user-id}のユーザーを検索します。そこで、セッションとデバイスデータがログに記録されたことを確認できます。
SDK統合をテストするには、以下のコードスニペットでいずれかのプラットフォーム上のユーザーの新しいセッションを開始する方法を示しています。
Braze.changeUser("userId");
以下のコードスニペットは、アプリ起動時にユーザーIDを割り当てる例を示しています:
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への参照を追加します:
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>
ステップ3:設定する
main.brs内で、グローバルノードにBrazeの設定を行います:
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インスタンスを初期化します:
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)
オプション設定
ログ
Brazeの統合をデバッグするには、Rokuデバッグコンソールでログを確認できます。詳しくは、Roku Developersのコードのデバッグを参照してください。
Unity Braze SDKについて
型、関数、変数などの完全なリストについては、Unity宣言ファイルを参照してください。また、すでにiOS向けにUnityを手動で統合している場合は、代わりに自動統合に切り替えることもできます。
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依存関係をバンドルしています。これは、iOSでのBrazeアプリ内メッセージおよび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パッケージは、Braze Unityリリースページから2つの統合オプションでダウンロードできます:
Appboy.unitypackageのみ- このパッケージは、追加の依存関係なしでBraze AndroidおよびiOS SDKをバンドルしています。この統合方法では、iOSでのBrazeアプリ内メッセージおよびContent Cards機能が正常に動作しません。Brazeのフル機能をカスタムコードなしで利用する場合は、次のオプションを使用してください。
- この統合オプションを使用するには、Unity UIの「Braze Configuration」で
Import SDWebImage dependencyの横のチェックボックスがオフになっていることを確認してください。
Appboy.unitypackageとSDWebImage- この統合オプションは、Braze AndroidおよびiOS SDKと、iOS SDKのSDWebImage依存関係をバンドルしています。これは、iOSでのBrazeアプリ内メッセージおよびContent Cards機能の正常な動作に必要です。
SDWebImageフレームワークは、GIFを含む画像のダウンロードと表示に使用されます。Brazeのフル機能を利用する場合は、このパッケージをダウンロードしてインポートしてください。 SDWebImageを自動的にインポートするには、Unity UIの「Braze Configuration」でImport SDWebImage dependencyの横のチェックボックスを必ずオンにしてください。
- この統合オプションは、Braze AndroidおよびiOS SDKと、iOS SDKのSDWebImage依存関係をバンドルしています。これは、iOSでのBrazeアプリ内メッセージおよびContent Cards機能の正常な動作に必要です。

ステップ2:パッケージをインポートする
Unity Editorで、Assets > Import Package > Custom Packageに移動して、パッケージをUnityプロジェクトにインポートします。次に、Importをクリックします。
または、カスタムUnityパッケージのインポートに関する詳細なガイドについては、Unityアセットパッケージのインポートの手順に従ってください。

iOSまたはAndroidプラグインのみをインポートしたい場合は、Brazeの.unitypackageをインポートする際にPlugins/AndroidまたはPlugins/iOSサブディレクトリの選択を解除してください。
Unity Editorで、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 Editorのデフォルトの場所です。AndroidManifest.xmlに、以下のテンプレートから必要な権限とアクティビティを追加します。- 完了後、
AndroidManifest.xmlには"android.intent.category.LAUNCHER"が存在する単一のActivityのみが含まれるようにしてください。
<?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依存関係を追加するには、まずPublishing Settingsで「Custom Main Gradle Template」を有効にします。これにより、プロジェクトが使用するテンプレートgradleファイルが作成されます。gradleファイルは依存関係の設定やその他のビルド時のプロジェクト設定を処理します。詳細については、Braze UnityサンプルアプリのmainTemplate.gradleを確認してください。
以下の依存関係が必要です:
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 Managerを使用して設定することもできます。
ステップ3.4:Unity Android統合を自動化する
BrazeはUnity Android統合を自動化するためのネイティブUnityソリューションを提供しています。
- Unity Editorで、Braze > Braze Configurationに移動してBraze Configuration Settingsを開きます。
- 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 Editorで、Braze > Braze Configurationに移動してBraze Configuration Settingsを開きます。
- Automate Unity iOS Integrationチェックボックスをオンにします。
- Braze API Keyフィールドに、設定の管理にあるアプリケーションのAPIキーを入力します。

アプリケーションが別のUnityAppControllerサブクラスをすでに使用している場合は、サブクラスの実装をAppboyAppDelegate.mmとマージする必要があります。
Unityパッケージのカスタマイズ
ステップ1:リポジトリをクローンする
ターミナルでBraze Unity SDK GitHubリポジトリをクローンし、そのフォルダに移動します:
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
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/にエクスポートします。
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
"%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 Editorで詳細ログを有効にするには、以下の手順を実行します。
- Braze > Braze Configuration に移動して、Braze Configuration Settings を開きます。
- Show Braze Android Settings ドロップダウンをクリックします。
- SDK Log Level フィールドに値「0」を入力します。
Prime 31 との互換性
Braze Unity プラグインを Prime31 プラグインと一緒に使用するには、プロジェクトの AndroidManifest.xml を編集して、Prime31 互換の Activity クラスを使用します。すべての 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 ライブラリの統合が完了したら、UnityPlayerActivityをBrazeUnityPlayerActivityを拡張するように変更します。 - ライブラリまたはプラグインプロジェクトをエクスポートし、通常どおり
/<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バンドル内の関連画像の正常な表示には影響しません。
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キーに必ず置き換えてください。
<?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ファイルに追加する必要があります。
<uses-permission android:name="android.permission.INTERNET" />
AndroidManifest.xmlの例については、Android MAUIサンプルアプリケーションを参照してください。
ステップ2.3: ユーザーセッションのトラッキングとアプリ内メッセージの登録
ユーザーセッショントラッキングを有効にし、アプリ内メッセージ用にアプリを登録するには、アプリのApplicationクラスのOnCreate()ライフサイクルメソッドに次の呼び出しを追加します。
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
Brazeインスタンスを設定する際に、次のスニペットを追加してインスタンスを設定します。

YOUR_API_KEYを、Brazeダッシュボードの設定 > APIキーにあるAPIキーに必ず置き換えてください。
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をインストールします。
クライアントサイド統合の場合:
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:
"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フックを設定する
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を表示する
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();
}
}, []);
ウィジェットイベントをトラッキングする
// 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を依存関係として追加できます。
npm install @braze/vega-sdk --save
インストール後、必要なメソッドをインポートできます:
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
プロジェクトでYarnを使用している場合、Braze Vega SDKを依存関係として追加できます。
yarn add @braze/vega-sdk
インストール後、必要なメソッドをインポートできます:
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
ステップ2:SDKを初期化する
Braze Vega SDKをプロジェクトに追加したら、Brazeダッシュボードの設定 > アプリ設定にあるAPIキーとSDKエンドポイントURLを使用してライブラリを初期化します。

他のBrazeメソッドを呼び出す前に、changeUserプロミスをawaitまたはresolveする必要があります。そうしないと、イベントや属性が誤ったユーザーに設定される可能性があります。
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 を渡すと、デバッグメッセージがコンソールに出力されます。
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
enableLogging: true
});

基本ログはすべてのユーザーに表示されるため、コードを本番環境にリリースする前にログを無効にすることを検討してください。
初期化後にログを有効にする
toggleLogging() を使用して、初期化後にSDKログの有効・無効を切り替えます。
import { toggleLogging } from "@braze/vega-sdk";
// Enable logging
toggleLogging();
カスタムログ
setLogger() を使用してカスタムロガー関数を提供することで、SDKログの処理方法をより詳細にコントロールできます。
import { setLogger } from "@braze/vega-sdk";
setLogger((message) => {
console.log("Braze Custom Logger: " + message);
// Add your custom logging logic here
});
設定オプション
initialize() に追加の設定オプションを渡すことで、SDKの動作をカスタマイズできます。
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を参照している場合、パッケージの依存関係を更新することで最新バージョンにアップグレードできます。
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk
統合のテスト
SDK統合が正しく動作していることを確認するには:
enableLogging: trueを指定してSDKを初期化し、コンソールにデバッグメッセージが表示されることを確認します- 他のSDKメソッドを呼び出す前に
await changeUser()を実行します await openSession()を呼び出してセッションを開始します- Brazeダッシュボードの概要でセッションデータが記録されていることを確認します
- カスタムイベントをログに記録し、ダッシュボードに表示されることを確認します
