Skip to content

BrazeロゴBraze SDKを統合する

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

Web Braze SDKについて

Web Braze SDKを使えば、分析データを収集し、Webユーザー向けにリッチなアプリ内メッセージ、プッシュ通知、Content Cardsメッセージを表示できます。詳細については、Braze JavaScriptリファレンスドキュメントを参照してください。

Web SDKを統合する

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

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

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

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

サイトがNPMまたはYarnパッケージマネージャーを使用している場合、依存関係としてBraze NPMパッケージを追加できます。

v3.0.0からTypeScriptの定義が含まれるようになりました。2.xから3.xへのアップグレードに関する注意事項については、changelogを参照してください。

1
2
3
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk

インストール後は、通常の方法でライブラリーをimportまたはrequireできます。

1
2
3
import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");

Braze Web SDKをHTMLに直接追加するには、CDNホストスクリプトを参照し、ライブラリーを非同期で読み込みます。

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: "YOUR-SDK-ENDPOINT-HERE",
    enableLogging: false, // set to `true` for debugging
    allowUserSuppliedJavascript: false, // set to `true` to support custom HTML messages
});

// Enable automatic display of in-app messages
// Required if you want in-app messages to display automatically when triggered
braze.automaticallyShowInAppMessages();

// if you use Content Cards
braze.subscribeToContentCardsUpdates(function(cards){
    // cards have been updated
});

// optionally set the current user's external ID before starting a new session
// you can also call `changeUser` later in the session after the user logs in
if (isLoggedIn){
    braze.changeUser(userIdentifier);
}

// `openSession` should be called last - after `changeUser` and `automaticallyShowInAppMessages`
braze.openSession();

匿名ユーザーにおけるセッション消失のトラブルシューティング

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

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

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

カスタムボット検出

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

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

条件付き初期化の例:

1
2
3
4
5
6
7
8
// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
  braze.initialize('YOUR-API-KEY-HERE', {
    baseUrl: "YOUR-SDK-ENDPOINT-HERE"
  });
  braze.automaticallyShowInAppMessages();
  braze.openSession();
}

ベストプラクティス

  • MAUデータとWebトラフィックのパターンを定期的に分析し、新たなボットの行動を識別してください。
  • ボットフィルタリングが正当なユーザーのトラッキングを妨げないよう、徹底的にテストしてください。
  • 環境内で観察されるボットのトラフィックパターンに基づいて、フィルタリングロジックを更新してください。

オプション設定

ロギング

ロギングをすばやく有効にするには、?brazeLogging=trueをパラメーターとしてWebサイトURLに追加します。あるいは、基本ロギングまたはカスタムロギングを有効にすることもできます。すべてのプラットフォームにわたる一元的な概要については、詳細ログを参照してください。

基本的なロギング

SDKが初期化される前に、基本的なデバッグメッセージをJavaScriptコンソールに記録するにはenableLoggingを使用します。

1
enableLogging: true

メソッドは次のようになります。

1
2
3
4
5
braze.initialize('API-KEY', {
    baseUrl: 'API-ENDPOINT',
    enableLogging: true
});
braze.openSession();

SDKが初期化された後、基本的なデバッグメッセージをJavaScriptコンソールに記録するにはbraze.toggleLogging()を使用します。メソッドは次のようになります。

1
2
3
4
5
6
braze.initialize('API-KEY', {
    baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();

カスタムロギング

カスタムデバッグメッセージをJavaScriptコンソールに記録するには、setLoggerを使用します。基本ログとは異なり、これらのログはユーザーには表示されません。

1
setLogger(loggerFunction: (message: STRING) => void): void

STRINGを1つの文字列パラメーターとしてメッセージに置き換えます。メソッドは次のようになります。

1
2
3
4
5
braze.initialize('API-KEY');
braze.setLogger(function(message) {
    console.log("Braze Custom Logger: " + message);
});
braze.openSession();

SDKをアップグレードする

コンテンツ配信ネットワークからBraze Web SDKを参照する場合(デフォルトの統合手順で推奨されている通り)、例えばhttps://js.appboycdn.com/web-sdk/a.a/braze.min.jsの場合、ユーザーはサイトを更新する際にマイナー更新(バグ修正や下位互換性のある機能、上記の例でバージョンa.a.aからa.a.zまでの更新)を自動的に受け取ります。

ただし、主要な変更をリリースする際には、互換性を損なう変更が統合に影響しないよう、Braze Web SDKを手動でアップグレードする必要があります。さらに、SDKをダウンロードして自身でホストする場合、バージョン更新は自動的には行われないため、最新の機能やバグ修正を受けるには手動でアップグレードする必要があります。

RSSリーダーまたは任意のサービスを使用して、リリースフィードをフォローすることで最新のリリースを把握できます。また、Web SDKのリリース履歴の詳細については、変更ログを参照してください。Braze Web SDKをアップグレードするには:

  • https://js.appboycdn.com/web-sdk/[OLD VERSION NUMBER]/braze.min.jsのバージョン番号を変更するか、パッケージマネージャーの依存関係でBrazeライブラリーのバージョンを更新します。
  • Webプッシュが統合されている場合は、サイトのサービスワーカーファイルを更新します。デフォルトでは、このファイルはサイトのルートディレクトリの/service-worker.jsにありますが、統合によっては場所がカスタマイズされている場合があります。サービスワーカーファイルをホストするには、ルートディレクトリにアクセスする必要があります。

正常に機能させるために、これら2つのファイルは連携して更新する必要があります。

その他の統合方法

Accelerated Mobile Pages(AMP)

See more

ステップ1:AMP Webプッシュスクリプトを含める

次の非同期スクリプトタグをheadに追加します。

1
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>

ステップ2:サブスクリプションウィジェットを追加する

HTMLのbodyにウィジェットを追加し、ユーザーがプッシュ通知の登録と配信停止を行えるようにします。

1
2
3
4
5
6
7
8
9
<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
  <button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>

<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
  <button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>

ステップ3:helper-iframepermission-dialogを追加する

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

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

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

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

HTMLのbodyに次のamp-web-push HTML要素を追加します。apiKeybaseUrlをクエリパラメーターとしてservice-worker-URLに追加する必要があることに注意してください。

1
2
3
4
5
6
7
<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>

非同期モジュール定義(AMD)

サポートを無効にする

サイトがRequireJSや他のAMDモジュールローダーを使用しているが、このリストにある他のオプションのいずれかでBraze Web SDKを読み込みたい場合、AMDサポートを含まないバージョンのライブラリーを読み込むことができます。このバージョンのライブラリーは、以下のCDNの場所から読み込めます。

モジュールローダー

RequireJSまたは他のAMDモジュールローダーを使用する場合は、ライブラリーのコピーをセルフホスティングし、他のリソースと同様に参照することをお勧めします。

1
2
3
4
5
6
require(['path/to/braze.min.js'], function(braze) {
  braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
  // Required if you want in-app messages to display automatically
  braze.automaticallyShowInAppMessages();
  braze.openSession();
});

Electron

Electronは公式にはWebプッシュ通知をサポートしていません(参照:このGitHub issue)。Brazeがテストしていないオープンソースの回避策を試すこともできます。

Jestフレームワーク

Jestを使用している場合、SyntaxError: Unexpected token 'export'のようなエラーが表示されることがあります。これを修正するには、Braze SDKを無視するようにpackage.jsonの設定を調整します。

1
2
3
4
5
"jest": {
  "transformIgnorePatterns": [
    "/node_modules/(?!@braze)"
  ]
}

SSRフレームワーク

Web SDKはブラウザー環境で動作します。SSRフレームワークでは、サーバーがSDKコードを実行しないよう、クライアント専用コンポーネントでBrazeを初期化してください。

フレームワーク非依存の動的インポート

このセクションにフレームワークが記載されていない場合は、クライアント専用のライフサイクルフックからBrazeを動的にインポートできます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// MyComponent/braze-exports.js
// Export the parts of the SDK that you need.
export { initialize, openSession } from "@braze/web-sdk";

// MyComponent/MyComponent.js
useEffect(() => {
    import("./braze-exports.js").then(({ initialize, openSession }) => {
        initialize("YOUR-API-KEY-HERE", {
            baseUrl: "YOUR-SDK-ENDPOINT",
            enableLogging: true,
        });
        openSession();
    });
}, []);

webpackを使用している場合は、特定のSDKエクスポートのみを動的にインポートできます。

1
2
3
4
5
6
7
8
9
10
11
12
13
// MyComponent.js
useEffect(() => {
    import(
        /* webpackExports: ["initialize", "openSession"] */
        "@braze/web-sdk"
    ).then(({ initialize, openSession }) => {
        initialize("YOUR-API-KEY-HERE", {
            baseUrl: "YOUR-SDK-ENDPOINT",
            enableLogging: true,
        });
        openSession();
    });
}, []);

Next.jsとRemix用の共有フック

再利用可能なuseBrazeフックを作成し、アプリのルート付近で呼び出します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// hooks/useBraze.ts
import { useEffect, useRef } from "react";

export function useBraze() {
  const didInit = useRef(false);

  useEffect(() => {
    if (didInit.current) {
      return;
    }
    didInit.current = true;

    import("@braze/web-sdk")
      .then((braze) => {
        const initialized = braze.initialize("YOUR-API-KEY-HERE", {
          // Use your Braze Web SDK endpoint, such as sdk.iad-01.braze.com.
          baseUrl: "YOUR-SDK-ENDPOINT",
          enableLogging: false,
        });
        if (!initialized) {
          return;
        }

        // Optional: Identify signed-in users before opening a session.
        // braze.changeUser("external-id");

        // Optional: Automatically display in-app messages.
        // braze.automaticallyShowInAppMessages();
        braze.openSession();
      })
      .catch((error) => {
        console.error("Unable to load Braze SDK:", error);
      });
  }, []);
}

Next.js(App Router)

アプリをラップするクライアントコンポーネントでuseBrazeを呼び出します。

1
2
3
4
5
6
7
8
9
10
// app/components/AppRoot.tsx
"use client";

import type { ReactNode } from "react";
import { useBraze } from "../hooks/useBraze";

export function AppRoot({ children }: { children: ReactNode }) {
  useBraze();
  return <>{children}</>;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// app/layout.tsx
import type { ReactNode } from "react";
import { AppRoot } from "./components/AppRoot";

export default function RootLayout({
  children,
}: {
  children: ReactNode;
}) {
  return (
    <html lang="en">
      <body>
        <AppRoot>{children}</AppRoot>
      </body>
    </html>
  );
}

Next.js(Pages Router)

カスタムアプリコンポーネントの先頭でuseBrazeを呼び出します。

1
2
3
4
5
6
7
8
9
10
11
// pages/_app.tsx
import type { AppProps } from "next/app";
import { useBraze } from "../hooks/useBraze";

export default function App({ Component, pageProps }: AppProps) {
  useBraze();

  return (
    <Component {...pageProps} />
  );
}

Remix

ルートルートコンポーネントの先頭でuseBrazeを呼び出します。

ローカルのRemix検証例を実行するには、PORT=4013 npm run devを使用します。

1
2
3
4
5
6
7
8
9
// app/root.tsx
import { Outlet } from "@remix-run/react";
import { useBraze } from "./hooks/useBraze";

export default function App() {
  useBraze();

  return <Outlet />;
}

イベントのログ記録とユーザーの更新

useBrazeがアプリのルートでSDKを初期化した後、他のクライアントコンポーネントからBrazeメソッドを呼び出すことができます。一般的なパターンは、onClickonSubmitなどのユーザーアクション内でメソッドを呼び出すことです。この例では、SDKメソッドはファイルの先頭ではなく、クリックハンドラー内で読み込まれます。これにより、Web SDKをサーバーコードから分離し、そのアクションに必要なものだけを読み込みます。webpackExportsコメントは、どのメソッドを含めるかをwebpackに指示するため、バンドルサイズを小さく保てます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// app/components/BuyButton.tsx
"use client";

export function BuyButton() {
  const handleClick = async () => {
    const { logCustomEvent, logPurchase, getUser } = await import(
      /* webpackExports: ["logCustomEvent", "logPurchase", "getUser"] */
      "@braze/web-sdk"
    );

    getUser()?.setCustomUserAttribute("last_purchase_date", "2026-05-04");
    logCustomEvent("clicked_buy", { source: "product_page" });
    logPurchase("sku_123", 19.99, "USD");
  };

  return <button onClick={handleClick}>Buy</button>;
}

この例は、ユーザーがBuyをクリックした際にアクティビティを記録するBuyButtonコンポーネントを示しています。まず、クリック時にlogCustomEventlogPurchasegetUserのみをインポートします。次に、ユーザー属性を更新し、カスタムイベントを記録し、購入を記録します。このパターンにより、初期化をuseBrazeに集中させながら、任意のクライアントコンポーネントから意味のあるアクションをトラッキングできます。

RemixでViteを使用していて、パッケージルートのインポートが実行時に失敗する場合は、既存のViteの回避策を使用してください。詳細については、Viteを参照してください。

利用可能なメソッドの完全な一覧については、Braze JavaScriptリファレンスドキュメントを参照してください。

Tealium iQ

Tealium iQは、基本的なターンキーBraze統合を提供します。統合を構成するには、Tealium Tag Managementインターフェイスで Brazeを検索し、ダッシュボードからWeb SDK APIキーを指定します。

詳細やTealiumの設定に関する詳しいサポートが必要な場合は、統合ドキュメントを参照するか、Tealiumのアカウントマネージャーにお問い合わせください。

Vite

Viteを使用していて、循環依存関係やUncaught TypeError: Class extends value undefined is not a constructor or nullに関する警告が表示される場合は、Braze SDKを依存関係の検出から除外する必要があるかもしれません。

1
2
3
optimizeDeps: {
    exclude: ['@braze/web-sdk']
},

その他のタグマネージャー

Brazeは、カスタムHTMLタグ内で統合手順に従うことにより、他のタグ管理ソリューションとも互換性を持つ場合があります。これらのソリューションの評価について支援が必要な場合は、Brazeの担当者にお問い合わせください。

Android SDKの統合

ステップ1: Gradleのビルド設定を更新する

プロジェクトのリポジトリ設定(例:settings.gradlesettings.gradle.kts、または最上位のbuild.gradle)で、リポジトリ一覧にmavenCentral()を追加します。この構文はGroovyとKotlin DSLの両方で同じです。

1
2
3
repositories {
  mavenCentral()
}

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

Braze UIコンポーネントを使用する予定がない場合は、依存関係に以下を追加します。

1
2
3
4
dependencies {
    implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
    implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
    implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
    implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}

gradle/libs.versions.tomlファイルに以下を追加します:

1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"

[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }

次に、build.gradleまたはbuild.gradle.ktsファイルに以下の依存関係を追加します。この構文はGroovyとKotlin DSLの両方で同じです。

1
2
3
4
dependencies {
    implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
    implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}

Braze UIコンポーネントを使用する予定がある場合は、依存関係に以下を追加します。

1
2
3
4
dependencies {
    implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
    implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}

gradle/libs.versions.tomlファイルに以下を追加します:

1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"

[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }

次に、build.gradleまたはbuild.gradle.ktsファイルに以下の依存関係を追加します。この構文はGroovyとKotlin DSLの両方で同じです。

1
2
3
4
dependencies {
    implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
    implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}

ステップ2: braze.xmlを設定する

プロジェクトのres/valuesフォルダ内にbraze.xmlファイルを作成します。特定のデータクラスターを使用している場合、または既存のカスタムエンドポイントがある場合は、braze.xmlファイルでもエンドポイントを指定する必要があります。

ファイルの内容は、次のコードスニペットのようになります。YOUR_APP_IDENTIFIER_API_KEYをBrazeダッシュボードの設定の管理ページにある識別子に置き換えてください。dashboard.braze.comにログインして、クラスターアドレスを確認してください。

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

ステップ3: AndroidManifest.xmlに権限を追加する

次に、AndroidManifest.xmlに以下の権限を追加します:

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

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

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

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

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

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

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

実行時に遅延初期化を有効にするには、以下のメソッドを使用します。

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

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

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

明示的にキューに入れる

プッシュ分析を明示的にキューに入れるには、次のいずれかのオプションを選択します:

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

1
<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>

Braze.enableDelayedInitialization()メソッドにQUEUEを追加します:

1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
破棄する

プッシュ分析を破棄するには、次のいずれかのオプションを選択します:

braze.xmlファイルで、com_braze_delayed_initialization_analytics_behaviorDROPに設定します:

1
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>

Braze.enableDelayedInitialization()メソッドにDROPを追加します:

1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)

ステップ4.3: SDKを手動で初期化する

選択した遅延期間の後、Braze.disableDelayedInitialization()メソッドを使用してSDKを手動で初期化します。

1
Braze.disableDelayedInitialization(context);
1
Braze.disableDelayedInitialization(context)

ステップ5: ユーザーセッショントラッキングを有効にする

ユーザーセッショントラッキングを有効にすると、openSession()closeSession()ensureSubscribedToInAppMessageEvents()、およびInAppMessageManagerの登録呼び出しが自動的に処理されます。

アクティビティのライフサイクルコールバックを登録するには、ApplicationクラスのonCreate()メソッドに以下のコードを追加します。

1
2
3
4
5
6
7
public class MyApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
  }
}
1
2
3
4
5
6
class MyApplication : Application() {
  override fun onCreate() {
    super.onCreate()
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
  }
}

