Braze SDKを統合する
Braze SDKの統合方法を学習する。各SDKは、独自のGitHub公開リポジトリでホストされており、Brazeの機能をテストしたり、独自のアプリケーションと一緒に実装したりするために使用できる、完全にビルド可能なサンプルアプリが含まれている。詳しくは、参照資料、リポジトリ、サンプルアプリを参照してください。SDK に関する一般的な情報については、[はじめに] を参照してください。統合の概要](/docs/ja/developer_guide/getting_started/integration_overview/)。
SDKを統合した後、SDK認証をイネーブルメントすることで、不正なSDKリクエストを防止し、セキュリティを強化できる。SDK認証は、Web、Android、SWIFT、React Native、Flutter、Unity、Cordova、.NET MAUI(Xamarin)、Expoで利用可能だ。
Web Braze SDKについて
Web Braze SDKを使えば、分析データを収集し、ウェブユーザー向けにリッチなアプリ内メッセージ、プッシュ通知、コンテンツカードメッセージを表示できる。詳細については、Braze JavaScriptリファレンスドキュメントを参照せよ。
このガイドでは、Braze Web SDK 4.0.0+ のコードサンプルを使用します。最新の Web SDK バージョンにアップグレードするには、SDK アップグレードガイドを参照してください。
Web SDK を連携
Web Braze SDKは次の方法で統合できる。追加のオプションについては、他の統合方法を参照せよ。
- コードベースの統合:お好みのパッケージマネージャーかBraze CDNを使って、Web Braze SDKをコードベースに直接組み込む。これにより、SDKを読み込む方法と設定方法を完全にコントロールできる。
- Google Tag Manager:サイトのコードを変更せずにWeb Braze SDKを統合できるノーコードソリューションだ。詳細については、Braze SDK を使用した Google Tag Manager を参照のこと。
NPM統合方式の使用を推奨する。メリットには、SDKライブラリーをWeb サイトにローカル保存できること、広告ブロック拡張機能の影響を受けないこと、バンドラーサポートの一環として読み込み速度の向上に寄与することが含まれる。
ステップ 1: Brazeライブラリをインストールする
Brazeライブラリは、以下のいずれかの方法でインストールできます。ただし、Web サイトがコンテンツセキュリティポリシーを使用しているContent-Security-Policy場合は、続行する前にそのポリシーを確認すること。
ほとんどの広告ブロッカーはBraze Web SDKをブロックしないが、より制限の厳しい広告ブロッカーでは問題が発生することが知られている。
あなたのサイトがNPMまたはYarnパッケージマネージャを使用している場合、依存関係としてBraze NPMパッケージを追加することができます。
v3.0.0 からタイプスクリプトの定義が含まれるようになりました。2.x から 3.x へのアップグレードに関する注意事項については、changelog を参照してください。
1
2
3
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk
インストール後は、通常の方法でライブラリを import または require できます。
1
2
3
import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");
Braze Web SDKをHTMLに直接追加するには、当社のCDNホストスクリプトを参照し、ライブラリを非同期で読み込みます。
Safariのデフォルト設定である「クロスサイトトラッキングの防止」は、CDN統合方式を使用する場合、バナーやコンテンツカードなどのアプリ内メッセージタイプの表示を妨げる可能性がある。この問題を回避するには、NPM統合方式を使用する。そうすればSafariがこれらのメッセージをクロスサイト通信として分類せず、ウェブユーザーは全ての対応ブラウザでそれらを確認できる。
ステップ2:SDK の初期化
Braze Web SDKをWeb サイトに追加した後、Brazeダッシュボードの「設定」>「アプリ設定」にあるAPI キーとSDKエンドポイントURLでライブラリーを初期化する。のオプションの完全な一覧とbraze.initialize()、その他のJavaScriptメソッドについては、Braze JavaScriptドキュメントを参照せよ。
Web SDKリクエストにおけるカスタムドメインはサポートされていない。Web SDKはBraze baseUrlSDKのエンドポイントでなければならない(例:sdk.iad-05.braze.com)。Brazeは、CNAMEレコードを介して顧客所有のドメインを経由するWeb SDKトラフィックのルーティングをサポートしない。Web SDKのリクエストを自身のドメインから発信する必要がある場合は、Brazeサポートに連絡すること。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
enableLogging: false, // set to `true` for debugging
allowUserSuppliedJavascript: false, // set to `true` to support custom HTML messages
});
// Enable automatic display of in-app messages
// Required if you want in-app messages to display automatically when triggered
braze.automaticallyShowInAppMessages();
// if you use Content Cards
braze.subscribeToContentCardsUpdates(function(cards){
// cards have been updated
});
// optionally set the current user's external ID before starting a new session
// you can also call `changeUser` later in the session after the user logs in
if (isLoggedIn){
braze.changeUser(userIdentifier);
}
// `openSession` should be called last - after `changeUser` and `automaticallyShowInAppMessages`
braze.openSession();
アプリ内メッセージ表示:アプリ内メッセージがトリガーされた際に自動的に表示するには、を呼び出す必要があるbraze.automaticallyShowInAppMessages()。この呼び出しがないと、アプリ内メッセージは自動的には表示されない。メッセージ表示を手動で管理したい場合は、この呼び出しを削除し、代わりにbraze.subscribeToInAppMessage()を使用せよ。詳細については、アプリ内メッセージ配信を参照せよ。
匿名ユーザーにおけるセッション消失のトラブルシューティング
「セッションが欠落している」という現象が発生している場合、またはWeb上で匿名のままのユーザーのセッションをトラッキングできない場合は、初期化中に統合braze.openSession()が呼び出されていることを確認せよ。
- シナリオ:匿名ユーザーはBraze IDを返すが、セッションデータは空白か欠落している。
- 原因:実装は呼び出さない
braze.openSession()。 - 決議:初期化後は必ず
braze.openSession()呼び出すこと(external IDを設定した場合はbraze.changeUser()その後も)。
詳細については、ステップ2を参照せよ。SDKを初期化する。
モバイルデバイスまたは Web デバイスの匿名ユーザーは、MAU にカウントされる場合があります。その結果、これらのユーザーをMAUカウントから除外するために、条件付きでSDKをロードするか、初期化したい場合があります。
前提条件
この連携方法を使用する前に、Google Tag Managerのアカウントとコンテナを作成する必要がある。
ステップ 1: タグテンプレートギャラリーを開け
Google Tag Managerで、ワークスペースを選択し、次に「テンプレート」を選ぶ。タグテンプレート ペインで、検索ギャラリーを選択する。

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

ワークスペースに追加>追加を選択する。

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

鉛筆アイコンを選択すると、タグ設定のドロップダウンが開く。

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

