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ユーザーに表示することができます。詳しくは、Braze JavaScriptリファレンスドキュメントを参照のこと。

Web SDKを統合する

以下の方法でWeb Braze SDKを統合することができる。その他のオプションについては、他の統合方法を参照のこと。

  • コードベースの統合:お好みのパッケージマネージャーまたはBraze CDNを使用して、Web Braze SDKをコードベースに直接統合する。これにより、SDKの読み込まれ方とコンフィギュレーションを完全にコントロールできるようになる。
  • Google タグマネージャー:サイトのコードを変更することなく、Web Braze SDKを統合できるコード不要のソリューション。詳しくは、Google Tag Manager with Braze SDKを参照。

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

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

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

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

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

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

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

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

ステップ2:SDK の初期化

Braze Web SDKがWebサイトに追加されたら、Brazeダッシュボード内の設定>アプリ設定にあるAPIキーとSDKエンドポイントURLを使って、ライブラリを初期化する。他のJavaScriptメソッドと共に、braze.initialize() のオプションの完全なリストについては、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
// 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
});

// optionally show all in-app messages without custom handling
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();

前提条件

この統合方法を使う前に、Googleタグマネージャーのアカウントとコンテナを作成する必要がある。

ステップ 1: タグテンプレートギャラリーを開封する

Googleタグマネージャーで、ワークスペースを選択し、テンプレートを選択する。タグテンプレートペインでギャラリーを検索を選択する。

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

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

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

様々な「Braze-inc」テンプレートを紹介するテンプレートギャラリー。

Add to workspace>Addを選択する。

Googleタグマネージャーの「Braze初期化タグ」ページ。

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

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

Googleタグマネージャーの「テンプレート」ページにBraze初期化タグのテンプレートが表示されている。

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

鉛筆」アイコンが表示されたタグ・コンフィギュレーション・タイル。

最低限必要な情報を入力する:

追加の初期化設定については、Braze Initialization Optionsを選択し、必要なオプションを選択する。

タグ設定」の下にあるBraze初期化オプションのリスト。

ステップ 4: すべてのページでトリガーに設定する

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

ステップ 5: 統合を確認する

以下のいずれかのオプションを使用して、統合を検証することができる:

  • オプション 1:Googleタグマネージャーのデバッグツールを使って、設定したページやイベントでBraze初期化タグが正しくトリガーされているか確認できる。
  • オプション 2:WebページからBrazeへのネットワークリクエストをチェックする。さらに、グローバルなwindow.braze ライブラリーを定義する必要がある。

オプション構成

ロギング

ロギングをすばやく有効にするには、?brazeLogging=true をパラメーターとして Web サイト URL に追加します。あるいは、基本ロギングまたはカスタム・ロギングを有効にすることもできます。

基本的なロギング

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

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

カスタムロギング

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

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.aa.a.z )を自動的に受け取ることができます。

ただし、弊社が大きな変更をリリースする際には、変更点がお客様の統合に影響しないように、Braze Web SDKを手動でアップグレードしていただく必要があります。さらに、当社のSDKをダウンロードして自分でホスティングする場合、バージョン・アップデートを自動的に受け取ることはできないので、最新の機能やバグ修正を受け取るには手動でアップグレードする必要があります。

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

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

適切に機能させるためには、これら2つのファイルを連携させて更新する必要がある。

その他の統合方法

アクセラレイテッド・モバイル・ページ(AMP)

See more

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

次の非同期スクリプトタグをヘッドに追加します:

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

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

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

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

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

ステップ 3:helper-iframe を追加する。 permission-dialog

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

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

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

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

以下のamp-web-push HTML要素をHTML本文に追加する。service-worker-URL にクエリーパラメーターとしてapiKeybaseUrlを追加する必要があることに留意してほしい。

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
require(['path/to/braze.min.js'], function(braze) {
  braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
  braze.automaticallyShowInAppMessages();
  braze.openSession();
});

エレクトロン

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

Jestフレームワーク

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

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

SSRフレームワーク

Next.js のようなサーバーサイド・レンダリング(SSR)フレームワークを使用している場合、SDKがブラウザ環境で実行されることを意図しているため、エラーが発生する可能性がある。これらの問題は、SDKを動的にインポートすることで解決できます。