利用可能なパラメータの一覧については、BrazeActivityLifecycleCallbackListenerを参照してください。

セッショントラッキングのテスト

テスト中に問題が発生した場合は、詳細ログを有効にし、logcatを使用してアクティビティ内で欠落しているopenSessionおよびcloseSession呼び出しを検出してください。

  1. BrazeでOverviewに移動し、アプリを選択します。次にDisplay Data ForドロップダウンからTodayを選択します。 Brazeの「Overview」ページで、「Display Data For」フィールドが「Today」に設定されている状態。
  2. アプリを開き、Brazeダッシュボードを更新します。指標が1増加したことを確認してください。
  3. アプリ内を操作し、Brazeに記録されたセッションが1つだけであることを確認します。
  4. アプリをバックグラウンドに少なくとも10秒間送ってから、フォアグラウンドに戻します。新しいセッションが記録されたことを確認してください。

オプション設定

ランタイム設定

Brazeのオプションをbraze.xmlファイルではなくコード内で設定するには、ランタイム設定を使用します。両方の場所に値が存在する場合、ランタイムの値が使用されます。必要な設定をすべてランタイムで指定したら、braze.xmlファイルを削除できます。

次の例では、ビルダーオブジェクトが作成され、Braze.configure()に渡されます。利用可能なランタイムオプションの一部のみが表示されていることに注意してください—完全なリストについてはKDocを参照してください。

1
2
3
4
5
6
7
8
BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setApiKey("api-key-here")
        .setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
        .setSessionTimeout(60)
        .setHandlePushDeepLinksAutomatically(true)
        .setGreatNetworkDataFlushInterval(10)
        .build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
6
7
8
val brazeConfig = BrazeConfig.Builder()
        .setApiKey("api-key-here")
        .setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
        .setSessionTimeout(60)
        .setHandlePushDeepLinksAutomatically(true)
        .setGreatNetworkDataFlushInterval(10)
        .build()
Braze.configure(this, brazeConfig)

Google広告ID

Google広告ID(GAID)は、Google Playサービスが提供する、広告向けのオプションのユーザー固有の匿名で一意かつリセット可能なIDです。GAIDにより、ユーザーは自分の識別子をリセットし、Google Playアプリ内の興味・関心に基づく広告をオプトアウトできます。また、開発者はアプリの収益化を継続するためのシンプルな標準システムを利用できます。

Google広告IDはBraze SDKによって自動的に収集されないため、Braze.setGoogleAdvertisingId()メソッドを使用して手動で設定する必要があります。

