コンテンツにスキップ

BrazeロゴBraze SDKを統合する

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

ドキュメント内のミラーされたSDK READMEコンテンツについては、リポジトリガイドを参照してください。

Web Braze SDKについて

Web Braze SDKを使用すると、分析データを収集し、リッチなアプリ内メッセージ、プッシュ、およびContent Cardsメッセージをウェブユーザーに表示できます。詳細については、Braze JavaScriptリファレンスドキュメントを参照してください。

Web SDKを統合する

以下の方法でWeb Braze SDKを統合できます。追加のオプションについては、その他の統合方法を参照してください。

  • コードベースの統合: お好みのパッケージマネージャーまたはBraze CDNを使用して、Web Braze SDKをコードベースに直接統合します。これにより、SDKの読み込みと設定を完全にコントロールできます。
  • Google Tag マネージャー: サイトのコードを変更せずにWeb Braze SDKを統合できるノーコードソリューションです。詳しくは、Braze SDKでのGoogle Tag マネージャーの使用を参照してください。

ステップ1:Brazeライブラリをインストールする

以下のいずれかの方法でBrazeライブラリをインストールできます。ただし、WebサイトがContent-Security-Policyを使用している場合は、続行する前にコンテンツセキュリティポリシーを確認してください。

サイトが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に直接追加します。これによりライブラリが非同期で読み込まれます。

ステップ2:SDKを初期化する

Braze Web SDKをWebサイトに追加した後、Brazeダッシュボードの設定 > アプリの設定にあるAPIキーとSDKエンドポイントURLを使用してライブラリを初期化します。braze.initialize()のオプション一覧やその他のJavaScriptメソッドについては、Braze JavaScriptドキュメントを参照してください。

// 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();

匿名ユーザーのセッション欠落に関するトラブルシューティング

「セッション欠落」の動作が見られる場合、またはWeb上で匿名のままのユーザーのセッションをトラッキングできない場合は、統合時にbraze.openSession()が初期化中に呼び出されていることを確認してください。

  • シナリオ: 匿名ユーザーがBraze IDを返すことはできるが、セッションデータが空または欠落している。
  • 原因: 実装でbraze.openSession()が呼び出されていない。
  • 解決策: 初期化後(external IDを設定する場合はbraze.changeUser()の後)に必ずbraze.openSession()を呼び出してください。

詳しくは、ステップ2:SDKを初期化するを参照してください。

前提条件

この連携方法を使用する前に、Google Tag Managerのアカウントとコンテナを作成する必要があります。

Google Tag Managerでワークスペースを選択し、Templatesを選びます。Tag Templateペインで、Search Galleryを選択します。

Google Tag Managerのサンプルワークスペースのテンプレートページ。

ステップ 2: 初期化タグのテンプレートを追加する

テンプレートギャラリーで braze-inc を検索し、Braze Initialization Tagを選択します。

様々な「braze-inc」テンプレートを表示するテンプレートギャラリー。

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

Google Tag Managerの「Braze Initialization Tag」ページ。

ステップ 3: タグを設定する

Templatesセクションから、新しく追加したテンプレートを選択します。

Google Tag Managerの「Templates」ページにBraze Initialization Tagテンプレートが表示されている。

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

鉛筆アイコンが表示された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を選択し、必要なオプションを選びます。

「Tag Configuration」の下にある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)。

GTMテンプレートで公開されていないオプション(contentSecurityNoncelocalizationdevicePropertyAllowlistなど)については、代わりにランタイム初期化を使用してください。

ステップ 5: すべてのページでトリガーされるように設定する

初期化タグはサイトのすべてのページで実行する必要があります。これにより、Braze SDKメソッドを使用し、Webプッシュの分析を記録できるようになります。

ステップ 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の初期化を遅らせることを検討してください。この手法は実装が容易な場合が多く、ボットトラフィックのフィルタリングに非常に効果的です。

カスタムボット検出

特定のボットトラフィックパターンに基づいてカスタム検出を実装します。例えば:

  • トラフィックで識別したパターンについて、ユーザーエージェント文字列を分析する
  • ヘッドレスブラウザーの指標を確認する
  • サードパーティのボット検出サービスを利用する
  • サイト固有の行動シグナルを監視する

条件付き初期化の例:

// 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のコンテンツデリバリーネットワーク(例: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-iframepermission-dialogを追加する