ステップ 4: 初期化オプションの選択
Brazeの初期化タグは、以下のオプションを公開する。これらのほとんどはWeb SDKに直接対応している。また一部は、タグが初期化時にInitializationOptions呼び出すWeb SDKのメソッドに対応している。統合のニーズに合うオプションを選択せよ:
| GTMオプション | Web SDKの設定またはメソッド | 説明 |
|---|---|---|
| アプリ内メッセージでHTMLを許可する | allowUserSuppliedJavascript |
アプリ内メッセージ、バナー、およびユーザーが提供するJavaScriptクリックアクションでHTMLをイネーブルメントする。カスタムHTMLを使用するアプリ内メッセージやバナーのHTMLに必須である。HTMLとJavaScriptの内容を信頼できる場合にのみイネーブルメントせよ。これはユーザーが提供したJavaScriptの実行を許可するからだ。 |
| アプリバージョン番号 | appVersion, appVersionNumber |
セグメンテーション用のアプリ版(例:1.2.3.4)。 |
| 自動的に新しいセッションを開く | braze.openSession() |
このメソッドを呼び出すことで、SDKが初期化された後に新しいセッションを開く。 |
| アプリ内メッセージを自動的に表示する | braze.automaticallyShowInAppMessages() |
初期化後にこのメソッドを呼び出すことで、サーバーから新しいアプリ内メッセージが届いた際に自動的に表示する。 |
| 自動プッシュトークンメンテナンスを無効にする | disablePushTokenMaintenance |
新しいセッションでは、SDKがプッシュトークンをBrazeバックエンドと同期するのを止める。 |
| 自動サービスワーカー登録を無効にする | manageServiceWorkerExternally |
サービスワーカーを自分で登録してコントロールする場合に使用する。 |
| Cookieを無効にする | noCookies |
ユーザー/セッションデータにはCookieではなくlocalStorageを使用する。クロスサブドメイン認識を防ぐ。 |
| Font Awesomeを無効化する | doNotLoadFontAwesome |
SDKがCDNからFont Awesomeを読み込むのを防ぐ。サイトに独自のFont Awesomeがある場合に使用する。 |
| SDK認証を有効にする | enableSdkAuthentication |
SDK認証をイネーブルメントする。 |
| Web SDKのログ記録を有効にする | enableLogging |
デバッグ用のコンソールログのイネーブルメント。本番環境では削除せよ。 |
| トリガーメッセージ間の最小間隔 | minimumIntervalBetweenTriggerActionsInSeconds |
トリガーアクション間の最小秒数(デフォルト:30)。 |
| カードを新しいタブで開く | openCardsInNewTab |
デフォルトのフィードUIを使用している場合、コンテンツカードのリンクは新しいタブで開封する。 |
| サービスワーカーの位置 | serviceWorkerLocation |
サービスワーカーファイルのカスタムパス(デフォルト:/service-worker.js)。 |
| セッションタイムアウト(秒) | sessionTimeoutInSeconds |
セッションタイムアウト(秒単位)(デフォルト値:1800年。 |
Google Tag ManagerのBraze初期化タグを使用する際、カスタムHTMLアプリ内メッセージを有効にするには、Braze初期化オプションで「HTMLアプリ内メッセージを許可する」を選択する。このチェックボックスは、のallowUserSuppliedJavascript初期化braze.initialize()オプションに対応し、それをに設定するtrue。Google Tag ManagerのBraze初期化タグは、オプション名ではなくこのラベルを使用する。
GTMテンプレートで公開されていないオプション(例えばcontentSecurityNonce、localizationやなどdevicePropertyAllowlist)については、代わりに実行時初期化を使用する。
ステップ 5: すべてのページでトリガーされるように設定する
初期化タグはサイトの全ページで実行すべきだ。これにより、Braze SDKメソッドを使用し、Web プッシュの分析を記録できる。
ステップ 6: 統合を確認せよ
以下のいずれかの方法で統合を確認できる:
- オプション 1:Google Tag Manager のデバッグツールを使えば、設定したページやイベントで Braze の初期化タグが正しくトリガーされているか確認できる。
- オプション 2:ウェブページからBrazeへのネットワークリクエストがないか確認せよ。さらに、グローバル
window.brazeライブラリーを定義する必要がある。
ボットトラフィックのフィルター
MAUにはボットユーザーの割合が含まれる場合があり、それによって月間アクティブユーザー数が水増しされる。Braze Web SDKには、検索エンジンのボットやソーシャルメディアのプレビューボットなど、一般的なウェブクローラーの検出機能が組み込まれている。しかし、SDKの更新だけでは常に新しいボットをすべて検出できるわけではないため、ボットを検出するための堅牢なソリューションを積極的に導入することが特に重要だ。
SDK側のボット検出の限界
Web SDKには、既知のクローラーを除外する基本的なユーザーエージェントベースのボット検出機能が組み込まれている。しかし、この方法には限界がある:
- 新しいボットが次々と現れる:AI企業やその他の関係者は、検出を避けるために偽装する可能性のある新しいボットを定期的に作成している。
- ユーザーエージェント偽装:高度なボットは、正当なブラウザのユーザーエージェントを模倣できる。
- カスタムボット:技術的知識のないユーザーでも、大規模言語モデル(LLM)を使って簡単にボットを作成できるようになった。これによりボットの挙動は予測不能になる。
ボットフィルターの実装
以下に述べるソリューションは一般的な提案である。ボットフィルターのロジックを、独自の環境とトラフィックパターンに合わせて調整せよ。
最も堅牢なソリューションは、Braze SDKを初期化する前に独自のボットフィルターロジックを実装することだ。一般的な手法には以下が含まれる:
ユーザーの操作が必要だ
ユーザーがCookie同意バナーの承諾、スクロール、クリックなどの意味のある操作を行うまで、SDKの初期化を遅らせることを検討せよ。この手法は実装が容易な場合が多く、ボットトラフィックのフィルターに非常に効果的である。
SDKの初期化をユーザー操作まで遅らせると、バナーやコンテンツカードもその操作が行われるまで表示されない可能性がある。
カスタムボット検出
特定のボットトラフィックパターンに基づいてカスタム検出を実装する。例えば:
- トラフィックで識別したパターンについて、ユーザーエージェント文字列を分析する
- ヘッドレスブラウザの指標を確認する
- サードパーティのボット検出サービスを利用する
- サイト固有の行動シグナルを監視する
条件付き初期化の例:
1
2
3
4
5
6
7
8
// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE"
});
braze.automaticallyShowInAppMessages();
braze.openSession();
}
ベストプラクティス
- MAUデータとWebトラフィックのパターンを定期的に分析し、新たなボットの行動を識別する。
- ボットフィルターが正当なユーザーのトラッキングを妨げないよう、徹底的にテストせよ。
- 環境内で観察されるボットのトラフィックパターンに基づいて、フィルターロジックを更新せよ。
オプション設定
ロギング
ロギングをすばやく有効にするには、?brazeLogging=true をパラメーターとして Web サイト URL に追加します。あるいは、基本ロギングまたはカスタム・ロギングを有効にすることもできます。すべてのプラットフォームにわたる一元的な概要については、詳細ログを参照せよ。
基本的なロギング
SDKが初期化される前に、基本的なデバッグメッセージをJavaScriptコンソールに記録するにはenableLogginguseを使用する。
1
enableLogging: true
メソッドは次のようになるはずです。
1
2
3
4
5
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
enableLogging: true
});
braze.openSession();
SDKが初期化された後、基本的なデバッグメッセージをJavaScriptコンソールに記録するにはbraze.toggleLogging()useを使用する。メソッドは次のようになるはずです。
1
2
3
4
5
6
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();
基本ログはすべてのユーザーに表示されるため、コードを本番環境にリリースする前に、無効にすることを検討するか、setLogger に切り替えてください。
カスタムロギング
カスタムデバッグメッセージをJavaScriptコンソールに記録するには、`setLoggerlog`を使用する。基本ログとは異なり、これらのログはユーザーには見えません。
1
setLogger(loggerFunction: (message: STRING) => void): void
STRING を1つの文字列パラメーターとしてメッセージに置き換えます。メソッドは次のようになるはずです。
1
2
3
4
5
braze.initialize('API-KEY');
braze.setLogger(function(message) {
console.log("Braze Custom Logger: " + message);
});
braze.openSession();
SDKをアップグレードする
このガイドでは、Braze Web SDK 4.0.0+ のコードサンプルを使用します。最新の Web SDK バージョンにアップグレードするには、SDK アップグレードガイドを参照してください。
例えば、当社のコンテンツ配信ネットワークからBraze Web SDKを参照する場合(デフォルトの統合手順で推奨されている通り)https://js.appboycdn.com/web-sdk/a.a/braze.min.js、ユーザーはサイトを更新する際にマイナー更新(バグ修正や下位互換性のある機能、上記の例でa.a.zバージョンa.a.aからまでの更新)を自動的に受け取る。
ただし、主要な変更をリリースする際には、互換性を損なう変更が統合に影響しないよう、Braze Web SDKを手動でアップグレードする必要がある。さらに、当社のSDKをダウンロードして自身でホストする場合、バージョン更新は自動的には行われない。最新の機能やバグ修正を受けるには、手動でアップグレードする必要がある。
RSS Reader または任意のサービスを使用して、リリースフィードに従って最新のリリースを取得できます。また、Web SDK のリリース履歴の詳細については、変更ログを参照してください。Braze Web SDKをアップグレードします:
- バージョン番号
https://js.appboycdn.com/web-sdk/[OLD VERSION NUMBER]/braze.min.jsを変更するか、パッケージマネージャーの依存関係で、Braze ライブラリのバージョンを更新します。 - Web プッシュが統合されている場合は、サイトのサービスワーカーファイルを更新します。デフォルトでは、このファイルはサイトのルートディレクトリの
/service-worker.jsにありますが、統合によっては場所がカスタマイズされている場合があります。サービスワーカーファイルをホストするには、ルートディレクトリにアクセスしなければなりません。
これらの2つのファイルは、正常に機能させるために互いに連携して更新しなければならない。
その他の統合方法
アクセラレイテッド・モバイル・ページズ(AMP)
See more
ステップ 1: AMP Web プッシュスクリプトを含める
次の非同期スクリプトタグをヘッドに追加します:
1
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>
ステップ 2:サブスクリプションウィジェットを追加する
HTMLの本文にウィジェットを追加し、ユーザーがプッシュ通知の登録と配信停止を行えるようにする。
1
2
3
4
5
6
7
8
9
<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>
<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>
ステップ 3:追加helper-iframeする permission-dialog
AMP Web プッシュコンポーネントは、プッシュサブスクリプションを処理するためのポップアップを作成する。このイネーブルメントを行うには、プロジェクトに以下のヘルパーファイルを追加する必要がある:
ステップ 4: サービスワーカーファイルを作成する
Web サイトのルートディレクトリにファイルservice-worker.jsを作成し、以下のスニペットを追加する:
ステップ 5: AMP Web プッシュ HTML 要素を構成する
HTMLのbodyに次のamp-web-pushHTML要素を追加せよ。覚えておけ、とapiKeyをbaseUrlクエリパラメータとしてに追加する必要があるservice-worker-URL。
1
2
3
4
5
6
7
<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>
非同期モジュール定義(AMD)
サポートを無効にする
もしあなたのサイトがRequireJSや他のAMDモジュールローダーを使用しているが、このリストにある他のオプションのいずれかでBraze Web SDKを読み込みたい場合、AMDサポートを含まないバージョンのライブラリーを読み込むことができる。このバージョンのライブラリーは、以下のCDNの場所からロードできます:
モジュールローダー
RequireJS または他の AMD モジュールローダーを使用する場合は、ライブラリのコピーをセルフホスティングし、他のリソースと同様に参照することをお勧めします。
1
2
3
4
5
6
require(['path/to/braze.min.js'], function(braze) {
braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
// Required if you want in-app messages to display automatically
braze.automaticallyShowInAppMessages();
braze.openSession();
});
電子
Electron は公式には Web プッシュ通知をサポートしていません (参照: この GitHub issue)。Brazeがテストしていないオープンソースの回避策を試すこともできます。
Jestフレームワーク
Jestを使用している場合、SyntaxError: Unexpected token 'export' のようなエラーが表示されることがあります。これを修正するには、Braze SDK を無視するように package.json の設定を調整します。
1
2
3
4
5
"jest": {
"transformIgnorePatterns": [
"/node_modules/(?!@braze)"
]
}
SSRフレームワーク
サーバーサイドレンダリング(SSR)フレームワークを使用する場合、SDKはブラウザ環境での実行を想定しているため、エラーが発生するNext.js可能性がある。これらの問題は、SDKを動的にインポートすることで解決できます。
必要な SDK の部分を別のファイルにエクスポートし、そのファイルをコンポーネントに動的にインポートすることで、ツリーシェイクの利点を維持できます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// MyComponent/braze-exports.js
// export the parts of the SDK you need here
export { initialize, openSession } from "@braze/web-sdk";
// MyComponent/MyComponent.js
// import the functions you need from the braze exports file
useEffect(() => {
import("./braze-exports.js").then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
あるいは、アプリのバンドルにwebpackを使用している場合、そのマジックコメントを利用して、必要なSDKの部分だけを動的にインポートすることもできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
// MyComponent.js
useEffect(() => {
import(
/* webpackExports: ["initialize", "openSession"] */
"@braze/web-sdk"
).then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
Tealium iQ
Tealium iQは、基本的なターンキー Braze 統合を提供します。統合を構成するには、Tealium Tag Management インターフェイスで Braze を検索し、ダッシュボードから Web SDK API キーを指定します。
詳細やTealiumの設定に関する深いサポートが必要な場合は、統合ドキュメントを参照するか、Tealiumのアカウントマネージャーに連絡する。
ヴィテ
Viteを使用していて、循環依存関係やUncaught TypeError: Class extends value undefined is not a constructor or null に関する警告が表示される場合は、Braze SDKを依存関係の発見から除外する必要があるかもしれません:
1
2
3
optimizeDeps: {
exclude: ['@braze/web-sdk']
},
その他のタグ・マネージャー
Brazeは、カスタムHTMLタグの中で当社の統合指示に従うことにより、他のタグ管理ソリューションと互換性を持つこともできます。これらのソリューションの評価について支援が必要な場合は、Brazeの担当者にお問い合わせください。
Android SDKの統合
ステップ 1: Gradleのビルド設定を更新せよ
プロジェクトのリポジトリ設定(例:settings.gradle , settings.gradle.kts, または最上位の build.gradle)で、リポジトリ一覧に をmavenCentral()追加する。この構文はGroovyとKotlinのDSLの両方で同じである。
1
2
3
repositories {
mavenCentral()
}
次に、依存関係にBrazeを追加する。以下の例では、を現在のAndroid BrazeSDK_VERSION SDKのバージョンに置き換えること。全バージョンのリストについては、変更履歴を参照せよ。
- Kotlin DSL (
build.gradle.kts) では、構文implementation("...")を使用する。 - Groovy (
build.gradle) では、構文implementation '...'を使う。 - バージョンカタログについては、ファイル
gradle/libs.versions.tomlにエントリを追加し、生成されたアクセサを使用してそれらを参照する。
Braze UI コンポーネントを使用する予定がないなら、依存関係に以下を追加せよ。
1
2
3
4
dependencies {
implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
君のgradle/libs.versions.tomlファイルには:
1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
次に、`.bashrc` またはbuild.gradle.kts.bash_profilebuild.gradle\ ファイルに、以下の依存関係を追加する。この構文はGroovyとKotlinのDSLの両方で同じである。
1
2
3
4
dependencies {
implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
Braze UIコンポーネントを使用する予定なら、依存関係に以下を追加せよ。
1
2
3
4
dependencies {
implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
君のgradle/libs.versions.tomlファイルには:
1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
次に、`.bashrc` またはbuild.gradle.kts.bash_profilebuild.gradle\ ファイルに、以下の依存関係を追加する。この構文はGroovyとKotlinのDSLの両方で同じである。
1
2
3
4
dependencies {
implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
ステップ 2:設定する braze.xml
2019 年 12 月をもって、カスタムエンドポイントは提供されなくなりました。既存のカスタムエンドポイントがある場合は、それを引き続き使用できます。詳細については、利用可能なエンドポイントのリストを参照してください。
プロジェクトres/valuesのフォルダ内にファイルbraze.xmlを作成する。特定のデータクラスターを使用している場合、または既存のカスタムエンドポイントがある場合は、braze.xml ファイルでもエンドポイントを指定する必要があります。
ファイルの内容は、次のコードスニペットのようになります。Braze ダッシュボードの [設定の管理] ページにある識別子で YOUR_APP_IDENTIFIER_API_KEY を置き換えてください。dashboard.braze.comにログインして、クラスターアドレスを見つけてください。
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
ステップ 3:権限を追加する AndroidManifest.xml
次に、以下の権限をあなたのに追加AndroidManifest.xmlする:
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Android M のリリースにより、Android はインストール時権限モデルから実行時権限モデルに切り替わりました。ただし、これらの権限はどちらも通常の権限であり、アプリのマニフェストにリストされている場合は自動的に付与されます。詳細については、Android の権限に関するドキュメントを参照してください。
ステップ 4: 遅延初期化のイネーブルメント(任意)
遅延初期化を使用するには、最低限のBraze SDKバージョンが必要だ。
遅延初期化のイネーブルメントが有効な間は、すべてのネットワーク接続がキャンセルされる。これにより、SDKがBrazeサーバーにデータを送信できなくなる。
ステップ4.1:braze.xml を更新する
遅延初期化はデフォルトで無効になっている。イネーブルメントを行うには、次のいずれかの方法を使う:
プロジェクトのbraze.xmlファイルで、をにcom_braze_enable_delayed_initialization設定するtrue。
1
<bool name="com_braze_enable_delayed_initialization">true</bool>
実行時に遅延初期化のイネーブルメントを行うには、次の方法を使う。
1
Braze.enableDelayedInitialization(context);
1
Braze.enableDelayedInitialization(context)
遅延初期化がイネーブルメントされている場合、プッシュ通知にディープリンクアクションが含まれていても、そのディープリンクは解決されない。
ステップ4.2:プッシュ分析を設定する(任意)
遅延初期化のイネーブルメントが有効な場合、プッシュ分析はデフォルトでキューに格納される。ただし、代わりにプッシュ分析を明示的にキューに入れるか破棄するかを選択できる。
明示的にキューに入れる
明示的にキューにプッシュ分析を追加するには、次のいずれかのオプションを選択する:
ファイルbraze.xml内で、をcom_braze_delayed_initialization_analytics_behaviorに設定せよQUEUE:
1
<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>
メソッドBraze.enableDelayedInitialization()にQUEUE追加せよ:
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
落とす
プッシュ通知の分析を停止するには、次のいずれかの方法を選ぶ:
ファイルbraze.xml内で、をcom_braze_delayed_initialization_analytics_behaviorに設定せよDROP:
1
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>
メソッドBraze.enableDelayedInitialization()にDROP追加する:
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)
ステップ4.3:SDKを手動で初期化する
選択した遅延期間の後、SDKを手動で初期化するためにメソッドBraze.disableDelayedInitialization()を使用する。
1
Braze.disableDelayedInitialization(context);
1
Braze.disableDelayedInitialization(context)
ステップ 5: ユーザーセッションのトラッキングを有効にする
ユーザーセッショントラッキングをイネーブルすると、`openSession()closeSession()`、[`ensureSubscribedToInAppMessageEvents()`](https://braze-inc.github.io/braze-android-sdk/kdoc/braze-android-sdk/com.braze.ui.inappmessage/-braze-in-app-message-manager/ensure-subscribed-to-in-app-message-events.html)、``、およびInAppMessageManager``の登録呼び出しは自動的に処理される。
アクティビティのライフサイクルコールバックを登録するには、`ActivityApplicationクラスのonStart()メソッドonCreate()`に以下のコードを追加する。
1
2
3
4
5
6
7
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
}
1
2
3
4
5
6
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
}
利用可能なパラメータの一覧については、を参照せよBrazeActivityLifecycleCallbackListener。
セッショントラッキングをテストする
SDKの問題を診断するには、SDKデバッガーも利用できる。
テスト中に問題が発生した場合は、詳細ログのイネーブルメントを行い、logcatを使用してアクティビティ内で欠落している`onStartopenSession()およびonStop(closeSession)`呼び出しを検出する。
- Brazeで、概要に移動し、アプリを選択する。次に「データを表示する期間」のドロップダウンから「今日」を選ぶ。

- アプリを開いて、次にBrazeのダッシュボードを更新しろ。指標が1増加したことを確認せよ。
- アプリを操作し、Brazeに記録されたセッションが1つだけであることを確認する。
- アプリをバックグラウンドに少なくとも10秒間送ってから、フォアグラウンドに戻す。新しいセッションが記録されたことを確認せよ。
オプション設定
ランタイム構成
Brazeのオプションを設定braze.xmlファイルではなくコード内で設定するには、ランタイム構成を使用する。両方の場所に値が存在する場合、代わりに実行時の値が使用される。必要な設定をすべて実行時に指定したら、そのbraze.xmlファイルを削除できる。
次の例では、ビルダーオブジェクトが作成され、その後.に渡されるBraze.configure()。利用可能な実行時オプションの一部のみが表示されていることに注意せよ。完全なリストについてはKDocを参照せよ。
1
2
3
4
5
6
7
8
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
6
7
8
val brazeConfig = BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build()
Braze.configure(this, brazeConfig)
別の例を探しているのか?当社のHello Brazeサンプルアプリをチェックしてみろ。
Google 広告 ID
Google広告ID(GAID)は、Google Playサービスが提供する、広告向けの任意のユーザー固有の匿名で一意かつリセット可能なIDである。GAID によりユーザーは、自分の識別子をリセットし、Google Play アプリ内の興味・関心に基づく広告をオプトアウトできます。また、開発者は、アプリの収益化を継続するためのシンプルな標準システムを入手できます。
Google 広告 ID は Braze SDK によって自動的に収集されないため、Braze.setGoogleAdvertisingId() メソッドを使用して手動で設定する必要があります。
1
2
3
4
5
6
7
8
9
10
11
new Thread(new Runnable() {
@Override
public void run() {
try {
AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
suspend fun fetchAndSetAdvertisingId(
context: Context,
scope: CoroutineScope = GlobalScope
) {
scope.launch(Dispatchers.IO) {
try {
val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
Braze.getInstance(context).setGoogleAdvertisingId(
idInfo.id,
idInfo.isLimitAdTrackingEnabled
)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
Google では、非 UI スレッドで広告 ID を収集する必要があります。
位置情報の追跡
Brazeの位置情報収集のイネーブルメントを行うには、設定braze.xmlファイルで``true\を``にcom_braze_enable_location_collection設定する。
1
<bool name="com_braze_enable_location_collection">true</bool>
Braze Android SDK バージョン3.6.0 以降、Braze の位置情報収集機能はデフォルトで無効になっています。
ロギング
デフォルトでは、Braze Android SDK のログレベルは INFO に設定されています。これらのログを抑制したり、別のログレベルを設定 (VERBOSE、DEBUG、または WARN など) したりすることができます。
ログのイネーブルメント
アプリの問題をトラブルシューティングしたり、Brazeサポートの対応時間を短縮したりするには、SDKの詳細ログをイネーブルメントできる。Brazeサポートに冗長ログを送信する場合は、アプリケーションを起動したらすぐにログを開始し、問題が発生してからずっと後にログを終了するようにする。集中管理された概要については、詳細ログ記録を参照せよ。ログ出力の解釈方法の学習については、「詳細ログの読み方」を参照せよ。
詳細なログは開発環境のみを対象としているため、アプリをリリースする前に無効にする必要があります。
Application.onCreate() で他の呼び出しを行う前に詳細ログを有効にして、ログが可能な限り完全になるようにします。
アプリで直接ログを有効にするには、他のメソッドの前に、以下をアプリケーションの onCreate() メソッドに追加します。
1
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
1
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL
MIN_LOG_LEVEL を、最小ログレベルとして設定するログレベルの定数に置き換えます。設定したMIN_LOG_LEVEL のレベル>= のログはすべて、Androidのデフォルトの Logメソッドに転送される。設定した MIN_LOG_LEVEL 未満の (<) すべてのログは破棄されます。
| コンスタント | 値 | 説明 |
|---|---|---|
VERBOSE |
2 | デバッグや開発のために最も詳細なメッセージをログに記録する。 |
DEBUG |
3 | デバッグや開発のために、説明的なメッセージをログに記録する。 |
INFO |
4 | 一般的なハイライトのための情報メッセージを記録する。 |
WARN |
5 | 潜在的に有害な状況を特定するための警告メッセージをログに記録する。 |
ERROR |
6 | アプリケーションの失敗や深刻な問題を示すエラーメッセージを記録する。 |
ASSERT |
7 | 開発中に条件が偽の場合にアサーションメッセージをログに記録する。 |
たとえば、以下のコードはログレベル2、3、4、5、6、7を Log メソッドに転送します。
1
BrazeLogger.setLogLevel(Log.VERBOSE);
1
BrazeLogger.logLevel = Log.VERBOSE
braze.xml でログを有効にするには、ファイルに以下を追加する:
1
<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>
MIN_LOG_LEVEL を、最小ログレベルとして設定するログレベルの値に置き換えます。設定したMIN_LOG_LEVEL のレベル>= のログはすべて、Androidのデフォルトの Logメソッドに転送される。設定した MIN_LOG_LEVEL 未満の (<) すべてのログは破棄されます。
| コンスタント | 値 | 説明 |
|---|---|---|
VERBOSE |
2 | デバッグや開発のために最も詳細なメッセージをログに記録する。 |
DEBUG |
3 | デバッグや開発のために、説明的なメッセージをログに記録する。 |
INFO |
4 | 一般的なハイライトのための情報メッセージを記録する。 |
WARN |
5 | 潜在的に有害な状況を特定するための警告メッセージをログに記録する。 |
ERROR |
6 | アプリケーションの失敗や深刻な問題を示すエラーメッセージを記録する。 |
ASSERT |
7 | 開発中に条件が偽の場合にアサーションメッセージをログに記録する。 |
たとえば、以下のコードはログレベル2、3、4、5、6、7を Log メソッドに転送します。
1
<integer name="com_braze_logger_initial_log_level">2</integer>
冗長ログを検証する
ログが VERBOSE に設定されていることを確認するには、V/Braze がログのどこかで発生するかどうかを確認します。もしそうなら、冗長ログは正常に有効になっている。以下に例を示します。
1
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started
ログの抑制
Braze Android SDKのログを全て抑制するには、アプリケーションの`setLogLevelonCreate()()メソッドで、他のメソッド_よりも先に_BrazeLogger.SUPPRESSログレベルを\0`に設定する。
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)
複数の API キー
複数の API キーの最も一般的なユースケースは、デバッグおよびリリースビルドバリアントの API キーを分離することです。
ビルド内の複数の API キーを簡単に切り替えられるように、関連するビルドバリアントごとに個別の braze.xml ファイルを作成することをお勧めします。ビルドバリアントは、ビルドタイプと製品フレーバーの組み合わせです。デフォルトでは、新しいAndroidプロジェクトは とrelease のdebugビルドタイプで構成され、プロダクトフレーバーは設定されていない。
関連する各ビルドバリアントについて、ディレクトリsrc/<build variant name>/res/values/内にbraze.xml新しいを作成する。ビルドバリアントがコンパイルされると、新しい API キーが使用されます。
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>
コード内でAPI キーを設定する方法については、ランタイム設定を参照せよ。
アプリ内メッセージ「トークバック」
Androidアクセシビリティガイドラインに準拠し、Braze Android SDKはデフォルトでAndroidのTalkbackを提供する。アプリ内のメッセージの内容のみを読み上げさせ、アプリタイトルバーやナビゲーションなどの他の画面要素を含めないようにするには、TalkBackの排他モードをイネーブルメントできる。
アプリ内メッセージの排他モードをイネーブルメントするには:
1
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
1
2
3
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
1
2
3
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());
R8とProGuard
コード圧縮設定は、Braze 統合に自動的に含まれます。
Braze コードを難読化するクライアントアプリでは、Braze がスタックトレースを解釈するためのリリースマッピングファイルを保存する必要があります。すべての Braze コードを引き続き保持する場合は、ProGuard ファイルに以下を追加します。
1
2
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }
Swift SDKの統合
Braze Swift SDKは、Swift Package Manager(SPM)、CocoaPods、または手動での統合方法を使って統合しカスタマイズできる。各種SDKシンボルに関する詳細情報は、Braze SWIFTリファレンスドキュメントを参照せよ。
前提条件
始める前に、最新のBraze SWIFT SDKバージョンが環境をサポートしていることを確認せよ。
ステップ 1: Braze SWIFT SDKをインストールする
Braze Swift SDKのインストールには、Swift Package Manager(SwiftPM)またはCocoaPodsの使用を推奨する。あるいは、SDKを手動でインストールすることもできる。
ステップ1.1:SDK バージョンのインポート
プロジェクトを開き、プロジェクトの設定に移動します。[Swift パッケージ] タブを選択し、パッケージリストの下にある [追加] ボタンをクリックします。

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

ステップ1.2:パッケージを選択せよ
Braze Swift SDK は、開発者がどの機能をプロジェクトにインポートするかをより詳細に制御できるように、機能をスタンドアロンライブラリーに分離しています。
| パッケージ | 詳細 |
|---|---|
BrazeKit |
分析とプッシュ通知をサポートする主な SDK ライブラリー |
BrazeLocation |
位置情報ライブラリーは、位置情報分析とジオフェンス監視をサポートします。 |
BrazeUI |
アプリ内メッセージ、コンテンツカード、バナー用のBraze提供ユーザーインターフェイスライブラリー。デフォルトのUIコンポーネントを使用する場合は、このライブラリーをインポートせよ。 |
拡張ライブラリーについて
BrazeNotificationService と BrazePushStory は追加機能を提供する拡張モジュールであり、メインアプリケーションターゲットに直接追加しないでください。代わりにリンクされたガイドに従って、それぞれをそれぞれのターゲット拡張機能に個別に統合してください。
| パッケージ | 詳細 |
|---|---|
BrazeNotificationService |
リッチプッシュ通知をサポートする通知サービス拡張ライブラリー。 |
BrazePushStory |
プッシュストーリーをサポートする通知コンテンツ拡張ライブラリーを提供します。 |
ご自身のニーズに最も適したパッケージを選択し、パッケージを追加をクリックしてください。必ず最低でもBrazeKitを選択してください。

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

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

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

Swift SDK 12.0.0 以降では、静的およびダイナミックな両方のバリアントにおいて、Braze XCFrameworks の署名方式として常に「埋め込み&署名」を選択すべきである。これにより、フレームワークのリソースがアプリバンドルに適切に組み込まれる。
GIFのイネーブルメントを行うには、`<HEAD>` または `<BODYbraze-swift-sdk-prebuilt/staticbraze-swift-sdk-prebuilt/dynamic>` 内に `
Objective-Cプロジェクトの一般的なエラー
XcodeプロジェクトにOBJECTIVE-Cファイルのみが含まれている場合、プロジェクトのビルドを試みると「シンボルが見つかりません」というエラーが発生することがあります。これらのエラーを修正するには、プロジェクトを開封し、ファイルツリーに空のSWIFTファイルを追加します。これにより、ビルドツールチェーンがSWIFTランタイムを埋め込み、ビルド時に適切なフレームワークにリンクするようになります。
1
FILE_NAME.swift
任意のスペースのない文字列でFILE_NAMEを置き換えます。ファイルは次のようになります。
1
empty_swift_file.swift
ステップ 2:遅延初期化を設定する(任意)
Braze SWIFT SDKの初期化を遅らせる選択ができる。これは、アプリが設定を読み込む必要がある場合や、SDKを開始する前にユーザーの同意を待つ必要がある場合に有用だ。遅延初期化により、SDK初期化前に受信したBrazeプッシュ通知とプッシュトークンは、SDKが初期化された時点でキューに入れられ処理される。
遅延初期化を使用するには、最低限のBraze SDKバージョンが必要だ。
ステップ 2.1: 初期化が遅れることに備えよ
アプリのライフサイクルにおいて、できるだけ早いBraze.prepareForDelayedInitialization()段階で呼び出すこと。理想的には、またはそれ以前にapplication(_:didFinishLaunchingWithOptions:)呼び出すこと。これにより、SDKが初期化される前に受信したプッシュ通知が確実に捕捉され、後で適切に処理される。
これはBrazeからのプッシュ通知にのみ適用される。その他のプッシュ通知は、システムデリゲートによって通常通り処理される。
1
2
3
4
5
6
7
8
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor var appDelegate: AppDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
}
1
2
3
4
5
6
7
8
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Prepare the SDK for delayed initialization
[Braze prepareForDelayedInitialization];
// ... Additional non-Braze setup code
return YES;
}
遅延初期化を使用する場合、プッシュ通知のオートメーションは暗黙的にイネーブルメントされる。パラメータpushAutomationを渡すことで、プッシュオートメーションの設定をカスタマイズできる。
ステップ 2.2:プッシュ分析の動作を設定する(任意)
遅延初期化のイネーブルメントが有効な場合、プッシュ分析はデフォルトでキューに格納される。ただし、代わりにプッシュ分析を明示的にキューに入れるか破棄するかを選択できる。
明示的にキューに入れる
明示的にキューにプッシュ分析を送信するには(デフォルト動作)、analyticsBehaviorパラメータに .queueを渡す。初期化前にキューに追加されたプッシュ分析イベントは、初期化時に処理されサーバーに送信される。
1
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
落とす
SDK初期化前に受信したプッシュ分析を破棄するには、analyticsBehaviorパラメータに.drop を渡す。このオプションでは、SDKが初期化されていない間に発生したプッシュ分析イベントはすべて無視される。
1
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];
ステップ 2.3:プッシュ通知のオートメーションをカスタマイズする(任意)
パラメータpushAutomationを渡すことで、プッシュオートメーションの設定をカスタマイズできる。デフォルトでは、すべてのオートメーション機能がイネーブルされている。requestAuthorizationAtLaunchただし、以下を除く。
1
2
3
4
5
6
7
8
// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)
// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
1
2
3
4
5
6
7
8
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];
// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];
ステップ 2.4:SDK の初期化
選択した遅延期間の後(例えば、サーバーから設定を取得した後やユーザーの同意を得た後)、通常通りSDKを初期化する:
1
2
3
4
5
6
7
8
9
10
func initializeBraze() {
let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = true
let braze = Braze(configuration: configuration)
// Store the Braze instance for later use
AppDelegate.braze = braze
}
1
2
3
4
5
6
7
8
9
10
- (void)initializeBraze {
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
// Store the Braze instance for later use
AppDelegate.braze = braze;
}
SDKが初期化されると、キューに蓄積されたプッシュ通知、プッシュトークン、ディープリンクは自動的に処理される。
ステップ 3:アプリデリゲートを更新する
以下は、プロジェクトに既に AppDelegateを追加済み(デフォルトでは生成されない)であり、遅延初期化機能を使用していないことを前提とする。アプリ起動時など、できるだけ早い段階でBraze SDKを初期化するようにするんだAppDelegate。遅延初期化機能を使用している場合は、SDKの初期化についてはステップ2.4を参照し、このステップは無視する。
AppDelegate.swift ファイルに以下のコード行を追加して Braze Swift SDK に含まれる機能をインポートします。
1
import BrazeKit
次に、AppDelegate クラスに static プロパティを追加し、アプリケーションの有効期間を通して Braze インスタンスへの強い参照を保持します。
1
2
3
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
}
最後に、AppDelegate.swift で、application:didFinishLaunchingWithOptions: メソッドに次のスニペットを追加します。
1
2
3
4
5
6
let configuration = Braze.Configuration(
apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
アプリの設定ページから、YOUR-APP-IDENTIFIER-API-KEY とYOUR-BRAZE-ENDPOINT を正しい値に更新する。アプリ識別子のAPIキーがどこにあるかについては、API識別子の種類をチェックしてほしい。
次のコード行を AppDelegate.m ファイルに追加します。
1
@import BrazeKit;
次に、AppDelegate.m ファイルに静的変数を追加して、アプリケーションのライフタイムを通してBrazeインスタンスへの参照を保持する:
1
2
3
4
5
6
7
8
9
10
11
static Braze *_braze;
@implementation AppDelegate
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
@end
最後に、AppDelegate.m ファイル内で、application:didFinishLaunchingWithOptions: メソッド内に以下のスニペットを追加する:
1
2
3
4
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
Manage Settingsページから、YOUR-APP-IDENTIFIER-API-KEY とYOUR-BRAZE-ENDPOINT を正しい値で更新する。アプリ識別子の API キーの場所について詳しくは、API ドキュメントをご覧ください。
オプション設定
ロギング
すべてのプラットフォームにわたる一元的な概要については、詳細ログを参照せよ。ログ出力の解釈方法の学習については、「詳細ログの読み方」を参照せよ。
ログレベル
Braze SWIFT SDKのデフォルトのログレベルは.error—である。ログのイネーブルメントが有効化されている場合、これがサポートされる最低レベルでもある。これがログレベルの一覧だ:
| Swift | Objective-C | 説明 |
|---|---|---|
.debug |
BRZLoggerLevelDebug |
ログにデバッグ情報を記録.infoする.error。 |
.info |
BRZLoggerLevelInfo |
一般的なSDK情報(ユーザーの変更など)を記録する +.error 。 |
.error |
BRZLoggerLevelError |
エラーをロギングする。 |
.disabled |
BRZLoggerLevelDisabled |
ロギングは行われない。 |
ログレベルの設定
実行時にオブジェクトBraze.Configuration内でログレベルを割り当てることができる。完全な使用方法の詳細については、を参照せよBraze.Configuration.Logger。
1
2
3
4
5
6
7
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
1
2
3
4
5
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
Cordova SDK の統合
前提条件
始める前に、お使いの環境が最新の Braze Cordova SDK バージョンでサポートされていることを確認せよ。
ステップ 1: SDK をプロジェクトに追加する
以下の方法で Braze Cordova SDK を追加するだけだ。他の方法でインストールしようと試みるな。セキュリティ侵害につながる恐れがある。
Cordova 6 以降では、GitHub から直接 SDK を追加できます。または、GitHub リポジトリの ZIP をダウンロードして、SDK を手動で追加することもできます。
ロケーションコレクションとジオフェンスを使用する予定がない場合は、GitHub の master ブランチを使用してください。
1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master
位置情報の収集とジオフェンスの使用を計画している場合は、GitHub の を使用します geofence-branch 。
1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch
このステップを繰り返せば、いつでも geofence-branchとmaster を切り替えられる。
ステップ 2:プロジェクトを構成する
次に、プロジェクトの config.xml ファイル内の platform 要素に次の環境設定を追加します。
1
2
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
1
2
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />
次のように置き換えます。
| 値 | 説明 |
|---|---|
BRAZE_API_KEY |
あなたのBraze REST APIキー。 |
CUSTOM_API_ENDPOINT |
カスタムAPIエンドポイント。このエンドポイントは、Brazeダッシュボードの正しいアプリグループにBrazeインスタンスデータをルーティングするために使用されます。 |
config.xml ファイルの platform 要素は次のようになります。
1
2
3
4
<platform name="ios">
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
1
2
3
4
<platform name="android">
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
プラットフォーム固有の構文
次のセクションでは、iOS または Android で Cordova を使用する場合のプラットフォーム固有の構文について説明する。
整数
整数の設定は、次の例のように文字列表現として読み取られます。
1
2
3
4
<platform name="ios">
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_session_timeout" value="5" />
</platform>
Cordova 8.0.0 以降のフレームワークによる設定の処理方法に従って、整数のみの設定 (送信者 ID など) は、次の例のように先頭に str_ が付加された文字列に設定する必要があります。
1
2
3
4
<platform name="android">
<preference name="com.braze.android_fcm_sender_id" value="str_64422926741" />
<preference name="com.braze.android_default_session_timeout" value="str_10" />
</platform>
ブール値
ブール値の設定は、次の例のように、YES および NO キーワードを文字列表現として使用して SDK によって読み取られます。
1
2
3
4
<platform name="ios">
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>
ブール値の設定は、次の例のように、true および false キーワードを文字列表現として使用して SDK によって読み取られます。
1
2
3
4
<platform name="android">
<preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
</platform>
オプション設定
次の設定をプロジェクトの config.xml ファイルの platform 要素に追加できます。
| 方法 | 説明 |
|---|---|
|ios_api_key |
アプリケーションのAPI キーを設定する。 |
|ios_api_endpoint |
アプリケーションのSDKエンドポイントを設定する。 |
|ios_disable_automatic_push_registration |
自動プッシュ登録を無効にするかどうかを設定する。 |
|ios_disable_automatic_push_handling |
自動プッシュ処理を無効化するかどうかを設定する。 |
ios_enable_idfa_automatic_collection |
Braze SDKがIDFA情報を自動的に収集するかどうかを設定する。詳細については、BrazeのIDFAメソッドのドキュメントを参照せよ。 |
enable_location_collection |
自動位置情報の収集のイネーブルメントを設定する(ユーザーが許可した場合)。そのgeofence-branch |
|geofences_enabled |
ジオフェンスのイネーブルメントを設定する。 |
|ios_session_timeout |
アプリケーションのBrazeセッションタイムアウトを秒単位で設定する。デフォルトは10秒だ。 |
sdk_authentication_enabled |
SDK認証機能をイネーブルメントするかどうかを設定する。 |
|display_foreground_push_notifications |
アプリケーションがフォアグラウンドにある間、プッシュ通知を表示するかどうかを設定する。 |
|ios_disable_un_authorization_option_provisional |
を無効にするUNAuthorizationOptionProvisionalかどうかを設定する。 |
trigger_action_minimum_time_interval_seconds |
トリガー間の最小時間間隔を秒単位で設定する。デフォルトは30秒だ。 |
|ios_push_app_group |
iOSプッシュ拡張機能のアプリグループIDを設定する。 |
|ios_forward_universal_links |
SDKがユニバーサルリンクを自動的に認識し、システムメソッドに転送するかどうかを設定する。iOSでプッシュ通知からのディープリンクを機能させるために必要だ。デフォルトは無効だ。 |
|ios_log_level |
. Braze.Configuration.Loggerの最小ログレベルを設定する。 |
|ios_use_uuid_as_device_id |
ランダムに生成されたUUIDをデバイスIDとして使用するかどうかを設定する。 |
ios_flush_interval_seconds |
自動データフラッシュの間隔を秒単位で設定する。デフォルトは10秒だ。 |
ios_use_automatic_request_policy |
リクエストポリシーを自動Braze.Configuration.Apiか手動か設定する。 |
should_opt_in_when_push_authorized |
プッシュ通知の許可が承認された際にoptedIn、ユーザーの通知サブスクリプション状態を自動的に設定するかどうかを指定する。 |
詳細については、GitHub:Braze iOS Cordova プラグインを参照してください。
| 方法 | 説明 |
| —————————————————————– | ——————————————————————————————————————————————————————————————— |
| 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を使用するかどうかを設定する。 |
Firebase メッセージングの送信者 ID を設定するandroid_fcm_sender_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.getNameにおいてNotificationChannel、ユーザーが閲覧する名称を設定する。 |
| default_notification_channel_description | Brazeのデフォルト設定NotificationChannel.getDescriptionにおいてNotificationChannel、ユーザーが閲覧する説明文を設定する。 |
|does_push_story_dismiss_on_click | プッシュストーリーがクリックされた際に自動的に非表示になるかどうかを設定する。 |
| is_fallback_firebase_messaging_service_enabled | フォールバック用のFirebase Cloud Messagingサービスのイネーブルメントを有効にするかどうかを設定する。 |
|fallback_firebase_messaging_service_classpath | フォールバック用のFirebase Cloud Messageングサービスのクラスパスを設定する。 |
| is_content_cards_unread_visual_indicator_enabled | コンテンツカードの未読視覚表示バーのイネーブルメントを設定する。 |
|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がユーザーを自動的にオプトインするかどうかを設定する。 |
詳細については、GitHub:Braze Android Cordova プラグインを参照してください。
以下は、追加構成を含む config.xml ファイルの例です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<platform name="ios">
<preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
<preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
<preference name="com.braze.enable_location_collection" value="NO"/"YES" />
<preference name="com.braze.geofences_enabled" value="NO"/"YES" />
<preference name="com.braze.ios_session_timeout" value="5" />
<preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
<preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
<preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
<preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
<preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
<preference name="com.braze.ios_log_level" value="2" />
<preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<platform name="android">
<preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
<preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
<preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
<preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
<preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
<preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
<preference name="com.braze.enable_location_collection" value="true"/"false" />
<preference name="com.braze.geofences_enabled" value="true"/"false" />
<preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
<preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
<preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
<preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
<preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
<preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
<preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
<preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
<preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
<preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
<preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>
自動セッショントラッキングを無効にする(Androidのみ)
デフォルトでは、Android Cordova プラグインは自動的にセッションを追跡します。自動セッショントラッキングを無効にするには、プロジェクトの config.xml ファイル内の platform 要素に次の設定を追加します。
1
2
3
<platform name="android">
<preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>
トラッキングセッションを再開するには、BrazePlugin.startSessionTracking() を呼び出します。次回の Activity.onStart() 以降に開始されたセッションのみが追跡されることに注意してください。
Flutter Braze SDKについて
AndroidとiOSでBraze Flutter SDKを統合した後、Dartで書かれたFlutterアプリ内でBraze APIを利用できるようになる。このプラグインには、基本的な分析機能が用意されており、iOS と Android 両方のアプリ内メッセージとコンテンツカードを1つのコードベースで統合できます。
Flutter SDKの統合
前提条件
Braze Flutter SDKを統合する前に、以下の手順を完了する必要がある:
| 前提条件 | 説明 |
|---|---|
| Braze API アプリ識別子 | アプリの識別子を確認するには、設定>APIと識別子>アプリ識別子へ移動する。詳細については、API識別子の種類を参照のこと。 |
| Braze RESTエンドポイント | REST エンドポイントのURL。エンドポイントはインスタンスの Braze URL に応じて異なります。 |
| Flutter SDK | 公式のFlutter SDKをインストールし、それがBraze Flutter SDKの最低サポートバージョンを満たしていることを確認せよ。 |
ステップ1:Braze ライブラリーを統合する
コマンドラインから Braze Flutter SDK パッケージを追加します。これにより、適切な行がpubspec.yaml に追加されます。
1
flutter pub add braze_plugin
ステップ 2:ネイティブSDKの設定を完了する
Braze サーバーに接続するには、プロジェクトの android/res/values フォルダで braze.xml ファイルを作成します。以下のコードを貼り付けて、API 識別子キーとエンドポイントを値で置き換えます。
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
必要な権限をファイル AndroidManifest.xml に追加します。
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
AppDelegate.swift ファイルの先頭にBraze SDK インポートを追加します。
1
2
import BrazeKit
import braze_plugin
同じファイルで、application(_:didFinishLaunchingWithOptions:) メソッドで Braze 構成オブジェクトを作成し、API キーとエンドポイントをアプリの値に置き換えます。次に、構成を使用して Braze インスタンスを作成し、簡単にアクセスできるよう AppDelegate で静的プロパティを作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static var braze: Braze? = nil
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// - Enable logging or customize configuration here
configuration.logger.level = .info
let braze = BrazePlugin.initBraze(configuration)
AppDelegate.braze = braze
return true
}
AppDelegate.m ファイルの先頭に BrazeKit をインポートします。
1
@import BrazeKit;
同じファイルで、application:didFinishLaunchingWithOptions: メソッドで Braze 構成オブジェクトを作成し、API キーとエンドポイントをアプリの値に置き換えます。次に、構成を使用して Braze インスタンスを作成し、簡単にアクセスできるよう AppDelegate で静的プロパティを作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:@"<BRAZE_API_KEY>"
endpoint:@"<BRAZE_ENDPOINT>"];
// - Enable logging or customize configuration here
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazePlugin initBraze:configuration];
AppDelegate.braze = braze;
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
ステップ 3:プラグインを設定する
Dart コードにプラグインをインポートするには、以下を使用します。
1
import 'package:braze_plugin/braze_plugin.dart';
次に、サンプルアプリのように new BrazePlugin() を呼び出して、Braze プラグインのインスタンスを初期化します。
未定義の動作を避けるため、Dartコード内では単一のBrazePluginインスタンスのみを割り当てて使用すること。
統合のテスト
ダッシュボードでセッション統計を確認すれば、SDKが統合されていることを確認できる。いずれかのプラットフォームでアプリケーションを実行すると、ダッシュボード ([概要] セクション) に新しいセッションが表示されます。
アプリ内で以下のコードを呼び出すことで、特定のユーザーに対してセッションを開く。
1
2
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");
ダッシュボードの{some-user-id}「オーディエンス」>「ユーザー検索」で、ユーザーを検索する。そこで、セッションとデバイスデータがロギングされていることを確認できます。
React Native Braze SDKについて
React Native Braze SDKを統合すると、基本的な分析機能を利用できる。さらに、iOSとAndroidの両プラットフォーム向けに、単一のコードベースでアプリ内メッセージとコンテンツカードを導入できる。
新しいアーキテクチャの互換性
以下の最小SDKバージョンは、React Nativeの新しいアーキテクチャを使用する全てのアプリと互換性がある:
SDKバージョン6.0.0以降、BrazeはReact Native Turbo Moduleを採用している。これは新アーキテクチャと従来のブリッジアーキテクチャの両方と互換性があるため、追加の設定は不要だ。
iOSアプリがターボモジュールに準拠し、以前AppDelegateRCTAppDelegateの設定手順に従っている場合、ターボモジュールでイベントを購読する際のクラッシュを防ぐため、「完全なネイティブ設定」のサンプルを確認すること。
React Native SDKの統合
前提条件
SDKを統合するには、React Nativeバージョン0.71以降が必要だ。サポートされているバージョンの完全なリストについては、 React Native SDK GitHub リポジトリを参照してください。
ステップ 1: Braze ライブラリーの統合
1
npm install @braze/react-native-sdk
1
yarn add @braze/react-native-sdk
ステップ 2:設定オプションを選ぶ
Braze SDKは、Braze Expoプラグインかネイティブレイヤーのいずれかを使って管理できる。Expoプラグインを使えば、ネイティブレイヤーでコードを書かずに特定のSDK機能を設定できる。アプリに最も適したオプションを選べ。
ステップ2.1: Braze Expo プラグインのインストール
Braze React Native SDK のバージョンが1.37.0以降であることを確認してください。サポートされているバージョンの完全なリストについては、Braze React Nativeリポジトリを確認せよ。
Braze Expoプラグインをインストールするには、次のコマンドを実行する:
1
npx expo install @braze/expo-plugin
ステップ 2.2:app.json にプラグインを追加する
app.json で、Braze Expo プラグインを追加します。次の構成オプションを指定できます。
| 方法 | タイプ | 説明 |
|---|---|---|
androidApiKey |
ストリング | 必須です。Braze ダッシュボードの [設定の管理] にある Android アプリケーションの API キー。 |
iosApiKey |
ストリング | 必須です。Braze ダッシュボードの [設定の管理] にある iOS アプリケーションの API キー。 |
baseUrl |
ストリング | 必須です。Braze ダッシュボードの [設定の管理] にあるアプリケーションの SDK エンドポイント。 |
enableBrazeIosPush |
ブーリアン | iOSのみ。iOS でのプッシュ通知の処理に Braze を使用するかどうか。React Native SDK v1.38.0とExpo Plugin v0.4.0で導入された。 |
enableFirebaseCloudMessaging |
ブーリアン | Android のみ。プッシュ通知に Firebase Cloud Messaging を使用するかどうか。React Native SDK v1.38.0とExpo Plugin v0.4.0で導入された。 |
firebaseCloudMessagingSenderId |
ストリング | Android のみ。Firebase Cloud Messaging の送信者 ID。React Native SDK v1.38.0とExpo Plugin v0.4.0で導入された。 |
sessionTimeout |
整数 | アプリケーションの Braze セッションタイムアウト (秒単位)。 |
enableSdkAuthentication |
ブーリアン | SDK認証機能を有効にするかどうか。 |
logLevel |
整数 | アプリケーションのログレベル。デフォルトのログレベルは8であり、最低限の情報を記録する。デバッグのために冗長ロギングを有効にするには、ログレベル0を使う。 |
minimumTriggerIntervalInSeconds |
整数 | トリガー間の最小時間間隔 (秒単位)。デフォルトは30秒です。 |
enableAutomaticLocationCollection |
ブーリアン | 自動位置情報収集が有効かどうか(ユーザーが許可した場合)。 |
enableGeofence |
ブーリアン | ジオフェンスを有効にするかどうか。 |
enableAutomaticGeofenceRequests |
ブーリアン | ジオフェンスリクエストを自動で行うかどうか。 |
dismissModalOnOutsideTap |
ブーリアン | iOSのみ。ユーザーがアプリ内メッセージの外側をクリックした時に、モーダルなアプリ内メッセージが閉じられるかどうか。 |
androidHandlePushDeepLinksAutomatically |
ブーリアン | Android のみ。Braze SDKが自動的にプッシュディープリンクを処理するかどうか。 |
androidPushNotificationHtmlRenderingEnabled |
ブーリアン | Android のみ。android.text.Html.fromHtml を使って、プッシュ通知のテキストコンテンツをHTMLとして解釈し、レンダリングするかどうかを設定する。 |
androidNotificationAccentColor |
ストリング | Android のみ。Android通知のアクセントカラーを設定する。 |
androidNotificationLargeIcon |
ストリング | Android のみ。Androidの通知アイコンを大きく設定する。 |
androidNotificationSmallIcon |
ストリング | Android のみ。Androidの通知小アイコンを設定する。 |
iosRequestPushPermissionsAutomatically |
ブーリアン | iOSのみ。アプリの起動時にユーザーにプッシュ許可を自動的に求めるかどうか。 |
enableBrazeIosRichPush |
ブーリアン | iOSのみ。iOSのリッチプッシュ機能を有効にするかどうか。 |
enableBrazeIosPushStories |
ブーリアン | iOSのみ。iOSのBraze Push Storiesを有効にするかどうか。 |
iosPushStoryAppGroup |
ストリング | iOSのみ。iOSのプッシュストーリーズに使われているアプリ群だ。 |
iosUseUUIDAsDeviceId |
ブーリアン | iOSのみ。デバイスIDがランダムに生成されたUUIDを使用するかどうか。 |
iosForwardUniversalLinks |
ブーリアン | iOSのみ。SDKがユニバーサルリンクを自動的に認識し、システムメソッドに転送するかどうかを指定する(デフォルト:false)。イネーブルメント時に、SDKはユニバーサルリンクを自動的に転送する。転送先は「アプリでのユニバーサルリンクのサポート」で定義されたシステムメソッドとなる。React Native SDK v11.1.0 および Expo Plugin v3.2.0 で導入された。 |
構成例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"baseUrl": "YOUR-SDK-ENDPOINT",
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
"iosForwardUniversalLinks": false
}
],
]
}
}
Androidのプッシュ通知アイコンの設定
とandroidNotificationLargeIconを使用するandroidNotificationSmallIcon際は、アイコンを正しく表示するために以下のベストプラクティスに従うこと:
アイコンの配置と形式
Braze Expoプラグインでカスタムプッシュ通知アイコンを使用するには:
- Androidの要件に従ってアイコンファイルを作成せよ。詳細は「アイコンの要件」に記載されている。
- それらをプロジェクトのAndroidネイティブディレクトリに配置する(例えば、
android/app/src/main/res/drawable-mdpi/、drawable-hdpi/、または類似のディレクトリ)android/app/src/main/res/drawable-<density>/。 - あるいは、React Nativeディレクトリ内でアセットを管理している場合、Expoのapp.jsonアイコン設定を使用するか、Expo設定プラグインを作成して、プリビルド時にアイコンをAndroidのdrawableフォルダにコピーできる。
Braze Expoプラグインは、Androidのdrawableリソースシステムを使ってこれらのアイコンを参照している。
アイコンの要件
- 小さなアイコン:透明なバックグラウンドに白いシルエットでなければならない(これはAndroidプラットフォームの要件である)
- 大きなアイコン:フルカラーの画像, 写真である場合がある
- フォーマット:PNG形式が推奨される
- 命名:小文字、数字、アンダースコアのみを使用する(例:
my_large_icon.png)
設定 app.json
ファイル拡張子_を除いた_ファイル名に、プレフィックスを@drawable/付けて使用する。例えば、アイコンファイルの名前が の場合large_icon.png、次のように参照@drawable/large_iconする:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidNotificationLargeIcon": "@drawable/large_icon",
"androidNotificationSmallIcon": "@drawable/small_icon"
}
]
]
}
}
アイコンを参照する際には、相対パス(例:src/assets/images/icon.png)を使用したり、ファイル拡張子を含めたりしてはならない。Expoプラグインは、プリビルド処理後にAndroidネイティブフォルダ内でアイコンを正しく見つけられるように、@drawable/プレフィックスが必要だ。
仕組み
Braze Expoプラグインは、Androiddrawableディレクトリからアイコンファイルを参照する。実行するとnpx expo prebuild、ExpoはネイティブのAndroidプロジェクト構造を生成する。ビルドプロセス前に、アイコンはdrawableAndroidフォルダ内に存在しなければならない(手動で配置するか、設定プラグイン経由でコピーするかのいずれか)。プラグインはその後、これらの描画可能リソースを名前(パスや拡張子なし)で利用するようBraze SDKを設定する。これが設定で@drawable/プレフィックスが必要な理由だ。
Androidの通知アイコンに関する詳細情報は、Androidの通知アイコンガイドラインを参照のこと。
ステップ 2.3:アプリケーションのビルドおよび実行
アプリケーションを事前ビルドすると、Braze Expoプラグインが動作するために必要なネイティブファイルが生成される。
1
npx expo prebuild
Expo ドキュメントの指定に従い、アプリケーションを実行します。設定オプションを変更した場合、アプリケーションを再ビルドして再度実行する必要があることを覚えておいてほしい。
ステップ2.1: リポジトリの追加
最上位プロジェクト build.gradle で、buildscript > dependencies から以下を追加します。
1
2
3
4
5
6
7
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
これでプロジェクトにKotlinが追加される。
ステップ 2.2:Braze SDK の構成
Braze サーバーに接続するには、プロジェクトの res/values フォルダで braze.xml ファイルを作成します。次のコードを貼り付け、API キーおよびエンドポイントを実際の値に置き換えます。
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
必要な権限をファイル AndroidManifest.xml に追加します。
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Braze SDK バージョン12.2.0 以降では、importBrazeLocationLibrary=true をgradle.properties ファイルに設定することで、android-sdk-location ライブラリを自動的にプルインできます。
ステップ2.3: ユーザーセッショントラッキングの実装
openSession() および closeSession() への呼び出しは自動的に処理されます。
MainApplication クラスの onCreate() メソッドに次のコードを追加します。
1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
ステップ2.4: インテント更新の処理
MainActivity で android:launchMode が singleTask に設定されている場合は、次のコードを MainActivity クラスに追加します。
1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
ステップ2.1: (オプション) ダイナミック XCFramework に関する Podfile の構成
特定のBrazeライブラリー(例:BrazeUI)をObjective C++ファイルにインポートするには、`#import#import`構文を使用しなければならない。Braze Swift SDKのバージョン7.4.0以降、バイナリにはこの構文と互換性のあるダイナミック XCFramework としてのオプションの配布チャネルがあります。
この配布チャネルを使用する場合は、Podfile で CocoaPods のソースの場所を手動で上書きします。以下のサンプルを参照し、インポートする関連バージョンで {your-version} を置き換えてください。
1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
ステップ 2.2:ポッドのインストール
React Native ではライブラリーがネイティブプラットフォームに自動でリンクされるため、CocoaPods を使用して SDK をインストールできます。
プロジェクトのルートフォルダから:
1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install
# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install
ステップ 2.3:Braze SDK の構成
AppDelegate.swift ファイルの先頭にある Braze SDK をインポートします。
1
2
import BrazeKit
import braze_react_native_sdk
application(_:didFinishLaunchingWithOptions:) メソッドで、API キーおよびエンドポイントをアプリの値に置き換えます。次に、構成を使用して Braze インスタンスを作成し、簡単にアクセスできるよう AppDelegate で静的プロパティを作成します。
この例では、React Native 設定で多くの抽象化を提供する RCTAppDelegate の実装を前提としています。アプリに別の設定を使用している場合は、必要に応じて実装を調整してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "{BRAZE_API_KEY}",
endpoint: "{BRAZE_ENDPOINT}")
// Enable logging and customize the configuration here.
configuration.logger.level = .info
let braze = BrazeReactBridge.perform(
#selector(BrazeReactBridge.initBraze(_:)),
with: configuration
).takeUnretainedValue() as! Braze
AppDelegate.braze = braze
/* Other configuration */
return true
}
// MARK: - AppDelegate.braze
static var braze: Braze? = nil
AppDelegate.m ファイルの先頭にある Braze SDK をインポートします。
1
2
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"
application:didFinishLaunchingWithOptions: メソッドで、API キーおよびエンドポイントをアプリの値に置き換えます。次に、構成を使用して Braze インスタンスを作成し、簡単にアクセスできるよう AppDelegate で静的プロパティを作成します。
この例では、React Native 設定で多くの抽象化を提供する RCTAppDelegate の実装を前提としています。アプリに別の設定を使用している場合は、必要に応じて実装を調整してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
endpoint:@"{BRAZE_ENDPOINT}"];
// Enable logging and customize the configuration here.
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazeReactBridge initBraze:configuration];
AppDelegate.braze = braze;
/* Other configuration */
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
ステップ 3:ライブラリーをインポートする
次に、React importNativeコード内のライブラリーだ。詳細については、サンプルプロジェクトを参照せよ。
1
import Braze from "@braze/react-native-sdk";
ステップ 4: 統合をテストする(任意)
SDKの統合をテストするには、アプリ内で以下のコードを呼び出して、いずれかのプラットフォームでユーザーの新規セッションを開始する。
1
Braze.changeUser("userId");
たとえば、アプリの起動時にユーザー ID を割り当てることができます。
1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.changeUser("some-user-id");
}, []);
return (
<div>
...
</div>
)
Brazeのダッシュボードで、ユーザー検索に移動し、ユーザー IDが一致するユーザーsome-user-idを探す。ここで、セッションとデバイスデータが記録されたことを確認できる。
次のステップ
Braze SDKを統合した後、一般的なメッセージング機能の実装を開始できる:
六SDKの統合
ステップ 1: ファイルの追加
Braze SDK ファイルは、Braze Roku SDK リポジトリ の sdk_files ディレクトリにあります。
sourceディレクトリで、アプリにBrazeSDK.brsを追加します。componentsディレクトリで、アプリにBrazeTask.brsとBrazeTask.xmlを追加します。
ステップ 2:参照の追加
次の script 要素を使用して、メインシーンに BrazeSDK.brs への参照を追加します。
1
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>
ステップ3:構成
main.brs 内で、グローバルノードにBrazeのコンフィギュレーションを設定する:
1
2
3
4
5
6
7
8
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = {YOUR_API_KEY}
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = {YOUR_ENDPOINT}
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})
SDK エンドポイントと API キーは、Braze ダッシュボード内にあります。
ステップ4: Braze の初期化
Braze インスタンスを初期化します。
1
2
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)
オプション構成
ロギング
Braze 統合をデバッグするため、Braze ログの Roku デバッグコンソールを表示できます。詳細については、Roku Developers の Debugging code を参照してください。
Unity Braze SDKについて
型、関数、変数などの完全なリストについては、Unity宣言ファイルを参照のこと。さらに、すでにUnityをiOS用に手動で統合している場合は、代わりに自動統合に切り替えることができる。
Unity SDKを統合する
前提条件
開始する前に、お使いの環境が最新のBraze Unity SDKバージョンでサポートされていることを確認する。
ステップ 1: Braze Unity パッケージの選択
Braze .unitypackage は、Android プラットフォームと iOS プラットフォーム向けのネイティブバインディングを C# インターフェイスとともにバンドルします。
Braze Unity リリースページでいくつかの Braze Unity パッケージをダウンロードできます。
Appboy.unitypackage- このパッケージは、Braze Android および iOS SDK と、iOS SDK の SDWebImage 依存関係をバンドルします。これは、Braze アプリ内メッセージングと、iOS 上のコンテンツカード機能を適切に機能させるために必要です。SDWebImage フレームワークは、GIF を含む画像のダウンロードと表示に使用されます。完全なBraze機能を使用する場合は、このパッケージを読み込むしてインポートします。
Appboy-nodeps.unitypackage- このパッケージは
Appboy.unitypackageに似ていますが、SDWebImage フレームワークが存在しない点が異なります。このパッケージは、iOS アプリに SDWebImage フレームワークが存在しないようにする場合に便利です。
- このパッケージは
Unity 2.6.0 以降、バンドルされた Braze Android SDK アーティファクトには AndroidX 依存関係が必要です。以前にjetified unitypackage を使用していた場合は、対応するunitypackage に安全に移行できます。
Braze .unitypackage は、Android プラットフォームと iOS プラットフォーム向けのネイティブバインディングを C# インターフェイスとともにバンドルします。
Braze Unity パッケージは、次の2種類の統合オプションを使用して、Braze Unity リリースページでダウンロードできます。
Appboy.unitypackageのみ- このパッケージは、Braze Android と iOS SDK を追加の依存関係なしでバンドルします。この統合方法では、Braze アプリ内メッセージングと、iOS 上のコンテンツカード機能が適切に機能しません。カスタムコードなしで完全なBraze機能を使用する場合は、代わりに以下のオプションを使用してください。
- この統合オプションを使用する場合は、[Braze 構成] の下にある Unity UI で
Import SDWebImage dependencyの横にあるボックスにチェックマークが入れられていないことを確認してください。
SDWebImageを含むAppboy.unitypackage- この統合オプションは、Braze Android および iOS SDK と、iOS SDK の SDWebImage 依存関係をバンドルします。これは、Braze アプリ内メッセージングと、iOS 上のコンテンツカード機能を適切に機能させるために必要です。
SDWebImageフレームワークは、GIF を含む画像のダウンロードと表示に使用されます。完全なBraze機能を使用する場合は、このパッケージを読み込むしてインポートします。 SDWebImageを自動的にインポートするには、[Braze 構成] の下にある Unity UIでImport SDWebImage dependencyの横にあるボックスにチェックマークが入れられていることを確認してください。
- この統合オプションは、Braze Android および iOS SDK と、iOS SDK の SDWebImage 依存関係をバンドルします。これは、Braze アプリ内メッセージングと、iOS 上のコンテンツカード機能を適切に機能させるために必要です。
iOSプロジェクトにSDWebImage依存性が必要かどうかを確認するには、[iOSアプリ内メッセージドキュメント]](/docs/ja/developer_guide/platform_integration_guides/swift/in-app_messaging/overview/) を参照すること。
ステップ 2:パッケージをインポートする
Unity エディターで Unity プロジェクトにパッケージをインポートするには、[アセット] > [パッケージをインポート] > [カスタムパッケージ] の順に移動します。次に、Importをクリックします。
または、カスタム Unity パッケージのインポートに関して詳しくは、Unity アセットパッケージのインポートの説明を参照してください。
iOS またはAndroid プラグインのみをインポートする場合は、Braze.unitypackage をインポートするときにPlugins/Android またはPlugins/iOS サブディレクトリの選択を解除します。
Unity エディターで Unity プロジェクトにパッケージをインポートするには、[アセット] > [パッケージをインポート] > [カスタムパッケージ] の順に移動します。次に、Importをクリックします。
または、カスタム Unity パッケージのインポートに関して詳しくは、Unity アセットパッケージのインポートの説明を参照してください。
iOS またはAndroid プラグインのみをインポートする場合は、Braze.unitypackage をインポートするときにPlugins/Android またはPlugins/iOS サブディレクトリの選択を解除します。
ステップ 3:SDKを設定する
ステップ 3.1:設定する AndroidManifest.xml
機能する AndroidManifest.xmlを機能させる。アプリにAndroidManifest.xml がない場合は、以下をテンプレートとして使用できます。それ以外の場合、すでにAndroidManifest.xml がある場合は、次のいずれかの欠落セクションが既存のAndroidManifest.xml に追加されていることを確認します。
Assets/Plugins/Android/ディレクトリに移動し、AndroidManifest.xmlファイルを開封する。これはUnityエディタのデフォルトの場所である。AndroidManifest.xmlに、以下のテンプレートにある必要な権限とアクティビティを追加する。- 終了後、
AndroidManifest.xmlには、"android.intent.category.LAUNCHER"が存在するアクティビティが1つだけ含まれているはずだ。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="REPLACE_WITH_YOUR_PACKAGE_NAME">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/app_icon"
android:label="@string/app_name">
<!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
<activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:screenOrientation="sensor">
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
AndroidManifest.xml ファイルに登録されているすべてのアクティビティクラスは、Braze Android SDKと完全に統合されている必要があり、そうでなければ分析は収集されない。独自のActivityクラスを追加する場合は、必ずBraze Unityプレーヤーを拡張して、これを防げるようにすること。
ステップ 3.2:AndroidManifest.xml をパッケージ名で更新する。
パッケージ名を確認するには、[ファイル] > [ビルド設定] > [プレーヤー設定] > [Android タブ]を選択します。

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