1
2
3
4
5
6
7
8
9
10
11
new Thread(new Runnable() {
  @Override
  public void run() {
    try {
      AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
      Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}).start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
suspend fun fetchAndSetAdvertisingId(
  context: Context,
  scope: CoroutineScope = GlobalScope
) {
  scope.launch(Dispatchers.IO) {
    try {
      val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
      Braze.getInstance(context).setGoogleAdvertisingId(
        idInfo.id,
        idInfo.isLimitAdTrackingEnabled
      )
    } catch (e: Exception) {
      e.printStackTrace()
    }
  }
}

位置情報の追跡

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

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

ロギング

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

ログを有効にする

アプリの問題をトラブルシューティングしたり、Brazeサポートの対応時間を短縮したりするために、SDKの詳細ログを有効にできます。Brazeサポートに詳細ログを送信する場合は、アプリケーションを起動したらすぐにログを開始し、問題が発生してからしばらく後にログを終了するようにしてください。集中管理された概要については、詳細ログを参照してください。ログ出力の解釈方法については、詳細ログの読み方を参照してください。

詳細ログは開発環境のみを対象としているため、アプリをリリースする前に無効にする必要があります。

アプリで直接ログを有効にするには、他のメソッドの前に、以下をアプリケーションのonCreate()メソッドに追加します。

1
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
1
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL

MIN_LOG_LEVELを、最小ログレベルとして設定するログレベルの定数に置き換えます。設定したMIN_LOG_LEVEL以上(>=)のレベルのログはすべて、AndroidのデフォルトのLogメソッドに転送されます。設定したMIN_LOG_LEVEL未満(<)のすべてのログは破棄されます。

定数 説明
VERBOSE 2 デバッグや開発のために最も詳細なメッセージをログに記録します。
DEBUG 3 デバッグや開発のために説明的なメッセージをログに記録します。
INFO 4 一般的なハイライトのための情報メッセージを記録します。
WARN 5 潜在的に有害な状況を特定するための警告メッセージをログに記録します。
ERROR 6 アプリケーションの失敗や深刻な問題を示すエラーメッセージを記録します。
ASSERT 7 開発中に条件が偽の場合にアサーションメッセージをログに記録します。

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

1
BrazeLogger.setLogLevel(Log.VERBOSE);
1
BrazeLogger.logLevel = Log.VERBOSE

braze.xmlでログを有効にするには、ファイルに以下を追加します:

1
<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>

MIN_LOG_LEVELを、最小ログレベルとして設定するログレベルのに置き換えます。設定したMIN_LOG_LEVEL以上(>=)のレベルのログはすべて、AndroidのデフォルトのLogメソッドに転送されます。設定したMIN_LOG_LEVEL未満(<)のすべてのログは破棄されます。

定数 説明
VERBOSE 2 デバッグや開発のために最も詳細なメッセージをログに記録します。
DEBUG 3 デバッグや開発のために説明的なメッセージをログに記録します。
INFO 4 一般的なハイライトのための情報メッセージを記録します。
WARN 5 潜在的に有害な状況を特定するための警告メッセージをログに記録します。
ERROR 6 アプリケーションの失敗や深刻な問題を示すエラーメッセージを記録します。
ASSERT 7 開発中に条件が偽の場合にアサーションメッセージをログに記録します。

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

1
<integer name="com_braze_logger_initial_log_level">2</integer>

詳細ログを検証する

ログがVERBOSEに設定されていることを確認するには、ログのどこかにV/Brazeが出現するかどうかを確認します。出現していれば、詳細ログは正常に有効になっています。以下に例を示します:

1
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started

ログを抑制する

Braze Android SDKのすべてのログを抑制するには、アプリケーションのonCreate()メソッドで、他のメソッドの_前に_ログレベルをBrazeLogger.SUPPRESSに設定します。

1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)

複数のAPIキー

複数のAPIキーの最も一般的なユースケースは、デバッグおよびリリースビルドバリアントのAPIキーを分離することです。

ビルド内の複数のAPIキーを簡単に切り替えられるように、関連するビルドバリアントごとに個別のbraze.xmlファイルを作成することをお勧めします。ビルドバリアントは、ビルドタイプと製品フレーバーの組み合わせです。デフォルトでは、新しいAndroidプロジェクトはdebugreleaseのビルドタイプで構成され、製品フレーバーは設定されていません。

関連する各ビルドバリアントについて、src/<build variant name>/res/values/ディレクトリ内に新しいbraze.xmlを作成します。ビルドバリアントがコンパイルされると、新しいAPIキーが使用されます。

1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>

アプリ内メッセージの排他的TalkBack

Androidアクセシビリティガイドラインに準拠し、Braze Android SDKはデフォルトでAndroid TalkBackを提供します。アプリ内メッセージの内容のみを読み上げさせ、アプリタイトルバーやナビゲーションなどの他の画面要素を含めないようにするには、TalkBackの排他モードを有効にできます。

アプリ内メッセージの排他モードを有効にするには:

1
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
1
2
3
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
1
2
3
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());

R8とProGuard

コード圧縮設定は、Braze統合に自動的に含まれます。

Brazeコードを難読化するクライアントアプリでは、Brazeがスタックトレースを解釈するためのリリースマッピングファイルを保存する必要があります。すべてのBrazeコードを引き続き保持する場合は、ProGuardファイルに以下を追加します:

1
2
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }

Swift SDKの統合

Braze Swift SDKは、Swift Package Manager(SPM)、CocoaPods、または手動での統合方法を使って統合しカスタマイズできます。各種SDKシンボルに関する詳細情報は、Braze Swiftリファレンスドキュメントを参照してください。

前提条件

始める前に、最新のBraze Swift SDKバージョンがお使いの環境をサポートしていることを確認してください。

ステップ1:Braze Swift SDKをインストールする

Braze Swift SDKのインストールには、Swift Package Manager(SwiftPM)またはCocoaPodsの使用を推奨します。あるいは、SDKを手動でインストールすることもできます。

ステップ1.1:SDKバージョンのインポート

プロジェクトを開き、プロジェクトの設定に移動します。Swift Packagesタブを選択し、パッケージリストの下にある追加ボタンをクリックします。

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

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

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

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

ご自身のニーズに最も適したパッケージを選択し、Add Packageをクリックしてください。必ず最低でもBrazeKitを選択してください。

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

完全な手順については、CocoaPodsの入門ガイドを参照してください。そうでなければ、以下のコマンドを実行すればすぐに始められます:

1
$ sudo gem install cocoapods

行き詰まった場合は、CocoaPodsのトラブルシューティングガイドを確認してください。

ステップ1.2:Podfileの構築

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

次の行をPodfileに追加します:

1
2
3
target 'YourAppTarget' do
  pod 'BrazeKit'
end

BrazeKitにはメインSDKライブラリーが含まれており、分析とプッシュ通知のサポートが提供されています。

ポッドの更新がマイナーバージョンの更新よりも小さいものを自動的に取得するように、Brazeをバージョン管理することを推奨します。これはpod 'BrazeKit' ~> Major.Minor.Buildのようになります。大きな変更があっても、Braze SDKの最新バージョンを自動的に統合したい場合は、Podfileでpod 'BrazeKit'を使用できます。

追加ライブラリーについて

Braze Swift SDKは、開発者がどの機能をプロジェクトにインポートするかをより詳細に制御できるように、機能をスタンドアロンライブラリーに分離しています。BrazeKitに加えて、以下のライブラリーをPodfileに追加できます:

ライブラリー 詳細
pod 'BrazeLocation' 位置情報分析とジオフェンス監視をサポートする位置情報ライブラリー。
pod 'BrazeUI' アプリ内メッセージ、Content Cards、バナー用のBraze提供ユーザーインターフェイスライブラリー。デフォルトのUIコンポーネントを使用する場合は、このライブラリーをインポートしてください。
拡張ライブラリー

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

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

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

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

1
pod install

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

Brazeのサンプルフォルダが展開され、新しい`BrazeExample.workspace`が表示されている。

CocoaPodsを使ってSDKを更新する

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

1
pod update

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

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

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

ステップ1.2:フレームワークを選択する

Braze Swift SDKにはさまざまなスタンドアロンのXCFrameworkが含まれており、すべてを統合する必要はなく、必要な機能を自由に統合できます。次の表を参照して、XCFrameworksを選択してください:

パッケージ 必須 説明
BrazeKit はい 分析とプッシュ通知をサポートするメインSDKライブラリー。
BrazeLocation いいえ 位置情報分析とジオフェンス監視をサポートする位置情報ライブラリー。
BrazeUI いいえ アプリ内メッセージ、Content Cards、バナー用のBraze提供ユーザーインターフェイスライブラリー。デフォルトのUIコンポーネントを使用する場合は、このライブラリーをインポートしてください。
BrazeNotificationService いいえ リッチプッシュ通知をサポートする通知サービス拡張ライブラリー。このライブラリーを直接メインアプリケーションターゲットに追加しないでください。代わりにBrazeNotificationServiceライブラリーを個別に追加してください
BrazePushStory いいえ Push Storiesをサポートする通知コンテンツ拡張ライブラリー。このライブラリーを直接メインアプリケーションターゲットに追加しないでください。代わりにBrazePushStoryライブラリーを個別に追加してください
BrazeKitCompat いいえ Appboy-iOS-SDKバージョン4.X.Xで使用可能だったすべてのAppboyおよびABK*クラスとメソッドを含む互換性ライブラリー。使用の詳細については、移行ガイドの最小限の移行シナリオを参照してください。
BrazeUICompat いいえ Appboy-iOS-SDKバージョン4.X.XのAppboyUIライブラリーで使用可能だったすべてのABK*クラスとメソッドを含む互換性ライブラリー。使用の詳細については、移行ガイドの最小限の移行シナリオを参照してください。
SDWebImage いいえ 最小限の移行シナリオでBrazeUICompatによってのみ使用される依存関係。

ステップ1.3:ファイルを準備する

静的XCFrameworksまたは動的XCFrameworksのどちらを使用するかを決定してから、ファイルを準備します:

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

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

次に、以前に準備した動的または静的XCFrameworksを統合します:

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

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

Objective-Cプロジェクトの一般的なエラー

XcodeプロジェクトにObjective-Cファイルのみが含まれている場合、プロジェクトのビルドを試みると「missing symbol」エラーが発生することがあります。これらのエラーを修正するには、プロジェクトを開き、ファイルツリーに空のSwiftファイルを追加します。これにより、ビルドツールチェーンがSwiftランタイムを埋め込み、ビルド時に適切なフレームワークにリンクするようになります。

1
FILE_NAME.swift

FILE_NAMEを任意のスペースのない文字列に置き換えます。ファイルは次のようになります:

1
empty_swift_file.swift

ステップ2:遅延初期化を設定する(任意)

Braze Swift SDKの初期化を遅らせることができます。これは、アプリが設定を読み込む必要がある場合や、SDKを開始する前にユーザーの同意を待つ必要がある場合に便利です。遅延初期化により、SDK初期化前に受信したBrazeプッシュ通知とプッシュトークンは、SDKが初期化された時点でキューに入れられ処理されます。

遅延初期化を使用するには、最低限のBraze SDKバージョンが必要です:

ステップ2.1:遅延初期化の準備

アプリのライフサイクルにおいて、できるだけ早い段階でBraze.prepareForDelayedInitialization()を呼び出してください。理想的にはapplication(_:didFinishLaunchingWithOptions:)内またはそれ以前に呼び出します。これにより、SDKが初期化される前に受信したプッシュ通知が確実にキャプチャされ、後で適切に処理されます。

1
2
3
4
5
6
7
8
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  // Prepare the SDK for delayed initialization
  Braze.prepareForDelayedInitialization()

  // ... Additional non-Braze setup code

  return true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@main
struct MyApp: App {
  @UIApplicationDelegateAdaptor var appDelegate: AppDelegate

  var body: some Scene {
    WindowGroup {
      ContentView()
    }
  }
}

class AppDelegate: NSObject, UIApplicationDelegate {
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    // Prepare the SDK for delayed initialization
    Braze.prepareForDelayedInitialization()

    // ... Additional non-Braze setup code

    return true
  }
}
1
2
3
4
5
6
7
8
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Prepare the SDK for delayed initialization
  [Braze prepareForDelayedInitialization];

  // ... Additional non-Braze setup code

  return YES;
}