AMP Webプッシュコンポーネントはプッシュ購読を処理するためのポップアップを作成するため、この機能を有効にするには以下のヘルパーファイルをプロジェクトに追加する必要があります:

ステップ4:サービスワーカーファイルを作成する

Webサイトのルートディレクトリにservice-worker.jsファイルを作成し、以下のスニペットを追加します:

ステップ5:AMP Webプッシュ HTML要素を設定する

以下のamp-web-push HTML要素をHTMLのbodyに追加します。apiKeybaseUrlをクエリパラメーターとして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のメソッドを呼び出すことができます。一般的なパターンは、onClickonSubmitなどのユーザーアクション内で呼び出すことです。この例では、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コンポーネントを示しています。まず、クリック時にlogCustomEventlogPurchasegetUserのみをインポートします。次に、ユーザー属性を更新し、カスタムイベントを記録し、購入を記録します。このパターンにより、初期化を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.gradlesettings.gradle.kts、またはトップレベルのbuild.gradle)で、リポジトリのリストにmavenCentral()を追加します。この構文はGroovyとKotlin DSLの両方で同じです。

repositories {
  mavenCentral()
}

次に、Brazeを依存関係に追加します。以下の例では、SDK_VERSIONをお使いのAndroid Braze SDKの現在のバージョンに置き換えてください。バージョンの全リストについては、変更ログを参照してください。

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を設定する

プロジェクトの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" />

ステップ4:遅延初期化を有効にする(オプション)

遅延初期化を使用するには、以下の最小Braze SDKバージョンが必要です。

ステップ4.1:braze.xmlを更新する

遅延初期化はデフォルトで無効になっています。有効にするには、以下のいずれかのオプションを使用してください。

プロジェクトのbraze.xmlファイルで、com_braze_enable_delayed_initializationtrueに設定します。

<bool name="com_braze_enable_delayed_initialization">true</bool>

ランタイムで遅延初期化を有効にするには、以下のメソッドを使用します。

Braze.enableDelayedInitialization(context);
Braze.enableDelayedInitialization(context)

ステップ4.2:プッシュ分析を設定する(オプション)

遅延初期化が有効な場合、プッシュ分析はデフォルトでキューに入れられます。ただし、プッシュ分析を明示的にキューに入れるか、ドロップするかを選択することもできます。

明示的にキューに入れる

プッシュ分析を明示的にキューに入れるには、以下のいずれかのオプションを選択してください。

braze.xmlファイルで、com_braze_delayed_initialization_analytics_behaviorQUEUEに設定します。

<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_behaviorDROPに設定します。

<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呼び出しの欠落を検出してください。

  1. BrazeでOverviewに移動し、アプリを選択してから、Display Data ForドロップダウンでTodayを選択します。 Brazeの「Overview」ページ。「Display Data For」フィールドが「Today」に設定されています。
  2. アプリを開き、Brazeダッシュボードを更新します。メトリクスが1増加していることを確認します。
  3. アプリ内を移動し、Brazeに記録されたセッションが1つだけであることを確認します。
  4. アプリを少なくとも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()
    }
  }
}

位置情報の追跡

Brazeの位置情報収集を有効にするには、braze.xmlファイルでcom_braze_enable_location_collectiontrueに設定します:

<bool name="com_braze_enable_location_collection">true</bool>

ログ

デフォルトでは、Braze Android SDKのログレベルはINFOに設定されています。これらのログを抑制したり、VERBOSEDEBUGWARNなど別のログレベルを設定したりできます。

ログの有効化

アプリの問題のトラブルシューティングやBrazeサポートとの対応時間の短縮に役立てるため、SDKの詳細ログを有効にできます。Brazeサポートに詳細ログを送信する際は、アプリの起動直後に開始し、問題が発生した後もしばらくの間ログが記録されるようにしてください。概要については、詳細ログを参照してください。ログ出力の読み方については、詳細ログの読み方を参照してください。

詳細ログは開発環境のみを対象としているため、アプリのリリース前に無効にしてください。

アプリ内で直接ログを有効にするには、アプリケーションの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の場合にアサーションメッセージをログに記録します。

たとえば、次のコードはログレベル234567Logメソッドに転送します。

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の場合にアサーションメッセージをログに記録します。

たとえば、次のコードはログレベル234567Logメソッドに転送します。