アプリですでに別の UnityAppController サブクラスが使用されている場合、サブクラスの実装を AppboyAppDelegate.mm とマージする必要があります。
Unityパッケージをカスタマイズする
ステップ 1: リポジトリを複製する
ターミナルで、Braze Unity SDK GitHubリポジトリを複製し、そのフォルダに移動する:
1
2
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
1
2
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk
ステップ 2:リポジトリからパッケージをエクスポートする
まずUnityを起動し、バックグラウンドで起動しておく。次に、リポジトリのルートで以下のコマンドを実行して、パッケージをbraze-unity-sdk/unity-package/ にエクスポートする。
1
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
1
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
これらのコマンドを実行した後に何らかの問題が発生した場合は、Unityを参照のこと:コマンドライン引数.
ステップ 3:Unityにパッケージをインポートする
- Unityで、Assets>Import Package>Custom Packageと進み、目的のパッケージをUnityプロジェクトにインポートする。
- インポートしたくないファイルがあれば、今すぐ選択を解除する。
Assets/Editor/Build.csにあるエクスポートされたUnityパッケージをカスタマイズする。
自動統合に切り替える(Swiftのみ)
Braze Unity SDKで提供される自動化されたiOSインテグレーションを利用するには、手動から自動化されたインテグレーションに移行するための以下のステップに従う。
- Xcodeプロジェクトの
UnityAppControllerサブクラスから、Braze関連のコードをすべて削除する。 - UnityまたはXcodeプロジェクトからBraze iOSライブラリを削除する(
Appboy_iOS_SDK.frameworkやSDWebImage.frameworkなど)。 - Braze Unityパッケージをプロジェクトに再度インポートする。完全なウォークスルーは、ステップ2を参照のこと: パッケージをインポートする。
- APIキーを再度設定する。完全なウォークスルーは、ステップ3.1を参照のこと:APIキーを設定する.
オプション構成
詳細なログ記録
Unityエディターで冗長ロギングを有効にするには、以下のようにする:
- [Braze] > [Braze 構成] の順に移動して、[Braze 構成設定] を開きます。
- [Braze Android 設定を表示する] ドロップダウンをクリックします。
- [SDK ログレベル] フィールドに値「0」を入力します。
Prime 31 の互換性
Prime31 プラグインで Braze Unity プラグインを使用するには、Prime31 互換の Activity クラスを使用するようにプロジェクトの AndroidManifest.xml を編集します。の参照をすべて変更する。
com.braze.unity.BrazeUnityPlayerActivity から com.braze.unity.prime31compatible.BrazeUnityPlayerActivity
アマゾン・デバイス・メッセージング(ADM)
Brazeは、UnityアプリへのADMプッシュの統合をサポートしている。ADMプッシュを統合したい場合は、ADM APIキーを含むapi_key.txt というファイルを作成し、Plugins/Android/assets/ フォルダに置く。 ADMとBrazeの統合の詳細については、ADMプッシュ統合の説明を参照のこと。
Braze Unityプレーヤーの拡張(Androidのみ)
提供されている AndroidManifest.xml ファイルの例では、1つの Activity クラス BrazeUnityPlayerActivity が登録されています。このクラスは Braze SDK と統合され、セッション処理、アプリ内メッセージ登録、プッシュ通知分析ログなどを使用して UnityPlayerActivity を拡張します。UnityPlayerActivity クラスの拡張の詳細については、「Unity」を参照してください。
ライブラリやプラグインプロジェクトで独自のカスタムUnityPlayerActivity を作成する場合は、カスタム機能をBrazeと統合するために、当社のBrazeUnityPlayerActivity を拡張する必要がある。BrazeUnityPlayerActivity を拡張する作業を始める前に、Unity プロジェクトに Braze を統合するための手順に従ってください。
- Braze Android SDK統合の説明に従って、Braze Android SDK をライブラリまたはプラグインプロジェクトに依存関係として追加します。
- Unity 固有の機能を含む Unity
.aarを、Unity 用に構築している Android ライブラリプロジェクトに統合します。appboy-unity.aarは、公開リポジトリから入手できます。Unity ライブラリがうまく統合されたら、BrazeUnityPlayerActivityを拡張するようにUnityPlayerActivityを変更します。 - ライブラリまたはプラグインプロジェクトをエクスポートし、通常どおり
/<your-project>/Assets/Plugins/Androidにドロップします。ライブラリやプラグインにBrazeのソースコードを含めないこと。それらはすでに/<your-project>/Assets/Plugins/Androidに存在するからである。 /<your-project>/Assets/Plugins/Android/AndroidManifest.xmlを編集し、BrazeUnityPlayerActivityのサブクラスをメイン・アクティビティとして指定する。
これでUnity IDEから、Brazeと完全に統合され、カスタムUnityPlayerActivity 機能を含む.apk をパッケージできるようになるはずだ。
トラブルシューティング
エラー:「ファイルが読み込めなかった
以下のようなエラーは無視して問題ありません。アップルのソフトウェアはCgBIと呼ばれる独自のPNG拡張子を使用しているが、Unityはこれを認識しない。これらのエラーは、iOSのビルドやBrazeバンドルの関連画像の適切な表示には影響しない。
1
Could not create texture from Assets/Plugins/iOS/AppboyKit/Appboy.bundle/...png: File could not be read
.NET MAUI SDKの統合
Braze .NET MAUI(旧称Xamarin)SDKを統合すると、基本的な分析機能に加え、ユーザーとのエンゲージメントに活用できる機能的なアプリ内メッセージが利用可能になる。
前提条件
.NET MAUI Braze SDKを統合する前に、以下の要件を満たしていることを確認せよ:
version 3.0.0以降、この SDK では、NET 6以降を使用する必要があり、Xamarin フレームワークを使用するプロジェクトのサポートが削除されます。- このSDKは
version 4.0.0、Xamarinのサポートを終了し、.NET &Xamarin.FormsMAUIのサポートを追加した。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の位置情報サービスとジオフェンスを使用するには、プロジェクトにBrazeAndroidLocationBinding.csproj以下の参照を追加する必要があるappboy-component/src/androidnet6/BrazeAndroidLocationBinding。
.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を利用できるようになる。プロジェクトの「リファレンス」フォルダに BrazeiOSBinding.csproj が表示されていることを確認します。
ステップ2:Brazeインスタンスの設定
ステップ 2.1: Braze.xmlでBraze SDKを構成する
ライブラリが統合されたので、プロジェクトのResources/values フォルダにBraze.xml ファイルを作成する必要があります。ファイルの内容は、次のコードスニペットのようになります。
Braze ダッシュボードのSettings> API キーsにあるAPI キーでYOUR_API_KEYを必ず置き換えてください。
古いナビゲーション を使用している場合は、デベロッパコンソール> API 設定.にAPI キーがあります。
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
<string-array name="com_braze_internal_sdk_metadata">
<item>XAMARIN</item>
<item>NUGET</item>
</string-array>
</resources>
バインディングソースを手動で含める場合は、コードから <item>NUGET</item> を削除します。
Braze.xml の例については、Android MAUI サンプルアプリを参照してください。
ステップ 2.2:Androidマニフェストに必要な権限を追加する
API キーを追加したので、次の権限を AndroidManifest.xml ファイルに追加する必要があります。
1
<uses-permission android:name="android.permission.INTERNET" />
AndroidManifest.xml の例については、Android MAUI サンプルアプリケーションを参照してください。
ステップ 2.3:ユーザー セッションs の追跡とアプリ内メッセージs の登録
ユーザーセッショントラッキングを有効にし、アプリ内メッセージ用にアプリを登録するには、アプリの Application クラスの OnCreate() ライフサイクルメソッドに次の呼び出しを追加します。
1
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
Braze インスタンスを設定したら、次のスニペットを追加して、インスタンスを設定します。
Braze ダッシュボードのSettings> API キーsにあるAPI キーでYOUR_API_KEYを必ず置き換えてください。
古いナビゲーション を使用している場合は、デベロッパコンソール> API 設定.にAPI キーがあります。
1
2
3
var configuration = new BRZConfiguration("YOUR_API_KEY", "YOUR_ENDPOINT");
configuration.Api.AddSDKMetadata(new[] { BRZSDKMetadata.Xamarin });
braze = new Braze(configuration);
iOS MAUIサンプルアプリライケーションのApp.xaml.csファイルを参照してください。
ステップ3: 統合をテストする
これで、アプリケーションを起動して、セッションが Braze ダッシュボードに (デバイス情報やその他の分析と共に) 記録されているのを確認できます。基本的なSDKインテグレーションのベストプラクティスの詳細については、Androidインテグレーション命令を参照してください。
これで、アプリケーションを起動して、セッションが Braze ダッシュボードに記録されているのを確認できます。基本的なSDKインテグレーションのベストプラクティスの詳細については、iOSインテグレーションの手順を参照してください。
現在公開中のiOS SDK向け.NET MAUIバインディングは、iOS Facebook SDK(ソーシャルデータの連携)には接続せず、またBrazeへのIDFA送信機能も含まれていない。
ChatGPTアプリの統合
設定
ステップ 1: Brazeの統合ファイルを取得する
ChatGPTアプリ統合リポジトリからファイルをbraze.jsプロジェクトにコピーせよ。このファイルには、必要なすべてのBraze SDK設定と補助関数が含まれている。
ステップ 2:依存関係をインストールする
Brazeの最新機能を利用するには、当社のWeb SDKを導入せよ。
クライアントサイド統合については:
1
npm install @braze/web-sdk
実装
BrazeをChatGPTアプリに統合する方法は、ユースケースに応じて2通りある:
クライアントサイド統合(カスタムウィジェット)
推奨されるアプローチ:この方法により、ChatGPTアプリウィジェット内でリッチなメッセージング体験とリアルタイムのユーザーインタラクショントラッキングが可能になる。
カスタムChatGPTアプリウィジェット内でBrazeメッセージングを表示し、ユーザーインタラクションをトラッキングするには、Web SDK統合を使用する。完全なメッセージングの例は、こちらのサンプルリポジトリで見つけることができる。
ウィジェットのメタデータを設定する
MCPサーバーファイルに以下のメタデータを追加し、Brazeドメインを許可する。CDNドメインは地域に応じて更新すること:
1
2
3
4
5
6
7
8
9
"openai/widgetCSP": {
connect_domains: ["https://YOUR-SDK-ENDPOINT"],
resource_domains: [
"https://appboy-images.com",
"https://braze-images.com",
"https://cdn.braze.eu",
"https://use.fontawesome.com"
],
}
実際のBraze SDKエンドポイントでYOUR-SDK-ENDPOINT置き換える。
useBrazeフックを設定する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { useBraze } from "./utils/braze";
function YourWidget() {
const braze = useBraze({
apiKey: "your-braze-api-key",
baseUrl: "your-braze-endpoint.braze.com",
});
useEffect(() => {
if (!braze.isInitialized) {
return;
}
// Set user identity
braze.changeUser("user-id-123");
// Log widget interactions
braze.logCustomEvent("viewed_pizzaz_list");
}, [braze.isInitialized]);
return (
// Your widget JSX
);
}
Brazeコンテンツカードを表示する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const [cards, setCards] = useState([]);
useEffect(() => {
// Get cached content cards
setCards(braze.getCachedContentCards()?.cards ?? []);
// Subscribe to content card updates
braze.subscribeToContentCardsUpdates((contentCards) => {
setCards(contentCards.cards);
});
// Open session
braze.openSession();
return () => {
braze.removeAllSubscriptions();
}
}, []);
ウィジェットのイベントのトラッキング
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Track user interactions within your widget
const handleButtonClick = () => {
braze.logCustomEvent("widget_button_clicked", {
button_type: "save_list",
widget_name: "pizza_list"
});
};
const handleItemInteraction = (itemId) => {
braze.logCustomEvent("item_interacted", {
item_id: itemId,
interaction_type: "view_details"
});
};
サーバーサイド統合(MCPサーバー)
MCPサーバー上でメッセージング機能のサーバーサイド統合も必要なら、に連絡せよ[email protected]。MCPサーバーからのイベントや購入のトラッキング, 追跡には、当社のREST APIを使用する。
Braze Vega SDKについて
Braze Vega SDKを使えば、ユーザー向けの分析データを収集し、アプリ内でリッチなアプリ内メッセージを表示できる。Braze Vega SDK のメソッドの大半は非同期であり、await または resolve すべき Promise を返す。
Braze Vega SDKの統合
ステップ 1: Brazeライブラリをインストールする
お好みのパッケージマネージャーを使って、Braze Vega SDKをインストールする。
プロジェクトでNPMを使用している場合、Braze Vega SDKを依存関係として追加できる。
1
npm install @braze/vega-sdk --save
インストール後、必要なメソッドをインポートできる:
1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
プロジェクトでYarnを使用している場合、Braze Vega SDKを依存関係として追加できる。
1
yarn add @braze/vega-sdk
インストール後、必要なメソッドをインポートできる:
1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
ステップ2:SDK の初期化
プロジェクトにBraze Vega SDKを追加した後、ライブラリーを初期化する。その際、Brazeダッシュボードの「設定」>「アプリ設定」にあるAPI キーとSDKエンドポイントURLを使用する。
他のBrazeメソッドを呼び出す前に、プロミchangeUserスを待機または解決しなければならない。さもなければ、イベントや属性が誤ったユーザーに設定される可能性がある。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { useEffect } from "react-native";
import {
initialize,
changeUser,
logCustomEvent,
openSession,
setCustomUserAttribute,
setUserCountry
} from "@braze/vega-sdk";
const App = () => {
useEffect(() => {
const initBraze = async () => {
// Initialize the SDK
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60,
appVersionNumber: "1.2.3.4",
enableLogging: true, // set to `true` for debugging
});
// Change user
await changeUser("user-id-123");
// Start a session
await openSession();
// Log custom events and set user attributes
logCustomEvent("visited-page", { pageName: "home" });
setCustomUserAttribute("my-attribute", "my-attribute-value");
setUserCountry("USA");
};
initBraze();
}, []);
return (
// Your app components
);
};
匿名ユーザーはMAUにカウントされる可能性がある。その結果、これらのユーザーをMAUカウントから除外するために、条件付きでSDKをロードするか、初期化したい場合があります。
オプション設定
ロギング
SDKのログ記録のイネーブルメントを有効にすれば、デバッグやトラブルシューティングに役立つ。ログ記録のイネーブルメントは複数ある。
初期化中にログ記録をイネーブルメントする
デバッグメッセージをコンソールに記録するにはinitialize()、enableLogging: true以下を実行する:
1
2
3
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
enableLogging: true
});
基本ログは全てのユーザーに公開されるため、本番環境にコードをリリースする前にログ記録を無効にすることを検討せよ。
初期化後にログ記録をイネーブルメントする
初期化後にSDKのログ出力をイネーブルメントまたは無効toggleLogging()にするには、以下を使用する:
1
2
3
4
import { toggleLogging } from "@braze/vega-sdk";
// Enable logging
toggleLogging();
カスタムロギング
SDKのログ処理をより細かくコントロールするために、カスタムロガー関数をsetLogger()指定するには``を使用する。
1
2
3
4
5
6
import { setLogger } from "@braze/vega-sdk";
setLogger((message) => {
console.log("Braze Custom Logger: " + message);
// Add your custom logging logic here
});
設定オプション
SDKの動作をカスタマイズするためにinitialize()、追加の設定オプションを渡すことができる:
1
2
3
4
5
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60, // Configure session timeout (default is 30 seconds)
appVersionNumber: "1.2.3.4", // Set your app version
enableLogging: true, // Enable SDK logging
});
SDKをアップグレードする
NPMやYarnからBraze Vega SDKを参照している場合、パッケージ依存関係を更新することで最新版にアップグレードできる:
1
2
3
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk
統合のテスト
SDKの統合が正しく動作しているか確認するには:
- コンソールにデバッグメッセージを表示するには
enableLogging: true、SDKを初期化する。 - 他のSDKメソッドを呼び出す前に
await changeUser()必ず確認すること - セッションを開始するには
await openSession()電話をかけろ - Brazeダッシュボードの「概要」で、セッションデータが記録されていることを確認せよ。
- カスタムイベントのテスト記録を行い、それがダッシュボードに表示されることを確認する
SDKインテグレーションのQAを行う際、SDKデバッガーを使用すれば、アプリの冗長ロギングをオンにすることなく、問題のトラブルシューティングを行うことができる。
GitHub でこのページを編集