遅延初期化を使用する場合、プッシュ通知のオートメーションは暗黙的に有効になります。pushAutomationパラメータを渡すことで、プッシュオートメーションの設定をカスタマイズできます。

ステップ2.2:プッシュ分析の動作を設定する(任意)

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

明示的にキューに入れる

プッシュ分析を明示的にキューに入れるには(デフォルト動作)、analyticsBehaviorパラメータに.queueを渡します。初期化前にキューに追加されたプッシュ分析イベントは、初期化時に処理されサーバーに送信されます。

1
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
破棄する

SDK初期化前に受信したプッシュ分析を破棄するには、analyticsBehaviorパラメータに.dropを渡します。このオプションでは、SDKが初期化されていない間に発生したプッシュ分析イベントはすべて無視されます。

1
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];

ステップ2.3:プッシュオートメーションをカスタマイズする(任意)

pushAutomationパラメータを渡すことで、プッシュオートメーションの設定をカスタマイズできます。デフォルトでは、requestAuthorizationAtLaunchを除くすべてのオートメーション機能が有効になっています。

1
2
3
4
5
6
7
8
// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)

// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
1
2
3
4
5
6
7
8
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];

// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];

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

選択した遅延期間の後(例えば、サーバーから設定を取得した後やユーザーの同意を得た後)、通常通りSDKを初期化します:

1
2
3
4
5
6
7
8
9
10
func initializeBraze() {
  let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")

  // Enable push automation to match the delayed initialization configuration
  configuration.push.automation = true
  let braze = Braze(configuration: configuration)

  // Store the Braze instance for later use
  AppDelegate.braze = braze
}
1
2
3
4
5
6
7
8
9
10
- (void)initializeBraze {
  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];

  // Enable push automation to match the delayed initialization configuration
  configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
  Braze *braze = [[Braze alloc] initWithConfiguration:configuration];

  // Store the Braze instance for later use
  AppDelegate.braze = braze;
}

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

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

1
import BrazeKit

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

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

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

最後に、AppDelegate.swiftで、application:didFinishLaunchingWithOptions:メソッドに次のスニペットを追加します:

1
2
3
4
5
6
let configuration = Braze.Configuration(
    apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
    endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze

アプリ設定ページから、YOUR-APP-IDENTIFIER-API-KEYYOUR-BRAZE-ENDPOINTを正しい値に更新してください。アプリ識別子APIキーの場所については、API識別子の種類を参照してください。

次のコード行をAppDelegate.mファイルに追加します:

1
@import BrazeKit;

次に、AppDelegate.mファイルに静的変数を追加して、アプリケーションのライフタイムを通してBrazeインスタンスへの参照を保持します:

1
2
3
4
5
6
7
8
9
10
11
static Braze *_braze;

@implementation AppDelegate
+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}
@end

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

最後に、AppDelegate.mファイル内で、application:didFinishLaunchingWithOptions:メソッド内に以下のスニペットを追加します:

1
2
3
4
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
                                                                  endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;

設定の管理ページから、YOUR-APP-IDENTIFIER-API-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を参照してください。

1
2
3
4
5
6
7
let configuration = Braze.Configuration(
  apiKey: "<BRAZE_API_KEY>",
  endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
1
2
3
4
5
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
                                                                  endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];

Cordova SDKを統合する

前提条件

始める前に、お使いの環境が最新のBraze Cordova SDKバージョンでサポートされていることを確認してください。

ステップ 1: SDKをプロジェクトに追加する

Cordova 6以降をお使いの場合は、GitHubから直接SDKを追加できます。または、GitHubリポジトリのZIPをダウンロードして、SDKを手動で追加することもできます。

ロケーション収集とジオフェンスを使用する予定がない場合は、GitHubのmasterブランチを使用してください。

1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master

ロケーション収集とジオフェンスを使用する予定がある場合は、GitHubのgeofence-branchを使用してください。

1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch

ステップ 2: プロジェクトを構成する

次に、プロジェクトのconfig.xmlファイル内のplatform要素に以下の設定を追加します。

1
2
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
1
2
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />

以下の値を置き換えてください。

説明
BRAZE_API_KEY お使いのBraze REST APIキー
CUSTOM_API_ENDPOINT カスタムAPIエンドポイント。このエンドポイントは、Brazeインスタンスデータをダッシュボードの正しいアプリグループにルーティングするために使用されます。

config.xmlファイルのplatform要素は以下のようになります。

1
2
3
4
<platform name="ios">
    <preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
    <preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
1
2
3
4
<platform name="android">
    <preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
    <preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>

プラットフォーム固有の構文

以下のセクションでは、iOSまたはAndroidでCordovaを使用する場合のプラットフォーム固有の構文について説明します。

整数

整数の設定は、以下の例のように文字列表現として読み取られます。

1
2
3
4
<platform name="ios">
    <preference name="com.braze.ios_flush_interval_seconds" value="10" />
    <preference name="com.braze.ios_session_timeout" value="5" />
</platform>

Cordova 8.0.0以降のフレームワークによる設定の処理方法に従い、整数のみの設定(送信者IDなど)は、以下の例のように先頭にstr_を付加した文字列に設定する必要があります。

1
2
3
4
<platform name="android">
    <preference name="com.braze.android_fcm_sender_id" value="str_64422926741" />
    <preference name="com.braze.android_default_session_timeout" value="str_10" />
</platform>

ブール値

ブール値の設定は、以下の例のようにYESおよびNOキーワードを文字列表現としてSDKによって読み取られます。

1
2
3
4
<platform name="ios">
    <preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>

ブール値の設定は、以下の例のようにtrueおよびfalseキーワードを文字列表現としてSDKによって読み取られます。

1
2
3
4
<platform name="android">
    <preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
    <preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
</platform>

オプション設定

以下の設定をプロジェクトのconfig.xmlファイルのplatform要素に追加できます。

方法 説明
ios_api_key アプリケーションのAPIキーを設定します。
ios_api_endpoint アプリケーションのSDKエンドポイントを設定します。
ios_disable_automatic_push_registration 自動プッシュ登録を無効にするかどうかを設定します。
ios_disable_automatic_push_handling 自動プッシュ処理を無効にするかどうかを設定します。
ios_enable_idfa_automatic_collection Braze SDKがIDFA情報を自動的に収集するかどうかを設定します。詳細については、BrazeのIDFAメソッドのドキュメントを参照してください。
enable_location_collection 自動ロケーション収集を有効にするかどうかを設定します(ユーザーが許可した場合)。geofence-branch
geofences_enabled ジオフェンスを有効にするかどうかを設定します。
ios_session_timeout アプリケーションのBrazeセッションタイムアウトを秒単位で設定します。デフォルトは10秒です。
sdk_authentication_enabled SDK認証機能を有効にするかどうかを設定します。
display_foreground_push_notifications アプリケーションがフォアグラウンドにある間、プッシュ通知を表示するかどうかを設定します。
ios_disable_un_authorization_option_provisional UNAuthorizationOptionProvisionalを無効にするかどうかを設定します。
trigger_action_minimum_time_interval_seconds トリガー間の最小時間間隔を秒単位で設定します。デフォルトは30秒です。
ios_push_app_group iOSプッシュ拡張機能のアプリグループIDを設定します。
ios_forward_universal_links SDKがユニバーサルリンクを自動的に認識し、システムメソッドに転送するかどうかを設定します。iOSでプッシュ通知からのディープリンクを機能させるために必要です。デフォルトは無効です。
ios_log_level Braze.Configuration.Loggerの最小ログレベルを設定します。
ios_use_uuid_as_device_id ランダムに生成されたUUIDをデバイスIDとして使用するかどうかを設定します。
ios_flush_interval_seconds 自動データフラッシュの間隔を秒単位で設定します。デフォルトは10秒です。
ios_use_automatic_request_policy Braze.Configuration.Apiのリクエストポリシーを自動にするか手動にするかを設定します。
should_opt_in_when_push_authorized プッシュ権限が承認された際に、ユーザーの通知サブスクリプション状態を自動的にoptedInに設定するかどうかを指定します。
方法 説明
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ファイルの例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<platform name="ios">
    <preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
    <preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
    <preference name="com.braze.enable_location_collection" value="NO"/"YES" />
    <preference name="com.braze.geofences_enabled" value="NO"/"YES" />
    <preference name="com.braze.ios_session_timeout" value="5" />
    <preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
    <preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
    <preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
    <preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
    <preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
    <preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
    <preference name="com.braze.ios_log_level" value="2" />
    <preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
    <preference name="com.braze.ios_flush_interval_seconds" value="10" />
    <preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
    <preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<platform name="android">
    <preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
    <preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
    <preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
    <preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
    <preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
    <preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
    <preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
    <preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
    <preference name="com.braze.enable_location_collection" value="true"/"false" />
    <preference name="com.braze.geofences_enabled" value="true"/"false" />
    <preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
    <preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
    <preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
    <preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
    <preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
    <preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
    <preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
    <preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
    <preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
    <preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
    <preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
    <preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
    <preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
    <preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>

自動セッショントラッキングを無効にする(Androidのみ)

デフォルトでは、Android Cordovaプラグインは自動的にセッションをトラッキングします。自動セッショントラッキングを無効にするには、プロジェクトのconfig.xmlファイル内のplatform要素に以下の設定を追加してください。

1
2
3
<platform name="android">
    <preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>

セッショントラッキングを再開するには、BrazePlugin.startSessionTracking()を呼び出してください。次回のActivity.onStart()以降に開始されたセッションのみがトラッキングされることに注意してください。

Flutter Braze SDKについて

AndroidとiOSでBraze Flutter SDKを統合した後、Dartで書かれたFlutterアプリ内でBraze APIを利用できるようになります。このプラグインには、基本的な分析機能が用意されており、iOSとAndroid両方のアプリ内メッセージとContent Cardsを1つのコードベースで統合できます。

Flutter SDKの統合

前提条件

Braze Flutter SDKを統合する前に、以下を完了する必要があります。

前提条件 説明
Braze APIアプリ識別子 アプリの識別子を確認するには、Settings > APIs and Identifiers > App Identifiersに移動します。詳細については、API識別子の種類を参照してください。
Braze SDKエンドポイント SDKエンドポイントのURL(例:sdk.<cluster>.braze.com)。エンドポイントはインスタンスのBraze URLに応じて異なります。
Flutter SDK 公式のFlutter SDKをインストールし、Braze Flutter SDKの最低サポートバージョンを満たしていることを確認してください。

ステップ1:Brazeライブラリーを統合する

コマンドラインからBraze Flutter SDKパッケージを追加します。これにより、適切な行がpubspec.yamlに追加されます。

1
flutter pub add braze_plugin