<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プロジェクトはdebugreleaseのビルドタイプで構成され、プロダクトフレーバーはありません。

関連する各ビルドバリアントに対して、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タブを選択し、パッケージリストの下にある追加ボタンをクリックします。

Swift PackagesタブとAdd Packageボタンが表示されたXcodeプロジェクト設定。

テキストフィールドにiOS Swift SDKリポジトリのURL https://github.com/braze-inc/braze-swift-sdk を入力します。Dependency RuleセクションでSDKバージョンを選択します。最後に、Add Packageをクリックします。

Braze Swift SDKリポジトリのURLが入力されたXcodeのAdd Packageダイアログ。

ステップ1.2:パッケージを選択する

Braze Swift SDKは機能をスタンドアロンライブラリに分離しており、開発者がプロジェクトにインポートする機能をより細かくコントロールできます。

パッケージ 詳細
BrazeKit 分析とプッシュ通知をサポートするメインSDKライブラリ。
BrazeLocation 位置情報分析とジオフェンスモニタリングをサポートするロケーションライブラリ。
BrazeUI アプリ内メッセージ、Content Cards、およびBannersのためのBraze提供ユーザーインターフェイスライブラリ。デフォルトのUIコンポーネントを使用する場合は、このライブラリをインポートしてください。
拡張ライブラリについて
パッケージ 詳細
BrazeNotificationService リッチプッシュ通知をサポートする通知サービス拡張ライブラリ。
BrazePushStory Push Storiesをサポートする通知コンテンツ拡張ライブラリ。

ニーズに最も適したパッケージを選択し、Add Packageをクリックします。少なくともBrazeKitを選択してください。

パッケージを追加する前にBrazeKitが選択されたXcodeパッケージプロダクトリスト。

ステップ1.1:CocoaPodsをインストールする

完全なウォークスルーについては、CocoaPodsのGetting Startedガイドを参照してください。それ以外の場合は、以下のコマンドを実行してすぐに開始できます:

$ sudo gem install cocoapods

問題が発生した場合は、CocoaPodsのトラブルシューティングガイドを確認してください。

ステップ1.2:Podfileを構築する

次に、XcodeプロジェクトディレクトリにPodfileという名前のファイルを作成します。

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コンポーネントを使用する場合は、このライブラリをインポートしてください。
拡張ライブラリ

BrazeNotificationServiceBrazePushStoryは追加機能を提供する拡張モジュールであり、メインアプリケーションターゲットに直接追加しないでください。代わりに、これらのモジュールごとに個別の拡張ターゲットを作成し、対応するターゲットにBrazeモジュールをインポートする必要があります。

ライブラリ 詳細
pod 'BrazeNotificationService' リッチプッシュ通知をサポートする通知サービス拡張ライブラリ。
pod 'BrazePushStory' Push Storiesをサポートする通知コンテンツ拡張ライブラリ。

ステップ1.3:SDKをインストールする

Braze SDK CocoaPodをインストールするには、ターミナルでXcodeアプリプロジェクトのディレクトリに移動し、以下のコマンドを実行します:

pod install

この時点で、CocoaPodsによって作成された新しいXcodeプロジェクトワークスペースを開くことができるはずです。Xcodeプロジェクトの代わりに、必ずこのXcodeワークスペースを使用してください。

新しい`BrazeExample.workspace`が表示された、展開されたBraze Exampleフォルダ。

CocoaPodsを使用したSDKの更新

CocoaPodを更新するには、プロジェクトディレクトリ内で以下のコマンドを実行するだけです:

pod update

ステップ1.1:Braze SDKをダウンロードする

GitHubのBraze SDKリリースページに移動し、braze-swift-sdk-prebuilt.zipをダウンロードします。

GitHubのBraze SDKリリースページ。

ステップ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のどちらを使用するかを決定し、ファイルを準備します:

  1. XCFrameworks用の一時ディレクトリを作成します。
  2. braze-swift-sdk-prebuilt内のdynamicディレクトリを開き、BrazeKit.xcframeworkをディレクトリに移動します。ディレクトリは以下のようになるはずです:
     temp_dir
     └── BrazeKit.xcframework
    
  3. 選択した各XCFrameworkを一時ディレクトリに移動します。ディレクトリは以下のようになるはずです:
     temp_dir
     ├── BrazeKit.xcframework
     ├── BrazeKitCompat.xcframework
     ├── BrazeLocation.xcframework
     └── SDWebImage.xcframework
    

