Skip to content

Braze SDKの統合

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

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 ワークスペースを使用してください。

新しい`BrazeExample.workspace` を表示するために拡張された Braze Example フォルダ

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ライブラリーが「埋め込みと署名」に設定された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];

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タグマネージャで、ワークスペースを選択し、Templatesを選択します。Tag Templateペインで、Search Galleryを選択します。

Google Tag Manager.のサンプルワークスペースのテンプレート s ページ{: style=”max-width:95%;”}

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

テンプレートギャラリーでbraze-inc を検索し、Braze初期化タグ を選択します。

さまざまな'braze-inc' テンプレートs.を示すテンプレートギャラリー{: style=”max-width:80%;”}

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

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

ステップ 3:タグの設定

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

" テンプレート s" Google タグマネージャのページに、Braze初期化タグテンプレートが表示されます。

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

タグ設定タイル。'pencil' アイコンが表示されます。

必要最小限の情報を入力します。

追加の初期化設定では、Braze初期化オプションを選択し、必要なオプションを選択します。

'Tag Configuration'.にあるBraze初期化オプションの一覧{: style=”max-width:65%;”}

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

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

ステップ 5: 統合を検証する

次のいずれかのオプションを使用して、統合を確認できます。

  • オプション 1:Googleタグマネージャのデバッグツールを使用して、Braze初期化タグが設定されたページまたはイベントで正しくトリガーされているかどうかを確認できます。
  • オプション 2:ウェブページから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)

もっと見る

ステップ 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の担当者にご連絡ください。

Integrating the Cordova SDK

Prerequisites

Before you start, verify your environment is supported by the latest Braze Cordova SDK version.

Step 1: Add the SDK to your project

If you’re on Cordova 6 or later, you can add the SDK directly from GitHub. Alternatively, you can download a ZIP of the GitHub repository and add the SDK manually.

If you don’t plan on using location collection and geofences, use the master branch from GitHub.

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

If you plan on using location collection and geofences, use the geofence-branch from GitHub.

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

Step 2: Configure your project

Next, adding the following preferences to the platform element in your project’s config.xml file.

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

Replace the following:

The platform element in your config.xml file should be similar to the following:

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>

Platform-specific syntax

The following section covers the platform-specific syntax when using Cordova with iOS or Android.

Integers

Integer preferences are read as string representations, like in the following example:

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>

Due to how the Cordova 8.0.0+ framework handles preferences, integer-only preferences (such as sender IDs) must be set to strings prepended with str_, like in the following example:

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>

Booleans

Boolean preferences are read by the SDK using YES and NO keywords as a string representation, like in the following example:

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>

Boolean preferences are read by the SDK using true and false keywords as a string representation, like in the following example:

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>

Optional configurations

You can add any of the following preferences to the platform element in your project’s config.xml file:

The following is an example config.xml file with additional configurations:

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>

Disabling automatic session tracking (Android only)

By default, the Android Cordova plugin automatically tracks sessions. To disable automatic session tracking, add the following preference to the platform element in your project’s config.xml file:

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

To start tracking sessions again, call BrazePlugin.startSessionTracking(). Keep in mind, only sessions started after the next Activity.onStart() will be tracked.

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

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宣言ファイルを参照してください。また、すでにiOS 用にUnity を手動で統合している場合は、代わりに 自動統合 に切り替えることができます。

Unity SDKの統合

前提条件

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

ステップ1:Braze Unity パッケージの選択

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

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

  • Appboy.unitypackage
    • このパッケージは、Braze Android および iOS SDK と、iOS SDK の SDWebImage 依存関係をバンドルします。これは、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

fullo 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
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:グレードル依存関係の追加

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

Amazon Device Messaging (ADM)

ブレーズは、ADMプッシュをUnityアプリに統合することをサポートしています。ADM プッシュを統合する場合は、ADM API キーを含むapi_key.txt というファイルを作成し、Plugins/Android/assets/ フォルダに配置します。 ADM とブレーズの統合の詳細については、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