ステップ2:ネイティブSDKの設定を完了する

2.1 Androidの設定 {#21-set-up-android}

コンパイル時に認証情報を提供する

プロジェクトのandroid/res/valuesフォルダにbraze.xmlファイルを作成します。APIキーとエンドポイントはDartから実行時に提供されるため、このファイルでは不要です。遅延初期化を有効にするには、com_braze_enable_delayed_initializationをファイルに追加します。

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <bool name="com_braze_enable_delayed_initialization">true</bool>
  <!-- API key and endpoint are not required here. They are set at runtime via Dart. -->
</resources>
実行時に認証情報を提供する

または、MainActivity.ktでプログラム的に遅延初期化を有効にすることもできます。

1
2
3
4
5
6
7
8
import com.braze.Braze

class MainActivity : FlutterActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Braze.enableDelayedInitialization(context = this)
  }
}

必要な権限をAndroidManifest.xmlファイルに追加します。

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

2.2 iOSの設定 {#22-set-up-ios}

既存のapplication(_:didFinishLaunchingWithOptions:)メソッド内で、BrazePlugin.configure(_:postInitialization:)を呼び出して設定を保存します。Brazeインスタンスは、後でDartからinitialize()が呼び出されたときに作成されます。ここではAPIキーとエンドポイントは設定しません。

以下のコードをAppDelegate.swiftに追加します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import BrazeKit
import braze_plugin

// ...

override func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
  // ... your existing didFinishLaunchingWithOptions setup ...

  BrazePlugin.configure(
    { configuration in
      configuration.logger.level = .info
      // Set other non-API-key configurations here, such as:
      // configuration.push.automation = true
      // configuration.sessionTimeout = 60
    },
    postInitialization: { braze in
      // Optional: Customize the Braze instance after creation.
      // For example, set a custom in-app message presenter:
      // let customPresenter = CustomInAppMessagePresenter()
      // braze.inAppMessagePresenter = customPresenter
    }
  )

  return true
}

以下のコードをAppDelegate.mに追加します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@import BrazeKit;
@import braze_plugin;

// ...

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [BrazePlugin configure:^(BRZConfiguration *configuration) {
    configuration.logger.level = BRZLoggerLevelInfo;
    // Set other non-API-key configurations here, such as:
    // configuration.push.automation = ...
    // configuration.sessionTimeout = 60;
  } postInitialization:^(Braze *braze) {
    // Optional: customize the Braze instance after creation.
  }];

  return YES;
}

2.1 Androidの設定

Brazeサーバーに接続するには、プロジェクトのandroid/res/valuesフォルダにbraze.xmlファイルを作成します。以下のコードを貼り付けて、API識別子キーとエンドポイントをご自身の値に置き換えます。

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

必要な権限をAndroidManifest.xmlファイルに追加します。

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

2.2 iOSの設定

AppDelegate.swiftファイルの先頭にBraze SDKのインポートを追加します。

1
2
import BrazeKit
import braze_plugin

同じファイルのapplication(_:didFinishLaunchingWithOptions:)メソッドでBraze設定オブジェクトを作成し、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようAppDelegateに静的プロパティを作成します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static var braze: Braze? = nil

override func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
  // Setup Braze
  let configuration = Braze.Configuration(
    apiKey: "<BRAZE_API_KEY>",
    endpoint: "<BRAZE_ENDPOINT>"
  )
  // - Enable logging or customize configuration here
  configuration.logger.level = .info
  let braze = BrazePlugin.initBraze(configuration)
  AppDelegate.braze = braze

  return true
}

AppDelegate.mファイルの先頭にBraze SDKをインポートします。

1
2
@import BrazeKit;
@import braze_plugin;

同じファイルのapplication:didFinishLaunchingWithOptions:メソッドでBraze設定オブジェクトを作成し、APIキーとエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようAppDelegateに静的プロパティを作成します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Setup Braze
  BRZConfiguration *configuration =
      [[BRZConfiguration alloc] initWithApiKey:@"<BRAZE_API_KEY>"
                                      endpoint:@"<BRAZE_ENDPOINT>"];
  // - Enable logging or customize configuration here
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazePlugin initBraze:configuration];
  AppDelegate.braze = braze;

  [self.window makeKeyAndVisible];
  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}

ステップ3:プラグインを設定する

プラグインをインポートし、BrazePluginの単一インスタンスを作成します。

1
2
3
import 'package:braze_plugin/braze_plugin.dart';

final BrazePlugin braze = BrazePlugin();

次に、アプリ識別子APIキーとSDKエンドポイントを指定してinitialize()を呼び出し、Brazeインスタンスを作成します。アプリ内でこのメソッドを呼び出す場所については、以下のオプションを参照してください。

標準初期化

アプリの起動時にSDKを初期化するには、initState()内でinitialize()を呼び出します。

1
2
3
4
5
@override
void initState() {
  super.initState();
  braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

遅延初期化

SDKの初期化をセッション内の後のタイミングまで延期するには(例:ユーザーが同意を付与した後やログインを完了した後)、準備ができた時点でinitialize()を呼び出します。

1
2
3
4
// ...
void onUserConsent() {
  braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
}

プラットフォーム固有のAPIキー

AndroidとiOSのアプリは異なるAPIキーを使用するため、プラットフォーム検出を使用します。

1
2
3
4
5
6
7
import 'dart:io' show Platform;

if (Platform.isAndroid) {
  braze.initialize("<ANDROID_API_KEY>", "<BRAZE_ENDPOINT>");
} else if (Platform.isIOS) {
  braze.initialize("<IOS_API_KEY>", "<BRAZE_ENDPOINT>");
}

再初期化

セッション中に異なるAPIキーとエンドポイントでSDKを再初期化するために、initialize()を複数回呼び出すことができます。呼び出すたびに、以前のBrazeインスタンスが破棄され、新しいインスタンスが作成されます。

Dartコードにプラグインをインポートするには、以下を使用します。

1
import 'package:braze_plugin/braze_plugin.dart';

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

統合のテスト

ダッシュボードでセッション統計を確認することで、SDKが統合されていることを検証できます。いずれかのプラットフォームでアプリケーションを実行すると、ダッシュボード(Overviewセクション)に新しいセッションが表示されます。

アプリ内で以下のコードを呼び出すことで、特定のユーザーのセッションを開始できます。

1
2
3
BrazePlugin braze = BrazePlugin();
braze.initialize("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
braze.changeUser("{some-user-id}");
1
2
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");

ダッシュボードのAudience > Search Users{some-user-id}のユーザーを検索します。そこで、セッションとデバイスデータが記録されていることを確認できます。

React Native Braze SDKについて

React Native Braze SDKを統合すると、基本的な分析機能を利用できます。さらに、iOSとAndroidの両プラットフォーム向けに、単一のコードベースでアプリ内メッセージとContent Cardsを導入できます。

新しいアーキテクチャの互換性

以下の最小SDKバージョンは、React Nativeの新しいアーキテクチャを使用するすべてのアプリと互換性があります。

SDKバージョン6.0.0以降、BrazeはReact Native Turbo Moduleを採用しています。これは新アーキテクチャと従来のブリッジアーキテクチャの両方と互換性があるため、追加の設定は不要です。

React Native SDKの統合

前提条件

SDKを統合するには、React Nativeバージョン0.71以降が必要です。サポートされているバージョンの完全なリストについては、React Native SDK GitHubリポジトリを参照してください。

ステップ 1: Brazeライブラリーの統合

1
npm install @braze/react-native-sdk
1
yarn add @braze/react-native-sdk

ステップ 2: ネイティブ設定の完了

アプリがExpoを使用している場合は、Expoプラグインの使用を参照してください。アプリがピュアReact Nativeを使用している場合は、React Native CLIの使用を参照してください。 各バージョンタブで、ExpoプラグインまたはReact Native CLIのいずれかの設定方法を選択してください。

方法 1: Expoプラグインの使用

2.1 Braze Expoプラグインのインストール {#21-install-the-braze-expo-plugin} {#21-install-the-braze-expo-plugin}

Braze Expoプラグインのバージョンが4.1.0以上であることを確認してください。サポートされているバージョンの完全なリストについては、Braze Expoプラグインリポジトリを参照してください。

以下のコードスニペットは、Braze Expoプラグインをインストールするコマンドです。

1
npx expo install @braze/expo-plugin
2.2 app.jsonにプラグインを追加する {#22-add-the-plugin-to-your-appjson} {#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の設定例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "sessionTimeout": 60,
          "enableGeofence": false,
          "enableBrazeIosPush": false,
          "enableFirebaseCloudMessaging": false,
          "firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
          "androidHandlePushDeepLinksAutomatically": true,
          "enableSdkAuthentication": false,
          "logLevel": 0,
          "minimumTriggerIntervalInSeconds": 0,
          "enableAutomaticLocationCollection": false,
          "enableAutomaticGeofenceRequests": false,
          "dismissModalOnOutsideTap": true,
          "androidPushNotificationHtmlRenderingEnabled": true,
          "androidNotificationAccentColor": "#ff3344",
          "androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
          "androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
          "iosRequestPushPermissionsAutomatically": false,
          "enableBrazeIosPushStories": true,
          "iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
          "iosForwardUniversalLinks": false
        }
      ]
    ]
  }
}
Androidプッシュ通知アイコンの設定

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での設定

以下のコードスニペットは、app.json@drawable/プレフィックスを使用してAndroid通知アイコンを参照する方法です。

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidNotificationLargeIcon": "@drawable/large_icon",
          "androidNotificationSmallIcon": "@drawable/small_icon"
        }
      ]
    ]
  }
}