ステップ1.4:フレームワークを統合する

次に、先ほど準備したDynamicまたはStatic XCFrameworksを統合します:

Xcodeプロジェクトでビルドターゲットを選択し、Generalを選択します。Frameworks, Libraries, and Embedded Contentの下に、先ほど準備したファイルをドラッグ&ドロップします。

各BrazeライブラリがEmbed & Signに設定されたXcodeプロジェクトの例。

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が初期化される前に受信したプッシュ通知が適切にキャプチャされ、後で処理されるようになります。

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;
}

ステップ3:アプリデリゲートを更新する

AppDelegate.swiftファイルに以下のコード行を追加して、Braze Swift SDKに含まれる機能をインポートします:

import BrazeKit

次に、AppDelegateクラスに静的プロパティを追加して、アプリケーションのライフタイム全体を通じてBrazeインスタンスへの強参照を保持します:

class AppDelegate: UIResponder, UIApplicationDelegate {
  static var braze: Braze? = nil
}

SDKでは、アプリケーションが使用中にBrazeインスタンスへの強参照を保持する必要があります。予期しない副作用を防ぐために、Brazeインスタンスのプロパティやメソッドにアクセスまたは変更する前に、その参照を完全にキャプチャしていることを確認してください。

最後に、AppDelegate.swiftapplication: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-KEYYOUR-BRAZE-ENDPOINTApp 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-KEYYOUR-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を参照してください。

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を追加する

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

ステップ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のデフォルトNotificationChannelNotificationChannel.getNameを通じてユーザーに表示される名前を設定します。
default_notification_channel_description BrazeのデフォルトNotificationChannelNotificationChannel.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;
}

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>");
}

プラットフォーム固有の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コードにプラグインをインポートするには、以下を使用します。

import 'package:braze_plugin/braze_plugin.dart';

次に、サンプルアプリのようにnew BrazePlugin()を呼び出してBrazeプラグインのインスタンスを初期化します。

統合のテスト

ダッシュボードでセッション統計を確認することで、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 とレガシーブリッジアーキテクチャの両方に対応しています。そのため、追加の設定は不要です。

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プッシュ通知アイコンの設定

androidNotificationLargeIconandroidNotificationSmallIconを使用する場合は、適切なアイコン表示のために以下のベストプラクティスに従ってください:

アイコンの配置とフォーマット

Braze Expoプラグインでカスタムプッシュ通知アイコンを使用するには:

  1. 「アイコン要件」に記載されている要件に従ってアイコンファイルを作成します。
  2. プロジェクトのAndroidネイティブディレクトリのandroid/app/src/main/res/drawable-<density>/に配置します。 例えば、android/app/src/main/res/drawable-mdpi/android/app/src/main/res/drawable-hdpi/を使用します。
  3. または、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"
        }
      ]
    ]
  }
}

仕組み

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.gradlebuildscript > 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>

以下のコードスニペットは、AndroidManifest.xmlファイルに必要なパーミッションを示しています:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

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:launchModesingleTaskに設定されている場合、以下のコードスニペットは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.configureAppDelegateで使用して、ネイティブ設定を登録します。指定したクロージャは保存され、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;
}

方法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プッシュ通知アイコンの設定

androidNotificationLargeIconandroidNotificationSmallIconを使用する場合は、適切なアイコン表示のために以下のベストプラクティスに従ってください:

アイコンの配置とフォーマット

Braze Expoプラグインでカスタムプッシュ通知アイコンを使用するには:

  1. 「アイコン要件」に記載されている要件に従ってアイコンファイルを作成します。
  2. プロジェクトのAndroidネイティブディレクトリのandroid/app/src/main/res/drawable-<density>/に配置します(例:android/app/src/main/res/drawable-mdpi/drawable-hdpi/など)。
  3. または、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"
        }
      ]
    ]
  }
}

仕組み

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.gradlebuildscript > 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" />

ステップ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:launchModesingleTaskに設定されている場合、以下のコードスニペットは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にスタティックプロパティを作成します。

以下のコードスニペットは、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にスタティックプロパティを作成します。

以下のコードスニペットは、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";

次に、アプリ識別子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");
}

プラットフォーム固有の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は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では、AppDelegateapplication(_: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
  }
});