必要な SDK の部分を別のファイルにエクスポートし、そのファイルをコンポーネントに動的にインポートすることで、ツリーシェイクの利点を維持できます。

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

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

あるいは、アプリのバンドルにwebpackを使用している場合、そのマジックコメントを利用して、必要なSDKの部分だけを動的にインポートすることもできます。

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

Tealium iQ

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

詳細や詳細なTealium設定サポートについては、統合ドキュメントをご覧になるか、Tealiumアカウントマネージャーにお問い合わせください。

ヴァイト

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

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

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

Brazeは、カスタムHTMLタグの中で当社の統合指示に従うことにより、他のタグ管理ソリューションと互換性を持つこともできます。これらのソリューションの評価についてサポートが必要な場合は、Brazeの担当者に連絡すること。

Android SDKを統合する

ステップ 1: build.gradle を更新する

あなたのbuild.gradle 、リポジトリのリストに mavenCentral()をリポジトリのリストに追加する。

1
2
3
repositories {
  mavenCentral()
}

次に、Brazeを依存関係に追加する。

Braze UIコンポーネントを使用する予定がない場合は、以下のコードをbuild.gradle に追加する。SDK_VERSION をお使いのAndroid Braze SDKの現在のバージョンに置き換える。全バージョンのリストはChangelogsを参照のこと。

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

Braze UIコンポーネントを後で使用する予定がある場合は、次のコードをbuild.gradle に追加する。 SDK_VERSION をお使いのAndroid Braze SDKの現在のバージョンに置き換える。全バージョンのリストはChangelogsを参照のこと。

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

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

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

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

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

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

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

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

ステップ 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>

QUEUE を追加する。 Braze.enableDelayedInitialization()メソッドを追加する:

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>

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

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を使用してアクティビティ内のopenSessioncloseSession

  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().利用可能なランタイムオプションの一部しか表示されていないことに注意してほしい。

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 Advertising 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 に設定されています。これらのログを抑制したり、別のログレベルを設定 (VERBOSEDEBUG、または WARN など) したりすることができます。

ログをイネーブルメントにする

アプリの問題のトラブルシューティングや、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 未満の (<) すべてのログは破棄されます。

たとえば、以下のコードはログレベル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 未満の (<) すべてのログは破棄されます。

たとえば、以下のコードはログレベル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とプロガード

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

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

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

Swift SDKを統合する

Swiftパッケージマネージャー(SPM)、CocoaPods、または手動の統合方法を使用して、Braze Swift SDKを統合し、カスタマイズすることができる。様々なSDKシンボルの詳細については、Braze Swiftリファレンスドキュメントを参照のこと。

前提条件

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

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

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

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

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

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

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

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

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

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

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

完全なウォークスルーは、CocoaPodsの入門ガイドを参照のこと。そうでなければ、以下のコマンドを実行すればすぐに始められる:

1
$ sudo gem install cocoapods

行き詰まったら、CocoaPodsのトラブルシューティングガイドをチェックしよう。

ステップ1.2:ポッドファイルの構築

次に、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' アプリ内メッセージ、コンテンツカード、バナー用のBraze提供のユーザーインターフェイスライブラリー。デフォルトのUIコンポーネントを使用する場合は、このライブラリーをインポートする。
拡張ライブラリ

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

図書館 詳細
pod 'BrazeNotificationService' リッチプッシュ通知をサポートする通知サービス拡張ライブラリー。
pod 'BrazePushStory' プッシュストーリーをサポートする通知コンテンツ拡張ライブラリーを提供します。

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

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

1
pod install

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