仕組み

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} {#23-build-and-run-your-application}

アプリケーションをプリビルドすると、Braze Expoプラグインが動作するために必要なネイティブファイルが生成されます。

以下のコードスニペットは、アプリケーションをプリビルドするコマンドです。

1
npx expo prebuild

Expoドキュメントの指定に従い、アプリケーションを実行します。設定オプションを変更した場合は、アプリケーションを再度プリビルドして実行してください。

方法 2: React Native CLIの使用

Androidの設定

2.1 Kotlin Gradleプラグインの追加

以下のコードスニペットは、最上位プロジェクトのbuild.gradlebuildscript > dependenciesにKotlin Gradleプラグインを追加する方法です。

1
2
3
4
5
6
7
buildscript {
    dependencies {
        ...
        // Choose your Kotlin version
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
    }
}

これでプロジェクトにKotlinが追加されます。

2.2 Braze SDKの設定

プロジェクトのres/valuesフォルダにbraze.xmlファイルを作成します。APIキーとエンドポイントはJavaScriptからランタイムで提供されるため、このファイルでは不要です。以下のコードスニペットは、com_braze_enable_delayed_initializationで遅延初期化を有効にする方法です。

1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <bool name="com_braze_enable_delayed_initialization">true</bool>
</resources>

以下のコードスニペットは、AndroidManifest.xmlファイルに必要な権限です。

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

2.3 ユーザーセッショントラッキングの実装

openSession()およびcloseSession()への呼び出しは自動的に処理されます。 以下のコードスニペットは、MainApplicationクラスのonCreate()メソッドに追加する内容です。

1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;

@Override
public void onCreate() {
    super.onCreate();
    ...
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener

override fun onCreate() {
    super.onCreate()
    ...
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}

2.4 インテント更新の処理

MainActivityでandroid:launchModesingleTaskに設定されている場合、以下のコードスニペットをMainActivityクラスに追加してください。

1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}
iOSの設定

2.5(オプション)ダイナミックXCFrameworkに関するPodfileの設定

特定のBrazeライブラリー(例:BrazeUI)をObjective-C++ファイルにインポートするには、#import構文を使用する必要があります。Braze Swift SDKのバージョン7.4.0以降、バイナリにはこの構文と互換性のあるダイナミックXCFrameworkとしてのオプションの配布チャネルがあります。

この配布チャネルを使用する場合は、PodfileでCocoaPodsのソースの場所を手動で上書きしてください。以下のサンプルを参照し、{your-version}をインポートする関連バージョンに置き換えてください。

1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'

2.6 Podのインストール

React Nativeではライブラリーがネイティブプラットフォームに自動でリンクされるため、CocoaPodsを使用してSDKをインストールできます。

以下のコードスニペットは、プロジェクトのルートフォルダからPodをインストールする方法です。

1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install

# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install

2.7 Braze SDKの設定

BrazeReactInitializer.configureAppDelegateで使用して、ネイティブ設定を登録します。提供したクロージャは保存され、JavaScriptからBraze.initialize(apiKey, endpoint)が呼び出された際に適用されます。

以下のコードスニペットは、AppDelegate.swiftファイルの先頭でBraze SDKをインポートする方法です。

1
2
import BrazeKit
import braze_react_native_sdk

application(_:didFinishLaunchingWithOptions:)メソッドで、BrazeReactInitializer.configureを使用してネイティブ設定を登録します。ここではAPIキーやエンドポイントを設定しないでください。これらはJavaScriptのBraze.initialize()から提供されます。

  • configureクロージャBraze.Configurationを受け取り、ネイティブ設定プロパティ(ログ、プッシュ、セッションなど)を設定できます。
  • postInitializationクロージャ(オプション):作成後のライブBrazeインスタンスを受け取り、インスタンスが必要なセットアップ(例:参照の保存やデリゲートの設定)に使用します。

以下のコードスニペットは、BrazeReactInitializer.configureを使用したAppDelegate.swiftの実装例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
  static var braze: Braze? = nil

  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
    BrazeReactInitializer.configure { configuration in
      configuration.logger.level = .info
      configuration.push.automation = true
    } postInitialization: { braze in
      AppDelegate.braze = braze
    }

    // ... React Native setup

    return true
  }
}

以下のコードスニペットは、AppDelegate.mファイルの先頭でBraze SDKをインポートする方法です。

1
2
@import BrazeKit;
@import braze_react_native_sdk;

application:didFinishLaunchingWithOptions:メソッドで、BrazeReactInitializerを使用してネイティブ設定を登録します。ここではAPIキーやエンドポイントを設定しないでください。これらはJavaScriptのBraze.initialize()から提供されます。

以下のコードスニペットは、BrazeReactInitializerを使用したAppDelegate.mの実装例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [BrazeReactInitializer configure:^(BRZConfiguration *configuration) {
    configuration.logger.level = BRZLoggerLevelInfo;
    configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
  } postInitialization:^(Braze *braze) {
    // Store the Braze instance for later use.
  }];

  /* Other configuration */

  return YES;
}

方法 1: Expoプラグインの使用

ステップ 2.1: Braze Expoプラグインのインストール

Braze React Native SDKのバージョンが1.37.0以上であることを確認してください。サポートされているバージョンの完全なリストについては、Braze React Nativeリポジトリを参照してください。

以下のコードスニペットは、Braze Expoプラグインをインストールするコマンドです。

1
npx expo install @braze/expo-plugin
ステップ 2.2: app.jsonにプラグインを追加する

app.jsonで、Braze Expoプラグインを追加します。以下の設定オプションを指定できます。

方法 タイプ 説明
androidApiKey string 必須。Brazeダッシュボードの設定の管理にあるAndroidアプリケーションのAPIキー
iosApiKey string 必須。Brazeダッシュボードの設定の管理にあるiOSアプリケーションのAPIキー
baseUrl string 必須。Brazeダッシュボードの設定の管理にあるアプリケーションのSDKエンドポイント
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の設定例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidApiKey": "YOUR-ANDROID-API-KEY",
          "iosApiKey": "YOUR-IOS-API-KEY",
          "baseUrl": "YOUR-SDK-ENDPOINT",
          "sessionTimeout": 60,
          "enableGeofence": false,
          "enableBrazeIosPush": false,
          "enableFirebaseCloudMessaging": false,
          "firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
          "androidHandlePushDeepLinksAutomatically": true,
          "enableSdkAuthentication": false,
          "logLevel": 0,
          "minimumTriggerIntervalInSeconds": 0,
          "enableAutomaticLocationCollection": false,
          "enableAutomaticGeofenceRequests": false,
          "dismissModalOnOutsideTap": true,
          "androidPushNotificationHtmlRenderingEnabled": true,
          "androidNotificationAccentColor": "#ff3344",
          "androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
          "androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
          "iosRequestPushPermissionsAutomatically": false,
          "enableBrazeIosPushStories": true,
          "iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
          "iosForwardUniversalLinks": false
        }
      ],
    ]
  }
}
Androidプッシュ通知アイコンの設定

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での設定

以下のコードスニペットは、app.json@drawable/プレフィックスを使用してAndroid通知アイコンを参照する方法です。

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidNotificationLargeIcon": "@drawable/large_icon",
          "androidNotificationSmallIcon": "@drawable/small_icon"
        }
      ]
    ]
  }
}

仕組み

Braze Expoプラグインは、Androidのdrawableディレクトリからアイコンファイルを参照します。npx expo prebuildを実行すると、ExpoはネイティブのAndroidプロジェクト構造を生成します。ビルドプロセス前に、アイコンはAndroidのdrawableフォルダ内に存在しなければなりません(手動で配置するか、設定プラグイン経由でコピーするかのいずれか)。プラグインはその後、これらのdrawableリソースを名前(パスや拡張子なし)で利用するようBraze SDKを設定します。これが設定で@drawable/プレフィックスが必要な理由です。

Android通知アイコンの詳細については、Androidの通知アイコンガイドラインを参照してください。

ステップ 2.3: アプリケーションのビルドおよび実行

アプリケーションをプリビルドすると、Braze Expoプラグインが動作するために必要なネイティブファイルが生成されます。

以下のコードスニペットは、アプリケーションをプリビルドするコマンドです。

1
npx expo prebuild

Expoドキュメントの指定に従い、アプリケーションを実行します。設定オプションを変更した場合は、アプリケーションを再度プリビルドして実行する必要があります。

方法 2: React Native CLIの使用

Androidの設定

ステップ 2.1: Kotlin Gradleプラグインの追加

以下のコードスニペットは、最上位プロジェクトのbuild.gradlebuildscript > dependenciesにKotlin Gradleプラグインを追加する方法です。

1
2
3
4
5
6
7
buildscript {
    dependencies {
        ...
        // Choose your Kotlin version
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
    }
}

これでプロジェクトにKotlinが追加されます。

ステップ 2.2: Braze SDKの設定

Brazeサーバーに接続するには、プロジェクトのres/valuesフォルダにbraze.xmlファイルを作成します。以下のコードスニペットはbraze.xmlの設定例です。APIキーエンドポイントを実際の値に置き換えてください。

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
  <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>

以下のコードスニペットは、AndroidManifest.xmlファイルに必要な権限です。

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

ステップ 2.3: ユーザーセッショントラッキングの実装

openSession()およびcloseSession()への呼び出しは自動的に処理されます。 以下のコードスニペットは、MainApplicationクラスのonCreate()メソッドに追加する内容です。

1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;

@Override
public void onCreate() {
    super.onCreate();
    ...
    registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener

override fun onCreate() {
    super.onCreate()
    ...
    registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}

ステップ 2.4: インテント更新の処理

MainActivityでandroid:launchModesingleTaskに設定されている場合、以下のコードスニペットをMainActivityクラスに追加してください。

1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}
iOSの設定

ステップ 2.5:(オプション)ダイナミックXCFrameworkに関するPodfileの設定

特定のBrazeライブラリー(例:BrazeUI)をObjective-C++ファイルにインポートするには、#import構文を使用する必要があります。Braze Swift SDKのバージョン7.4.0以降、バイナリにはこの構文と互換性のあるダイナミックXCFrameworkとしてのオプションの配布チャネルがあります。

この配布チャネルを使用する場合は、PodfileでCocoaPodsのソースの場所を手動で上書きしてください。以下のコードスニペットはサンプルの上書きです。{your-version}をインポートする関連バージョンに置き換えてください。

1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'

ステップ 2.6: Podのインストール

React Nativeではライブラリーがネイティブプラットフォームに自動でリンクされるため、CocoaPodsを使用してSDKをインストールできます。

以下のコードスニペットは、プロジェクトのルートフォルダからPodをインストールする方法です。

1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install

# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install

ステップ 2.7: Braze SDKの設定

以下のコードスニペットは、AppDelegate.swiftファイルの先頭でBraze SDKをインポートする方法です。

1
2
import BrazeKit
import braze_react_native_sdk

application(_:didFinishLaunchingWithOptions:)メソッドで、APIキーエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようAppDelegateで静的プロパティを作成します。

以下のコードスニペットは、AppDelegate.swiftの設定例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
    // Setup Braze
    let configuration = Braze.Configuration(
        apiKey: "{BRAZE_API_KEY}",
        endpoint: "{BRAZE_ENDPOINT}")
    // Enable logging and customize the configuration here.
    configuration.logger.level = .info
    let braze = BrazeReactBridge.perform(
      #selector(BrazeReactBridge.initBraze(_:)),
      with: configuration
    ).takeUnretainedValue() as! Braze

    AppDelegate.braze = braze

    /* Other configuration */

    return true
}

// MARK: - AppDelegate.braze

static var braze: Braze? = nil

以下のコードスニペットは、AppDelegate.mファイルの先頭でBraze SDKをインポートする方法です。

1
2
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"

application:didFinishLaunchingWithOptions:メソッドで、APIキーエンドポイントをアプリの値に置き換えます。次に、設定を使用してBrazeインスタンスを作成し、簡単にアクセスできるようAppDelegateで静的プロパティを作成します。