プッシュ登録設定は、両方の初期化ロケーションに対してネイティブ設定に保持され、Braze.initialize()の実行時にBrazeが適用します:

  • Androidでは、braze.xmlcom_braze_firebase_cloud_messaging_registration_enabledcom_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を呼び出すコンポーネントをテストする際にNativeEventEmitterTurboModuleRegistryBrazeReactBridgeがモックされるようになります。

次のステップ

Braze SDKを統合した後、一般的なメッセージング機能の実装を開始できます。

  • プッシュ通知: プッシュ通知を設定してユーザーに送信します。
  • In-App Messages: アプリ内に文脈に応じたメッセージを表示します。
  • バナー: アプリのインターフェイスに常時表示のバナーを表示します。

Roku SDKを統合する

ステップ1:ファイルを追加する

Braze SDKファイルは、Braze Roku SDKリポジトリsdk_filesディレクトリにあります。

  1. BrazeSDK.brsをアプリのsourceディレクトリに追加します。
  2. BrazeTask.brsBrazeTask.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フレームワークを含めたくない場合に便利です。

Brazeの.unitypackageは、AndroidおよびiOSプラットフォームのネイティブバインディングとC#インターフェイスをバンドルしています。

Braze Unityパッケージは、Braze Unityリリースページから2つの統合オプションでダウンロードできます:

  1. Appboy.unitypackageのみ
    • このパッケージは、追加の依存関係なしでBraze AndroidおよびiOS SDKをバンドルしています。この統合方法では、iOSでのBrazeアプリ内メッセージおよびContent Cards機能が正常に動作しません。Brazeのフル機能をカスタムコードなしで利用する場合は、次のオプションを使用してください。
    • この統合オプションを使用するには、Unity UIの「Braze Configuration」でImport SDWebImage dependencyの横のチェックボックスがオフになっていることを確認してください。
  2. Appboy.unitypackageSDWebImage
    • この統合オプションは、Braze AndroidおよびiOS SDKと、iOS SDKのSDWebImage依存関係をバンドルしています。これは、iOSでのBrazeアプリ内メッセージおよびContent Cards機能の正常な動作に必要です。SDWebImageフレームワークは、GIFを含む画像のダウンロードと表示に使用されます。Brazeのフル機能を利用する場合は、このパッケージをダウンロードしてインポートしてください。
    • SDWebImageを自動的にインポートするには、Unity UIの「Braze Configuration」でImport SDWebImage dependencyの横のチェックボックスを必ずオンにしてください。

ステップ2:パッケージをインポートする

Unity Editorで、Assets > Import Package > Custom Packageに移動して、パッケージをUnityプロジェクトにインポートします。次に、Importをクリックします。

または、カスタムUnityパッケージのインポートに関する詳細なガイドについては、Unityアセットパッケージのインポートの手順に従ってください。

Unity Editorで、Assets > Import Package > Custom Packageに移動して、パッケージをUnityプロジェクトにインポートします。次に、Importをクリックします。

または、カスタムUnityパッケージのインポートに関する詳細なガイドについては、Unityアセットパッケージのインポートの手順に従ってください。

ステップ3:SDKを設定する

ステップ3.1:AndroidManifest.xmlを設定する

Braze SDKが機能するようにAndroidManifest.xmlを設定します。アプリにAndroidManifest.xmlがない場合は、以下をテンプレートとして使用できます。すでにAndroidManifest.xmlがある場合は、以下の不足しているセクションが既存のAndroidManifest.xmlに追加されていることを確認してください。

  1. Assets/Plugins/Android/ディレクトリに移動し、AndroidManifest.xmlファイルを開きます。これはUnity Editorのデフォルトの場所です。
  2. AndroidManifest.xmlに、以下のテンプレートから必要な権限とアクティビティを追加します。
  3. 完了後、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>

ステップ3.2:AndroidManifest.xmlをパッケージ名で更新する

パッケージ名を確認するには、File > Build Settings > Player Settings > Android Tabをクリックします。

アプリケーションパッケージ名が表示されているUnity Player SettingsのAndroidタブ。

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ソリューションを提供しています。

  1. Unity Editorで、Braze > Braze Configurationに移動してBraze Configuration Settingsを開きます。
  2. Automate Unity Android Integrationチェックボックスをオンにします。
  3. Braze API Keyフィールドに、Brazeダッシュボードの設定の管理にあるアプリケーションのAPIキーを入力します。