アンリアルエンジンBraze SDKについて

Braze アンリアルSDK プラグインを使用すると、次のことができます。

  • アプリやゲーム内のセッションを測定、追跡する
  • アプリ内購入とカスタムイベントを追跡する
  • 標準およびカスタム属性でユーザープロファイルを更新する
  • プッシュ通知を送信する
  • Unreal アプリを大規模なキャンバスジャーニーと統合する
  • アプリ内の行動に基づいて、EメールやSMSなどのクロスチャネルメッセージを送信する。

アンリアルエンジンSDKの統合

ステップ 1: Braze プラグインを追加する

ターミナルで、Unreal Engine Braze SDK GitHub リポジトリ を複製します。

1
git clone [email protected]:braze-inc/braze-unreal-sdk.git

次に、BrazeSample/Plugins/Braze ディレクトリーをコピーし、アプリのPlugin フォルダーに追加します。

ステップ 2:プラグインを有効にする

C++ またはブループリントプロジェクトのプラグインを有効にします。

C++ プロジェクトの場合は、Braze モジュールを参照するようにモジュールを設定します。\*.Build.cs file で、"Braze"PublicDependencyModuleNames に追加します。

1
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "Braze" });

ブループリントプロジェクトの場合は、Settings> Plugins に移動し、Braze チェックEnabled に移動します。

EnablePlugin

ステップ 3:API キーとエンドポイントを設定する

API キーとエンドポイントをプロジェクトのDefaultEngine.ini に設定します。

1
2
3
4
5
[/Script/Braze.BrazeConfig]
bAutoInitialize=True ; true by default, initialize when the project starts
AndroidApiKey= ; your API key
IOSApiKey= ; your API key
CustomEndpoint= ; your endpoint

ステップ 4: SDKを手動で初期化する(オプション)

デフォルトでは、SDKは起動時に自動的に初期化されます。初期化をよりコントロールしたい場合(ユーザーの同意の待機やログレベルの設定など)、AutoInitializeDefaultEngine.ini で無効にし、C++ またはブループリントで手動で初期化することができます。

ネイティブC++ では、BrazeSubsystem にアクセスしてInitializeBraze() を呼び出し、オプションでConfig を渡してEngine.ini 設定s を上書きします。

1
2
UBrazeSubsystem* const BrazeSubsystem = GEngine->GetEngineSubsystem<UBrazeSubsystem>();
UBraze* const BrazeInstance = BrazeSubsystem->InitializeBraze();

ブループリントでは、ブループリントノードと同じ機能にアクセスできます。
GetBrazeSubsystem ノードを使用して、Initialize ノードを呼び出します。
BrazeConfig オブジェクトは、ブループリントで任意に作成して渡すことができます Initialize

初期化Braze

オプション構成

ロギング

ログレベルは、C++ またはブループリントノードを使用して実行時に設定できます。

実行時にログレベルを設定するには、UBrazeSubsystem::AndroidSetLogLevel を呼び出します。

1
2
3
UBrazeSubsystem* const BrazeSubsystem = GEngine->GetEngineSubsystem<UBrazeSubsystem>();
BrazeSubsystem->AndroidSetLogLevel(EBrazeLogLevel::Verbose);
UBraze* const BrazeInstance = BrazeSubsystem->InitializeBraze();

ブループリントでは、** Android ログレベル設定** ノードを使用できます。

Blueprint. のAndroid ログレベル設定ノード

Braze SDK初期化が呼び出されたときにロギングが確実に設定されるようにするには、InitializeBraze の前にこれを呼び出すことをお勧めします。

info.plist のログレベルを有効にするには、Settings > Project Settings に移動し、iOS の下のPlatforms を選択します。Extra PList Dataの下で、Additional Plist Dataを見つけ、ログレベルを入力します。

