Skip to content

SDK の初期設定

このリファレンス記事では、React Native 向け Braze SDK のインストール方法について説明します。Braze React Native SDK をインストールすると、基本的な分析機能が提供され、iOS と Android 両方のアプリ内メッセージとコンテンツカードを1つのコードベースで統合できます。

前提条件と互換性

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

React Native New Architecture のサポート

New Architecture での Braze の使用

Braze React Native SDK は、SDK バージョン2.0.1以降、 React Native New Architecture を使用するすべてのアプリと互換性があります。

SDKバージョン6.0.0以降、Braze は内部で React Native Turbo Module にアップグレードされていますが、New Architecture と従来のブリッジアーキテクチャのどちらでも使用できます。Turbo Module には下位互換性があるため、 変更ログに記載されており、React Native v0.70以降を必要とする破壊的変更を除き、移行ステップは必要ありません。

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

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

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

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

Braze React Native SDK のバージョンが1.37.0以降であることを確認してください。その後、Braze Expo プラグインをインストールします。

1
expo install @braze/expo-plugin

ステップ2.2: app.json へのプラグインの追加

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

メソッド タイプ 説明
androidApiKey 文字列 必須。Braze ダッシュボードの [設定の管理] にある Android アプリケーションの API キー
iosApiKey 文字列 必須。Braze ダッシュボードの [設定の管理] にある iOS アプリケーションの API キー
baseUrl 文字列 必須。Braze ダッシュボードの [設定の管理] にあるアプリケーションの SDK エンドポイント
enableBrazeIosPush ブール値 iOS のみ。iOS でのプッシュ通知の処理に Braze を使用するかどうか。React Native SDK v1.38.0と Expo Plugin v0.4.0で導入されました。
enableFirebaseCloudMessaging ブール値 Androidのみ。プッシュ通知に Firebase Cloud Messaging を使用するかどうか。React Native SDK v1.38.0と Expo Plugin v0.4.0で導入されました。
firebaseCloudMessagingSenderId 文字列 Androidのみ。Firebase Cloud Messaging の送信者 ID。React Native SDK v1.38.0と Expo Plugin v0.4.0で導入されました。
sessionTimeout 整数 アプリケーションの Braze セッションタイムアウト (秒単位)。
enableSdkAuthentication ブール値 SDK 認証機能を有効にするかどうか。
logLevel 整数 アプリケーションのログレベル。デフォルトのログレベルは8で、最小限の情報をロギングします。デバッグのために詳細ロギングを有効にするには、ログレベル0を使用します。
minimumTriggerIntervalInSeconds 整数 トリガー間の最小時間間隔 (秒単位)。デフォルトは 30 秒です。
enableAutomaticLocationCollection ブール値 位置情報の自動収集を有効にするかどうか (ユーザーが許可している場合)。
enableGeofence ブール値 ジオフェンスを有効にするかどうか。
enableAutomaticGeofenceRequests ブール値 ジオフェンスリクエストを自動で行うかどうか。
dismissModalOnOutsideTap ブール値 iOS のみ。ユーザーがアプリ内メッセージの外側をクリックしたときに、モーダルアプリ内メッセージが閉じられるかどうか。
androidHandlePushDeepLinksAutomatically ブール値 Androidのみ。Braze SDK でプッシュディープリンクが自動的に処理されるかどうか。
androidPushNotificationHtmlRenderingEnabled ブール値 Androidのみ。android.text.Html.fromHtml を使用して、プッシュ通知のテキストコンテンツを HTML として解釈およびレンダリングするかどうかを設定します。
androidNotificationAccentColor 文字列 Android のみ。Android 通知のアクセントカラーを設定します。
androidNotificationLargeIcon 文字列 Android のみ。Android 通知の大きいアイコンを設定します。
androidNotificationSmallIcon 文字列 Android のみ。Android 通知の小さいアイコンを設定します。
iosRequestPushPermissionsAutomatically ブール値 iOS のみ。アプリの起動時にユーザーにプッシュ許可を自動的に求めるかどうか。
enableBrazeIosRichPush ブール値 iOS のみ。iOS のリッチプッシュ機能を有効にするかどうか。
enableBrazeIosPushStories ブール値 iOS のみ。Braze プッシュストーリーを iOS で有効にするかどうか。
iosPushStoryAppGroup 文字列 iOS のみ。iOS プッシュストーリーに使用されるアプリグループ。

構成例:

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 SDK が動作するために必要なネイティブファイルが生成されます。

1
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 キーおよびエンドポイントを実際の値に置き換えます。

```xml <?xml version=”1.0” encoding=”utf-8”?>

YOU_APP_IDENTIFIER_API_KEY YOUR_CUSTOM_ENDPOINT_OR_CLUSTER
1
2
3
4
5
6
必要な権限をファイル `AndroidManifest.xml` に追加します。

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

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

openSession() および closeSession() への呼び出しは自動的に処理されます。 MainApplication クラスの onCreate() メソッドに次のコードを追加します。

```java import com.braze.BrazeActivityLifecycleCallbackListener;

@Override public void onCreate() { super.onCreate(); … registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener()); } ```

```kotlin 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 をインストールできます。

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

```bash

React Native New Architecture を使用してインストールする

cd ios && RCT_NEW_ARCH_ENABLED=1 pod install

React Native のレガシーアーキテクチャを使用してインストールする

cd ios && pod install ```

ステップ2.3: Braze SDK の構成

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

1
import BrazeKit

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

```swift func application( _ application:UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey :Any]? = nil ) -> Bool { // Setup Braze let configuration = Braze.Configuration( apiKey: “{BRAZE_API_KEY}”, endpoint: “{BRAZE_ENDPOINT}”) // ここでロギングを有効にし、構成をカスタマイズします。 configuration.logger.level = .info let braze = BrazeReactBridge.perform( #selector(BrazeReactBridge.initBraze(_:)), with: configuration ).takeUnretainedValue() as!Braze

1
2
3
4
5
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 で静的プロパティを作成します。

```objc - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Setup Braze BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@”{BRAZE_API_KEY}” endpoint:@”{BRAZE_ENDPOINT}”]; // ここでロギングを有効にし、構成をカスタマイズします。 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";

詳細については、サンプルプロジェクトを参照してください。

基本的な統合のテスト

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

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

1
Braze.changeUser("userId");

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

```javascript import React, { useEffect } from “react”; import Braze from “@braze/react-native-sdk”;

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

return ( <div> … </div> ) ```

その後、ダッシュボードの [ユーザー検索] で some-user-id を使用してユーザーを検索できます。そこで、セッションとデバイスデータがロギングされていることを確認できます。

「このページはどの程度役に立ちましたか?」
New Stuff!