ステップ3.1:APIキーを設定する

BrazeはUnity iOS統合を自動化するためのネイティブUnityソリューションを提供しています。このソリューションは、UnityのPostProcessBuildAttributeを使用してビルドされたXcodeプロジェクトを変更し、IMPL_APP_CONTROLLER_SUBCLASSマクロを使用してUnityAppControllerをサブクラス化します。

  1. Unity Editorで、Braze > Braze Configurationに移動してBraze Configuration Settingsを開きます。
  2. Automate Unity iOS Integrationチェックボックスをオンにします。
  3. Braze API Keyフィールドに、設定の管理にあるアプリケーションのAPIキーを入力します。

Automate Unity iOS IntegrationとBraze API Keyフィールドが表示されているUnity Braze Configuration画面。

アプリケーションが別の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にパッケージをインポートする

  1. Unityで、Assets > Import Package > Custom Packageに移動して、目的のパッケージをUnityプロジェクトにインポートします。
  2. インポートしたくないファイルがある場合は、ここで選択を解除します。
  3. Assets/Editor/Build.csにあるエクスポートされたUnityパッケージをカスタマイズします。

自動統合に切り替える(Swiftのみ)

Braze Unity SDKで提供される自動化されたiOS統合を利用するには、手動から自動統合に移行するための以下のステップに従ってください。

  1. XcodeプロジェクトのUnityAppControllerサブクラスから、Braze関連のコードをすべて削除します。
  2. UnityまたはXcodeプロジェクトからBraze iOSライブラリーを削除します(Appboy_iOS_SDK.frameworkSDWebImage.frameworkなど)。
  3. Braze Unityパッケージをプロジェクトに再度インポートします。完全なウォークスルーは、ステップ2:パッケージをインポートするを参照してください。
  4. APIキーを再度設定します。完全なウォークスルーは、ステップ3.1:APIキーを設定するを参照してください。

オプション設定

詳細ログ

Unity Editorで詳細ログを有効にするには、以下の手順を実行します。

  1. Braze > Braze Configuration に移動して、Braze Configuration Settings を開きます。
  2. Show Braze Android Settings ドロップダウンをクリックします。
  3. 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統合手順に従ってください。

  1. Braze Android SDK統合手順に記載されているとおり、Braze Android SDKをライブラリまたはプラグインプロジェクトの依存関係として追加します。
  2. Unity 固有の機能を含む Unity .aar を、Unity 用にビルドしている Android ライブラリプロジェクトに統合します。appboy-unity.aar公開リポジトリから入手できます。Unity ライブラリの統合が完了したら、UnityPlayerActivityBrazeUnityPlayerActivity を拡張するように変更します。
  3. ライブラリまたはプラグインプロジェクトをエクスポートし、通常どおり /<your-project>/Assets/Plugins/Android にドロップします。Brazeのソースコードは既に /<your-project>/Assets/Plugins/Android に存在するため、ライブラリやプラグインに含めないでください。
  4. /<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バインディングとは、.NET MAUIアプリでネイティブライブラリを利用する方法です。バインディングの実装は、ライブラリに対してC#インターフェイスを構築し、アプリケーションでそのインターフェイスを使用することから構成されます。Braze SDKバインディングを含めるには、NuGetを使用する方法と、ソースからコンパイルする方法の2つがあります。

最も簡単な統合方法は、NuGet.org中央リポジトリからBraze SDKを取得することです。Visual StudioサイドバーでPackagesフォルダを右クリックし、Add Packages...をクリックします。「Braze」を検索し、最新の.NET MAUI iOS NuGetパッケージであるBraze.iOS.BrazeKitBraze.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ファイルを作成する必要があります。ファイルの内容は、次のコードスニペットのようになります。

  <?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インスタンスを設定する際に、次のスニペットを追加してインスタンスを設定します。

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統合の手順を参照してください。

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)

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を使用してライブラリを初期化します。

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統合が正しく動作していることを確認するには:

  1. enableLogging: true を指定してSDKを初期化し、コンソールにデバッグメッセージが表示されることを確認します
  2. 他のSDKメソッドを呼び出す前に await changeUser() を実行します
  3. await openSession() を呼び出してセッションを開始します
  4. Brazeダッシュボードの概要でセッションデータが記録されていることを確認します
  5. カスタムイベントをログに記録し、ダッシュボードに表示されることを確認します
New Stuff!