以下のコードスニペットは、AppDelegate.mの設定例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Setup Braze
  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
                                                                    endpoint:@"{BRAZE_ENDPOINT}"];
  // Enable logging and customize the configuration here.
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazeReactBridge initBraze:configuration];
  AppDelegate.braze = braze;

  /* Other configuration */

  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

+ (void)setBraze:(Braze *)braze {
  _braze = braze;
}

ステップ 3: SDKの初期化

以下のコードスニペットは、React Nativeコードでライブラリーをインポートする方法です。

1
import Braze from "@braze/react-native-sdk";

次に、アプリ識別子APIキーとSDKエンドポイントを指定してBraze.initialize()を呼び出し、Brazeインスタンスを作成します。アプリ内でこのメソッドを呼び出す場所については、以下のオプションを参照してください。

標準初期化

以下のコードスニペットは、useEffect内でBraze.initialize()を呼び出してアプリ起動時にSDKを初期化する方法です。

1
2
3
4
5
6
7
8
9
10
11
12
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";

const App = () => {
  useEffect(() => {
    Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
  }, []);

  return (
    // Your app components
  );
};

遅延初期化

以下のコードスニペットは、セッション中の後のタイミングまでSDKの初期化を遅延させる方法です。例えば、ユーザーが同意を付与した後やログインを完了した後に初期化できます。

1
2
3
function onUserConsent() {
  Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
}

プラットフォーム固有のAPIキー

以下のコードスニペットは、AndroidとiOSのアプリで異なるAPIキーを使用する場合のプラットフォーム検出の方法です。

1
2
3
4
5
6
7
8
9
import { Platform } from "react-native";
import Braze from "@braze/react-native-sdk";

const apiKey = Platform.select({
  android: "YOUR-ANDROID-API-KEY",
  ios: "YOUR-IOS-API-KEY",
}) ?? "";

Braze.initialize(apiKey, "YOUR-SDK-ENDPOINT");

再初期化

セッション中に異なるAPIキーとエンドポイントでSDKを再初期化するために、Braze.initialize()を複数回呼び出すことができます。呼び出すたびに、前のBrazeインスタンスが破棄され、新しいインスタンスが作成されます。

React Native SDK 19.1.0以前では、ネイティブの初期化はステップ2で行われます。Brazeメソッドを呼び出すには、React Nativeコードでライブラリーをインポートしてください。詳細については、サンプルプロジェクトを参照してください。

1
import Braze from "@braze/react-native-sdk";

ステップ 4: 統合のテスト(オプション)

ダッシュボードでセッション統計を確認することで、SDKが統合されていることを検証できます。いずれかのプラットフォームでアプリケーションを実行すると、ダッシュボード(Overviewセクション)に新しいセッションが表示されます。

以下のコードスニペットは、アプリ内で特定のユーザーのセッションを開始する方法です。

1
2
3
4
import Braze from "@braze/react-native-sdk";

Braze.initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT");
Braze.changeUser("{some-user-id}");

ダッシュボードのAudience > Search Users{some-user-id}のユーザーを検索してください。そこで、セッションとデバイスデータが記録されたことを確認できます。

SDKの統合をテストするには、以下のコードスニペットでいずれかのプラットフォームでユーザーの新しいセッションを開始します。

1
Braze.changeUser("userId");

以下のコードスニペットは、アプリ起動時にユーザーIDを割り当てる例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";

const App = () => {
  useEffect(() => {
    Braze.changeUser("some-user-id");
  }, []);

  return (
    <div>
      ...
    </div>
  )

Brazeダッシュボードでユーザー検索に移動し、some-user-idと一致するIDのユーザーを検索してください。そこで、セッションとデバイスデータが記録されたことを確認できます。

次のステップ

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

  • プッシュ通知:ユーザーにプッシュ通知を設定して送信します。
  • アプリ内メッセージ:アプリ内で状況に即したメッセージを表示します。
  • バナー:アプリのインターフェイスに常時表示されるバナーを表示します。

六SDKの統合

ステップ 1: ファイルの追加

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

  1. source ディレクトリで、アプリに BrazeSDK.brs を追加します。
  2. components ディレクトリで、アプリに BrazeTask.brsBrazeTask.xml を追加します。

ステップ 2:参照の追加

次の script 要素を使用して、メインシーンに BrazeSDK.brs への参照を追加します。

1
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>

ステップ3:構成

main.brs 内で、グローバルノードにBrazeのコンフィギュレーションを設定する:

1
2
3
4
5
6
7
8
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = {YOUR_API_KEY}
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = {YOUR_ENDPOINT}
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})

SDK エンドポイントと API キーは、Braze ダッシュボード内にあります。

ステップ4: Braze の初期化

Braze インスタンスを初期化します。

1
2
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)

オプション構成

ロギング

Braze 統合をデバッグするため、Braze ログの Roku デバッグコンソールを表示できます。詳細については、Roku Developers の Debugging code を参照してください。

Unity Braze SDKについて

型、関数、変数などの完全なリストについては、Unity宣言ファイルを参照してください。また、すでにUnityをiOS用に手動で統合している場合は、代わりに自動統合に切り替えることができます。

Unity SDKを統合する

前提条件

開始する前に、お使いの環境が最新のBraze Unity SDKバージョンでサポートされていることを確認してください。

ステップ1:Braze Unityパッケージを選択する

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

Braze UnityリリースページでいくつかのBraze Unityパッケージをダウンロードできます。

  • Appboy.unitypackage
    • このパッケージは、Braze AndroidおよびiOS SDKと、iOS SDKのSDWebImage依存関係をバンドルします。これは、Brazeアプリ内メッセージおよびiOS上のContent Cards機能を適切に機能させるために必要です。SDWebImageフレームワークは、GIFを含む画像のダウンロードと表示に使用されます。Brazeの完全な機能を使用する場合は、このパッケージをダウンロードしてインポートしてください。
  • Appboy-nodeps.unitypackage
    • このパッケージはAppboy.unitypackageに似ていますが、SDWebImageフレームワークが含まれていない点が異なります。このパッケージは、iOSアプリにSDWebImageフレームワークを含めたくない場合に便利です。

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

Braze Unityパッケージは、次の2種類の統合オプションを使用して、Braze Unityリリースページでダウンロードできます。

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

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

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

または、カスタムUnityパッケージのインポートに関して詳しくは、Unityアセットパッケージのインポートの説明を参照してください。

Unityエディターで、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エディターのデフォルトの場所です。
  2. AndroidManifest.xmlに、以下のテンプレートにある必要な権限とアクティビティを追加します。
  3. 完了後、AndroidManifest.xmlには"android.intent.category.LAUNCHER"が存在するアクティビティが1つだけ含まれているはずです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="REPLACE_WITH_YOUR_PACKAGE_NAME">

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

  <application android:icon="@drawable/app_icon"
               android:label="@string/app_name">

    <!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
    <activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
      android:theme="@style/UnityThemeSelector"
      android:label="@string/app_name"
      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
      android:screenOrientation="sensor">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

    <!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
    <service android:name="com.braze.push.BrazeFirebaseMessagingService"
      android:exported="false">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
      </intent-filter>
    </service>
  </application>
</manifest>

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

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

AndroidManifest.xmlでは、REPLACE_WITH_YOUR_PACKAGE_NAMEのすべてのインスタンスを前のステップのPackage Nameに置き換える必要があります。

ステップ3.3:gradleの依存関係を追加する

Unityプロジェクトにgradleの依存関係を追加するには、まず公開設定で「Custom Main Gradle Template」を有効にします。これにより、プロジェクトで使用するテンプレートgradleファイルが作成されます。gradleファイルは、依存関係の設定やその他のビルド時のプロジェクト設定を処理します。詳細については、Braze UnityサンプルアプリのmainTemplate.gradleを参照してください。

次の依存関係が必要です。

1
2
3
4
5
6
implementation 'com.google.firebase:firebase-messaging:22.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1"
implementation 'androidx.core:core:1.6.0'

これらの依存関係は、External Dependency Managerを使用して設定することもできます。

ステップ3.4:Unity Android統合を自動化する

Brazeは、Unity Android統合を自動化するためのネイティブUnityソリューションを提供しています。

  1. UnityエディターでBraze > Braze Configurationの順に移動して、Braze設定を開きます。
  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エディターでBraze > Braze Configurationの順に移動して、Braze設定を開きます。
  2. Automate Unity iOS Integrationボックスにチェックマークを入れます。
  3. Braze API Keyフィールドに、設定の管理にあるアプリケーションのAPIキーを入力します。

アプリですでに別のUnityAppControllerサブクラスを使用している場合は、サブクラスの実装をAppboyAppDelegate.mmとマージする必要があります。

Unityパッケージをカスタマイズする

ステップ1:リポジトリを複製する

ターミナルで、Braze Unity SDK GitHubリポジトリを複製し、そのフォルダーに移動します。

1
2
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
1
2
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk

ステップ2:リポジトリからパッケージをエクスポートする

まずUnityを起動し、バックグラウンドで実行しておきます。次に、リポジトリのルートで以下のコマンドを実行して、パッケージをbraze-unity-sdk/unity-package/にエクスポートします。

1
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
1
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit

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

  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エディターで詳細ログを有効にするには、以下の手順を実行します。

  1. Braze > Braze Configurationの順に移動して、Braze設定を開きます。
  2. Show Braze Android Settingsドロップダウンをクリックします。
  3. SDK Log Levelフィールドに値「0」を入力します。

Prime 31の互換性

Prime31プラグインでBraze Unityプラグインを使用するには、Prime31互換のActivityクラスを使用するようにプロジェクトのAndroidManifest.xmlを編集します。以下のすべての参照を変更してください。 com.braze.unity.BrazeUnityPlayerActivitycom.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ライブラリーが正常に統合されたら、BrazeUnityPlayerActivityを拡張するようにUnityPlayerActivityを変更します。
  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バンドル内の関連画像の適切な表示には影響しません。

1
Could not create texture from Assets/Plugins/iOS/AppboyKit/Appboy.bundle/...png: File could not be read

.NET MAUI SDKの統合

Braze .NET MAUI(旧称Xamarin)SDKを統合すると、基本的な分析機能に加え、ユーザーとのエンゲージメントに活用できる機能的なアプリ内メッセージが利用可能になる。

前提条件

.NET MAUI Braze SDKを統合する前に、以下の要件を満たしていることを確認せよ:

  • version 3.0.0 以降、この SDK では、NET 6以降を使用する必要があり、Xamarin フレームワークを使用するプロジェクトのサポートが削除されます。
  • このSDKはversion 4.0.0、Xamarinのサポートを終了し、.NET &Xamarin.FormsMAUIのサポートを追加した。Xamarinのサポート終了前後のMicrosoftのポリシーを参照してください。