Braze Exampleフォルダが展開され、新しい`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 いいえ アプリ内メッセージ、コンテンツカード、バナー用のBraze提供のユーザーインターフェイスライブラリー。デフォルトのUIコンポーネントを使用する場合は、このライブラリーをインポートする。
BrazeNotificationService いいえ リッチプッシュ通知をサポートする通知サービス拡張ライブラリー。このライブラリーを直接メインアプリケーションターゲットに追加しないでください。代わりにこのBrazeNotificationServiceライブラリーを別々に追加してください
BrazePushStory いいえ 通知コンテンツ拡張ライブラリーは、プッシュストーリーをサポートします。このライブラリーを直接メインアプリケーションターゲットに追加しないでください。代わりにこのBrazePushStoryライブラリーを別々に追加してください
BrazeKitCompat いいえ Appboy-iOS-SDK バージョン 4.X.X で使用可能だったすべての Appboy および ABK* クラスとメソッドを含む互換性ライブラリ。使用の詳細については、移行ガイドの最小限の移行シナリオを参照してください。
BrazeUICompat いいえ Appboy-iOS-SDK バージョン4.X.Xの AppboyUIライブラリで使用可能だったすべてのABK* クラスとメソッドを含む互換性ライブラリ。使用の詳細については、移行ガイドの最小限の移行シナリオを参照してください。
SDWebImage いいえ 最小限の移行シナリオで BrazeUICompat によってのみ使用される依存関係。

静的 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 または静的な XCFrameworks を統合します。

Xcodeプロジェクトでビルドターゲットを選択し、次に一般を選択します。フレームワーク、ライブラリ、および埋め込みコンテンツの下に、以前に準備したファイルをドラッグ&ドロップします。

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

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

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

1
FILE_NAME.swift

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

1
empty_swift_file.swift

ステップ 2:遅延初期化の設定(オプション)

アプリがSDKを開始する前に設定を読み込んだり、ユーザーの同意を待つ必要がある場合に便利な、Braze Swift SDKが初期化されるタイミングを遅らせるように選択できる。遅延初期化により、SDKの準備が整うまでBrazeプッシュ通知はキューに入れられる。

これを可能にするには、Braze.prepareForDelayedInitialization() にできるだけ早く、できればapplication(_:didFinishLaunchingWithOptions:) の内部かその前に電話すること。

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

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

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

1
import BrazeKit

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

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

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

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

アプリの設定ページから、YOUR-APP-IDENTIFIER-API-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

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

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

Manage Settingsページから、YOUR-APP-IDENTIFIER-API-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" />

次のように置き換えます。

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 要素に追加できます。

以下は、追加構成を含む 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() 以降に開始されたセッションのみが追跡されることに注意してください。

Braze SDKについて

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

Flutter SDKを統合する

前提条件

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

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

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

1
flutter pub add braze_plugin

ステップ 2:完全なネイティブSDKのセットアップ

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

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

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

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

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

1
2
import BrazeKit
import braze_plugin

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

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

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

  return true
}

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

1
@import BrazeKit;

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

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

  [self.window makeKeyAndVisible];
  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

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

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

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

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

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

統合をテストする

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

アプリ内で以下のコードを呼び出して、特定のユーザーのセッションを開封する。

1
2
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");

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

React Native Braze SDKについて

React Native Braze SDKを統合することで、基本的な分析機能を提供し、1つのコードベースだけでiOSとAndroidの両方のアプリ内メッセージとコンテンツカードを統合できる。

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

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

SDKバージョン6.0.0から、BrazeはReact Native Turbo Moduleを使用しており、New Architectureとレガシーブリッジアーキテクチャの両方に対応している。

React Native SDKを統合する

前提条件

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

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

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

ステップ 2:セットアップオプションを選択する

Braze SDKは、Braze Expoプラグインまたはネイティブレイヤーのいずれかを使用して管理できる。Expoプラグインを使えば、ネイティブレイヤーにコードを書くことなく、特定のSDK機能を設定できる。アプリのニーズに最も適したオプションを選択しよう。

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

Braze React Native SDK のバージョンが1.37.0以降であることを確認してください。サポートされているバージョンの全リストは、Braze React Nativeリポジトリをチェックしてほしい。

Braze Expoプラグインをインストールするには、以下のコマンドを実行する:

1
npx expo install @braze/expo-plugin

ステップ 2.2:app.json にプラグインを追加する

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

構成例:

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
{
  "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"
        }
      ],
    ]
  }
}

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

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

1
npx expo prebuild

Expo ドキュメントの指定に従い、アプリケーションを実行します。コンフィギュレーション・オプションに変更を加えると、アプリケーションのプリビルドと再実行が必要になることを覚えておいてほしい。

ステップ2.1: リポジトリの追加

最上位プロジェクト build.gradle で、buildscript > dependencies から以下を追加します。

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

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

ステップ2.2: Braze SDK の構成

Braze サーバーに接続するには、プロジェクトの res/values フォルダで braze.xml ファイルを作成します。次のコードを貼り付け、API キーおよびエンドポイントを実際の値に置き換えます。

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

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

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

ステップ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)
}

ステップ2.1: (オプション) ダイナミック XCFramework に関する Podfile の構成

BrazeUI などの特定の Braze ライブラリーを 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.2:ポッドのインストール

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

プロジェクトのルートフォルダから:

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

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

ステップ 2.3:Braze SDK の構成

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

1
import BrazeKit

application(_:didFinishLaunchingWithOptions:) メソッドで、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
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 で静的プロパティを作成します。

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

  /* Other configuration */

  return YES;
}

#pragma mark - AppDelegate.braze

static Braze *_braze = nil;

+ (Braze *)braze {
  return _braze;
}

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

ステップ 3:ライブラリーをインポートする

次に、React Nativeのコードでライブラリをimport 。詳しくはサンプル・プロジェクトをご覧いただきたい。

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

ステップ 4: 統合をテストする(オプション)

SDKの統合をテストするには、アプリで以下のコードを呼び出して、どちらのプラットフォームでもユーザーの新しいセッションを開始する。

1
Braze.changeUser("userId");

たとえば、アプリの起動時にユーザー ID を割り当てることができます。

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

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

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

Brazeのダッシュボードで、ユーザー検索に行き、some-user-id に一致するIDを持つユーザーを探す。ここで、セッションデータとデバイスデータが記録されたことを確認できる。

六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 上のコンテンツカード機能を適切に機能させるために必要です。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 上のコンテンツカード機能が適切に機能しません。カスタムコードなしで完全なBraze機能を使用する場合は、代わりに以下のオプションを使用してください。
    • この統合オプションを使用する場合は、[Braze 構成] の下にある Unity UI で Import SDWebImage dependency の横にあるボックスにチェックマークが入れられていないことを確認してください。
  2. SDWebImage を含む Appboy.unitypackage
    • この統合オプションは、Braze Android および iOS SDK と、iOS SDK の SDWebImage 依存関係をバンドルします。これは、Braze アプリ内メッセージングと、iOS 上のコンテンツカード機能を適切に機能させるために必要です。SDWebImage フレームワークは、GIF を含む画像のダウンロードと表示に使用されます。完全なBraze機能を使用する場合は、このパッケージを読み込むしてインポートします。
    • SDWebImage を自動的にインポートするには、[Braze 構成] の下にある Unity UIで Import SDWebImage dependency の横にあるボックスにチェックマークが入れられていることを確認してください。

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

Unity エディターで Unity プロジェクトにパッケージをインポートするには、[アセット] > [パッケージをインポート] > [カスタムパッケージ] の順に移動します。次に、Importをクリックします。

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

Unity エディターで Unity プロジェクトにパッケージをインポートするには、[アセット] > [パッケージをインポート] > [カスタムパッケージ] の順に移動します。次に、Importをクリックします。

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

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

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

機能する 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 をパッケージ名で更新する。

パッケージ名を確認するには、[ファイル] > [ビルド設定] > [プレーヤー設定] > [Android タブ]を選択します。

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

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

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

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

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

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

ステップ 3.4:UnityのAndroidインテグレーションを自動化する

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

  1. Unity エディターで [Braze] > [Braze 構成] の順に移動して、[Braze 構成設定] を開きます。
  2. [Unity Android 統合の自動化] ボックスにチェックマークを入れます。
  3. Braze API キーフィールドで、設定の管理にあるアプリアプリケーションのAPI キーをBraze ダッシュボードから入力します。

ステップ 3.1:API キーの設定

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

  1. Unity エディターで [Braze] > [Braze 構成] の順に移動して、[Braze 構成設定] を開きます。
  2. [Unity iOS 統合の自動化] ボックスにチェックマークを入れます。
  3. Braze API キー フィールドで、設定の管理 にあるアプリアプリケーションのAPI キーを入力します。

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

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

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

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

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

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

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

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

ステップ 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 構成] の順に移動して、[Braze 構成設定] を開きます。
  2. [Braze Android 設定を表示する] ドロップダウンをクリックします。
  3. [SDK ログレベル] フィールドに値「0」を入力します。

Prime 31 の互換性

Prime31 プラグインで Braze Unity プラグインを使用するには、Prime31 互換の Activity クラスを使用するようにプロジェクトの AndroidManifest.xml を編集します。の参照をすべて変更する。 com.braze.unity.BrazeUnityPlayerActivity から com.braze.unity.prime31compatible.BrazeUnityPlayerActivity

アマゾン・デバイス・メッセージング(ADM)

Brazeは、UnityアプリへのADMプッシュの統合をサポートしている。ADMプッシュを統合したい場合は、ADM APIキーを含むapi_key.txt というファイルを作成し、Plugins/Android/assets/ フォルダに置く。 ADMとBrazeの統合の詳細については、ADMプッシュ統合手順を参照。

Braze Unityプレーヤーの拡張(Androidのみ)

提供されている AndroidManifest.xml ファイルの例では、1つの Activity クラス BrazeUnityPlayerActivity が登録されています。このクラスは Braze SDK と統合され、セッション処理、アプリ内メッセージ登録、プッシュ通知分析ログなどを使用して UnityPlayerActivity を拡張します。UnityPlayerActivity クラスの拡張の詳細については、「Unity」を参照してください。

ライブラリやプラグインプロジェクトで独自のカスタムUnityPlayerActivity を作成する場合は、カスタム機能をBrazeと統合するために、当社のBrazeUnityPlayerActivity を拡張する必要がある。BrazeUnityPlayerActivity を拡張する作業を始める前に、Unity プロジェクトに Braze を統合するための手順に従ってください。

  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 をパッケージできるようになるはずだ。

トラブルシューティング

エラー:「ファイルが読み込めなかった

以下のようなエラーは無視して問題ありません。アップルのソフトウェアはCgBIと呼ばれる独自のPNG拡張子を使用しているが、Unityはこれを認識しない。これらのエラーは、iOSのビルドやBrazeバンドルの関連画像の適切な表示には影響しない。

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

.NET MAUI SDKを統合する

Braze .NET MAUI(旧Xamarin)SDKを統合することで、基本的な分析機能だけでなく、ユーザーをエンゲージメントできるアプリ内メッセージも利用できるようになる。

前提条件

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

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

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

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

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

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

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

最も単純な統合方式では、NuGet.org中央リポジトリーからBraze SDKを取得します。Visual Studio サイドバーで、Packages フォルダを右クリックし、Add Packages... をクリックします。 Braze」を検索し、最新の.NET MAUI iOS NuGetパッケージをインストールする: Braze.iOS.BrazeKit, Braze.iOS.BrazeUIそして Braze.iOS.BrazeLocationをプロジェクトにインストールする。

.NET MAUI への移行を容易にするために、互換性ライブラリパッケージ Braze.iOS.BrazeKitCompat および Braze.iOS.BrazeUICompat も提供しています。

2 番目の統合方法は、バインディングソース を含めることです。その下に appboy-component/src/iosnet6あなたの.NET MAUIアプリケーションのBrazeiOSBinding.csproj にプロジェクト参照を追加すると、バインディングがあなたのプロジェクトと一緒にビルドされ、Braze iOS SDKにアクセスできるようになる。プロジェクトの「リファレンス」フォルダに BrazeiOSBinding.csproj が表示されていることを確認します。

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

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

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

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インテグレーションの手順を参照してください。

Braze Vega SDKについて

Braze Vega SDKを使用すると、ユーザーに対して分析を収集したり、リッチなアプリ内メッセージを表示したりすることができる。Braze Vega SDKのほとんどのメソッドは非同期で、待機または解決すべき約束を返す。

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

カスタムロギング

setLogger() 、SDKログの処理方法をよりコントロールするためのカスタムロガー関数を提供する:

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

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

設定オプション

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!