1
2
3
4
5
<key>Appboy</key>
<dict>
  <key>LogLevel</key>
  <string>0</string>
</dict>

デフォルトのログレベルは8 で、これは最小のログです。ログレベルについて詳しくは、以下を参照してください。他のSDKのカスタマイズ

Integrating the Xamarin SDK

Integrating the Braze Xamarin SDK will provide you with basic analytics functionality as well as working in-app messages with which you can engage your users.

Prerequisites

Before you can integrate the Xamarin Braze SDK, be sure you meet the following requirements:

  • Starting in version 3.0.0, this SDK requires using .NET 6+ and removes support for projects using the Xamarin framework.
  • Starting in version 4.0.0, this SDK dropped support for Xamarin & Xamarin.Forms and added support for .NET MAUI. See Microsoft’s policy around the end of support for Xamarin.

Step 1: Get the Xamarin binding

A Xamarin binding is a way to use native libraries in Xamarin apps. The implementation of a binding consists of building a C# interface to the library, and then using that interface in your application. See the Xamarin documentation. There are two ways to include the Braze SDK binding: using NuGet or compiling from source.

The simplest integration method involves getting the Braze SDK from the NuGet.org central repository. In the Visual Studio sidebar, right click Packages folder and click Add Packages.... Search for ‘Braze’ and install the BrazePlatform.BrazeAndroidBinding package into your project.

The second integration method is to include the binding source. Under appboy-component/src/androidnet6 you will find our binding source code; adding a project reference to the BrazeAndroidBinding.csproj in your Xamarin application will cause the binding to be built with your project and provide you access to the Braze Android SDK.

A Xamarin binding is a way to use native libraries in Xamarin apps. The implementation of a binding consists of building a C# interface to the library and then using that interface in your application. There are two ways to include the Braze SDK binding: using NuGet or compiling from source.

The simplest integration method involves getting the Braze SDK from the NuGet.org central repository. In the Visual Studio sidebar, right-click Packages folder and click Add Packages.... Search for ‘Braze’ and install the latest Xamarin iOS NuGet packages: Braze.iOS.BrazeKit, Braze.iOS.BrazeUI, and Braze.iOS.BrazeLocation into your project.

We also provide the compatibility libraries packages: Braze.iOS.BrazeKitCompat and Braze.iOS.BrazeUICompat, to help make your migration to .NET MAUI easier.

The second integration method is to include the binding source. Under appboy-component/src/iosnet6 you will find our binding source code; adding a project reference to the BrazeiOSBinding.csproj in your Xamarin application will cause the binding to be built with your project and provide you access to the Braze iOS SDK. Make sure BrazeiOSBinding.csproj is showing in your project’s “Reference” folder.

Step 2: Configure your Braze instance

Step 2.1: Configure the Braze SDK in Braze.xml

Now that the libraries have been integrated, you have to create an Braze.xml file in your project’s Resources/values folder. The contents of that file should resemble the following code snippet:

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>

If you are including the binding source manually, remove <item>NUGET</item> from your code.

Step 2.2: Add required permissions to Android manifest

Now that you’ve added your API key, you need to add the following permissions to your AndroidManifest.xml file:

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

For an example of your AndroidManifest.xml, see the Android MAUI sample application.

Step 2.3: Track user sessions and registering for in-app messages

To enable user session tracking and register your app for in-app messages, add the following call to the OnCreate() lifecycle method of the Application class in your app:

1
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());

When setting up your Braze instance, add the following snippet to configure your instance:

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

See the App.xaml.cs file in the iOS MAUI sample application.

Step 3: Test the integration

Now you can launch your application and see sessions being logged to the Braze dashboard (along with device information and other analytics). For a more in-depth discussion of best practices for the basic SDK integration, consult the Android integration instructions.

Now you can launch your application and see sessions being logged to the Braze dashboard. For a more in-depth discussion of best practices for the basic SDK integration, consult the iOS integration instructions.

New Stuff!