ステップ 1: .NET MAUI バインディングを入手する

.NET MAUIバインディングとは、.NET MAUIアプリでネイティブライブラリーを利用する方法である。バインディングの実装は、ライブラリに対して C# インターフェイスを構築し、アプリケーションでそのインターフェイスを使用することから構成されます。 .NET MAUI のドキュメントを参照せよ。Braze SDK バインディングを含めるには、NuGet を使用する方法と、ソースからコンパイルする方法の2つがあります。

最も単純な統合方式では、NuGet.org中央リポジトリーからBraze SDKを取得します。Visual Studio サイドバーで、Packages フォルダを右クリックし、Add Packages... をクリックします。 ‘Braze’ を検索し、BrazePlatform.BrazeAndroidBinding パッケージをプロジェクトにインストールします。

Brazeの位置情報サービスとジオフェンスを使用するには、パッケージBrazePlatform.BrazeAndroidLocationBindingもインストールする必要がある。

2 番目の統合方法は、バインディングソース を含めることです。以下にバインディングappboy-component/src/androidnet6のコードがある。.NET MAUIアプリケーションでBrazeAndroidBinding.csprojプロジェクト参照をこれに追加すると、バインディングがプロジェクトと共にビルドされ、Braze Android SDKを利用できるようになる。

Brazeの位置情報サービスとジオフェンスを使用するには、プロジェクトにBrazeAndroidLocationBinding.csproj以下の参照を追加する必要があるappboy-component/src/androidnet6/BrazeAndroidLocationBinding

.NET MAUIバインディングとは、.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を利用できるようになる。プロジェクトの「リファレンス」フォルダに BrazeiOSBinding.csproj が表示されていることを確認します。

ステップ2:Brazeインスタンスの設定

ステップ 2.1: Braze.xmlでBraze SDKを構成する

ライブラリが統合されたので、プロジェクトのResources/values フォルダにBraze.xml ファイルを作成する必要があります。ファイルの内容は、次のコードスニペットのようになります。

1
2
3
4
5
6
7
8
9
  <?xml version="1.0" encoding="utf-8"?>
  <resources>
    <string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
    <string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
    <string-array name="com_braze_internal_sdk_metadata">
      <item>XAMARIN</item>
      <item>NUGET</item>
    </string-array>
  </resources>

バインディングソースを手動で含める場合は、コードから <item>NUGET</item> を削除します。

ステップ 2.2:Androidマニフェストに必要な権限を追加する

API キーを追加したので、次の権限を AndroidManifest.xml ファイルに追加する必要があります。

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

AndroidManifest.xml の例については、Android MAUI サンプルアプリケーションを参照してください。

ステップ 2.3:ユーザー セッションs の追跡とアプリ内メッセージs の登録

ユーザーセッショントラッキングを有効にし、アプリ内メッセージ用にアプリを登録するには、アプリの Application クラスの OnCreate() ライフサイクルメソッドに次の呼び出しを追加します。

1
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());

Braze インスタンスを設定したら、次のスニペットを追加して、インスタンスを設定します。

1
2
3
var configuration = new BRZConfiguration("YOUR_API_KEY", "YOUR_ENDPOINT");
configuration.Api.AddSDKMetadata(new[] { BRZSDKMetadata.Xamarin });
braze = new Braze(configuration);

iOS MAUIサンプルアプリライケーションのApp.xaml.csファイルを参照してください。

ステップ3: 統合をテストする

これで、アプリケーションを起動して、セッションが Braze ダッシュボードに (デバイス情報やその他の分析と共に) 記録されているのを確認できます。基本的なSDKインテグレーションのベストプラクティスの詳細については、Androidインテグレーション命令を参照してください。

これで、アプリケーションを起動して、セッションが Braze ダッシュボードに記録されているのを確認できます。基本的なSDKインテグレーションのベストプラクティスの詳細については、iOSインテグレーションの手順を参照してください。

ChatGPTアプリの統合

設定

ステップ 1: Brazeの統合ファイルを取得する

ChatGPTアプリ統合リポジトリからファイルをbraze.jsプロジェクトにコピーせよ。このファイルには、必要なすべてのBraze SDK設定と補助関数が含まれている。

ステップ 2:依存関係をインストールする

Brazeの最新機能を利用するには、当社のWeb SDKを導入せよ。

クライアントサイド統合については:

1
npm install @braze/web-sdk

実装

BrazeをChatGPTアプリに統合する方法は、ユースケースに応じて2通りある:

クライアントサイド統合(カスタムウィジェット)

カスタムChatGPTアプリウィジェット内でBrazeメッセージングを表示し、ユーザーインタラクションをトラッキングするには、Web SDK統合を使用する。完全なメッセージングの例は、こちらのサンプルリポジトリで見つけることができる。

ウィジェットのメタデータを設定する

MCPサーバーファイルに以下のメタデータを追加し、Brazeドメインを許可する。CDNドメインは地域に応じて更新すること:

1
2
3
4
5
6
7
8
9
"openai/widgetCSP": {
  connect_domains: ["https://YOUR-SDK-ENDPOINT"],
  resource_domains: [
    "https://appboy-images.com",
    "https://braze-images.com",
    "https://cdn.braze.eu",
    "https://use.fontawesome.com"
  ],
}

実際のBraze SDKエンドポイントでYOUR-SDK-ENDPOINT置き換える。

useBrazeフックを設定する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { useBraze } from "./utils/braze";

function YourWidget() {
  const braze = useBraze({
    apiKey: "your-braze-api-key",
    baseUrl: "your-braze-endpoint.braze.com",
  });

  useEffect(() => {
    if (!braze.isInitialized) {
      return;
    }

    // Set user identity
    braze.changeUser("user-id-123");
    
    // Log widget interactions
    braze.logCustomEvent("viewed_pizzaz_list");
  }, [braze.isInitialized]);

  return (
    // Your widget JSX
  );
}

Brazeコンテンツカードを表示する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const [cards, setCards] = useState([]);

useEffect(() => {
  // Get cached content cards
  setCards(braze.getCachedContentCards()?.cards ?? []);

  // Subscribe to content card updates
  braze.subscribeToContentCardsUpdates((contentCards) => {
    setCards(contentCards.cards);
  });

  // Open session
  braze.openSession();

  return () => {
    braze.removeAllSubscriptions();
  }
}, []);

ウィジェットのイベントのトラッキング

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Track user interactions within your widget
const handleButtonClick = () => {
  braze.logCustomEvent("widget_button_clicked", {
    button_type: "save_list",
    widget_name: "pizza_list"
  });
};

const handleItemInteraction = (itemId) => {
  braze.logCustomEvent("item_interacted", {
    item_id: itemId,
    interaction_type: "view_details"
  });
};

サーバーサイド統合(MCPサーバー)

MCPサーバー上でメッセージング機能のサーバーサイド統合も必要なら、に連絡せよ[email protected]。MCPサーバーからのイベントや購入のトラッキング, 追跡には、当社のREST APIを使用する。

Braze Vega SDKについて

Braze Vega SDKを使えば、ユーザー向けの分析データを収集し、アプリ内でリッチなアプリ内メッセージを表示できる。Braze Vega SDK のメソッドの大半は非同期であり、await または resolve すべき Promise を返す。

Braze Vega SDKの統合

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

お好みのパッケージマネージャーを使って、Braze Vega SDKをインストールする。

プロジェクトでNPMを使用している場合、Braze Vega SDKを依存関係として追加できる。

1
npm install @braze/vega-sdk --save

インストール後、必要なメソッドをインポートできる:

1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";

プロジェクトでYarnを使用している場合、Braze Vega SDKを依存関係として追加できる。

1
yarn add @braze/vega-sdk

インストール後、必要なメソッドをインポートできる:

1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";

ステップ2:SDK の初期化

プロジェクトにBraze Vega SDKを追加した後、ライブラリーを初期化する。その際、Brazeダッシュボードの「設定」>「アプリ設定」にあるAPI キーとSDKエンドポイントURLを使用する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { useEffect } from "react-native";
import {
  initialize,
  changeUser,
  logCustomEvent,
  openSession,
  setCustomUserAttribute,
  setUserCountry
} from "@braze/vega-sdk";

const App = () => {
  useEffect(() => {
    const initBraze = async () => {
      // Initialize the SDK
      await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
        sessionTimeoutInSeconds: 60,
        appVersionNumber: "1.2.3.4",
        enableLogging: true, // set to `true` for debugging
      });

      // Change user
      await changeUser("user-id-123");
      
      // Start a session
      await openSession();
      
      // Log custom events and set user attributes
      logCustomEvent("visited-page", { pageName: "home" });
      setCustomUserAttribute("my-attribute", "my-attribute-value");
      setUserCountry("USA");
    };
    
    initBraze();
  }, []);
  
  return (
    // Your app components
  );
};

オプション設定

ロギング

SDKのログ記録のイネーブルメントを有効にすれば、デバッグやトラブルシューティングに役立つ。ログ記録のイネーブルメントは複数ある。

初期化中にログ記録をイネーブルメントする

デバッグメッセージをコンソールに記録するにはinitialize()enableLogging: true以下を実行する:

1
2
3
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
  enableLogging: true
});

初期化後にログ記録をイネーブルメントする

初期化後にSDKのログ出力をイネーブルメントまたは無効toggleLogging()にするには、以下を使用する:

1
2
3
4
import { toggleLogging } from "@braze/vega-sdk";

// Enable logging
toggleLogging();

カスタムロギング

SDKのログ処理をより細かくコントロールするために、カスタムロガー関数をsetLogger()指定するには``を使用する。

1
2
3
4
5
6
import { setLogger } from "@braze/vega-sdk";

setLogger((message) => {
  console.log("Braze Custom Logger: " + message);
  // Add your custom logging logic here
});

設定オプション

SDKの動作をカスタマイズするためにinitialize()、追加の設定オプションを渡すことができる:

1
2
3
4
5
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
  sessionTimeoutInSeconds: 60,        // Configure session timeout (default is 30 seconds)
  appVersionNumber: "1.2.3.4",        // Set your app version
  enableLogging: true,                 // Enable SDK logging
});

SDKをアップグレードする

NPMやYarnからBraze Vega SDKを参照している場合、パッケージ依存関係を更新することで最新版にアップグレードできる:

1
2
3
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk

統合のテスト

SDKの統合が正しく動作しているか確認するには:

  1. コンソールにデバッグメッセージを表示するにはenableLogging: true、SDKを初期化する。
  2. 他のSDKメソッドを呼び出す前にawait changeUser()必ず確認すること
  3. セッションを開始するにはawait openSession()電話をかけろ
  4. Brazeダッシュボードの「概要」で、セッションデータが記録されていることを確認せよ。
  5. カスタムイベントのテスト記録を行い、それがダッシュボードに表示されることを確認する
New Stuff!