Skip to content

トラックセッション

Braze SDK を使用してセッションを追跡する方法について説明します。

セッションのライフサイクルについて

セッションとは、Braze SDKがアプリ起動後にユーザーの活動をトラッキングする期間を指す。また、メソッドchangeUser()を呼び出すことで新しいセッションを強制的に開始できる。

デフォルトでは、セッションは最初に呼び出された時点で開始braze.openSession()される。セッションは、最大30 分間操作がない状態が続くと終了する(デフォルトのセッションタイムアウトを変更しない限り、またはユーザーがアプリを閉じる場合を除く)。

デフォルトでは、セッションはが最初に呼び出されたopenSession()時に開始される。アプリがバックグラウンドに移行した後、再びフォアグラウンドに戻った場合、SDKはセッション開始から10秒以上経過しているかどうかを確認する(デフォルトのセッションタイムアウトを変更しない限り)。そうであれば、新しいセッションが始まる。ユーザーがバックグラウンドでアプリを閉じた場合、セッションデータはアプリを再起動するまでBrazeに送信されない可能性があることに留意せよ。

呼び出しはセッションをcloseSession()直ちに終了させない。代わりに、ユーザーが別のアクティビティを開始して再度呼び出さないopenSession()場合、10秒後にセッションを終了する。

デフォルトでは、セッションは を呼び出した時に開始Braze.init(configuration:)される。これは通知UIApplicationWillEnterForegroundNotificationがトリガーされた時に発生する。つまりアプリがフォアグラウンドに入ったことを意味する。

アプリがバックグラウンドに移行すると、トリガーUIApplicationDidEnterBackgroundNotificationされる。アプリはバックグラウンドではアクティブなセッションを維持しない。アプリがフォアグラウンドに戻った時、SDKはセッション開始からの経過時間をセッションタイムアウトと比較する(デフォルトのセッションタイムアウトを変更しない限り)。セッション開始からの時間がタイムアウト期間を超えた場合、新しいセッションが始まる。

非活動状態の定義

Web SDKでセッションライフサイクルを効果的に管理するには、非アクティブ状態の定義と測定方法を理解することが重要だ。非アクティブ状態とは、Braze Web SDKがユーザーからのトラッキングイベントを一切検出しない期間を指す。

不活動がどのように測定されるか

Web SDKは、SDKがトラッキングするイベントに基づいて非アクティブ状態を追跡する。SDKは内部タイマーを維持しており、トラッキング対象のイベントが送信されるたびにリセットされる。設定されたタイムアウト期間内にSDKがトラッキングするイベントが発生しない場合、セッションは非アクティブと見なされ終了する。

Web SDKにおけるセッションライフサイクルの実装方法の詳細については、Braze Web SDK GitHubリポジトリ内のセッション管理コードを参照のこと。

デフォルトで活動と見なされるもの:

デフォルトでは活動としてカウントされないもの:

  • 別のブラウザタブに切り替える
  • ブラウザのウィンドウを最小化する
  • ブラウザのフォーカスまたはブラーイベント
  • ページ上のスクロールやマウスの動き

セッションタイムアウトの設定

デフォルトでは、Web SDKは30分間トラッキングイベントが発生しない場合、セッションを非アクティブと見なす。SDKを初期化する際に、このsessionTimeoutInSecondsしきい値をパラメータでカスタマイズできる。このパラメータの設定方法の詳細(コード例を含む)については、「デフォルトのセッションタイムアウトの変更」を参照せよ。

例: 非アクティブ状態のシナリオを理解する

次のシナリオを考えてください:

  1. ユーザーがあなたのWeb サイトを開くと、SDKはセッションを開始するために呼び出すbraze.openSession()
  2. ユーザーは別のブラウザタブに切り替えて、30分間別のWeb サイトを閲覧する。
  3. この間、Web サイトではSDKがトラッキングするイベントは発生しない。
  4. 30分間操作がないと、セッションは自動的に終了する。
  5. ユーザーがあなたのWeb サイトのタブに切り替え、SDKイベント(ページ閲覧やコンテンツ操作など)をトリガーすると、新しいセッションが開始される。

顧客非アクティブ状態のトラッキング

ブラウザの可視性やタブの切り替えに基づいて非アクティブ状態をトラッキングする必要がある場合、JavaScriptコードにカスタムイベントリスナーを実装せよ。ブラウザのイベント(例:)を使ってvisibilitychangeユーザーがページを離れたタイミングを検知し、必要に応じてカスタムイベントを手動でbraze.openSession()Brazeに送信するか、を呼び出す。

1
2
3
4
5
6
7
8
9
10
11
// Example: Track when user switches away from tab
document.addEventListener('visibilitychange', function() {
  if (document.hidden) {
    // User switched away - optionally log a custom event
    braze.logCustomEvent('tab_hidden');
  } else {
    // User returned - optionally start a new session and/or log an event
    // braze.openSession();
    braze.logCustomEvent('tab_visible');
  }
});

カスタムイベントの記録に関する詳細情報は、カスタムイベントの記録を参照せよ。セッションのライフサイクルとタイムアウト設定の詳細については、「デフォルトのセッションタイムアウトの変更」を参照せよ。

セッション更新の購読

ステップ1:更新を購読する

セッション更新にサブスクライブするには、subscribeToSessionUpdates() メソッドを使用します。

現時点では、Web Braze SDK のセッション更新のサブスクライブはサポートされていません。

1
2
3
4
5
6
7
8
Braze.getInstance(this).subscribeToSessionUpdates(new IEventSubscriber<SessionStateChangedEvent>() {
  @Override
  public void trigger(SessionStateChangedEvent message) {
    if (message.getEventType() == SessionStateChangedEvent.ChangeType.SESSION_STARTED) {
      // A session has just been started
    }
  }
});
1
2
3
4
5
Braze.getInstance(this).subscribeToSessionUpdates { message ->
  if (message.eventType == SessionStateChangedEvent.ChangeType.SESSION_STARTED) {
    // A session has just been started
  }
}

セッション終了コールバックを登録すると、アプリがフォアグラウンドに戻ったときに起動します。セッション時間は、アプリが開いたときまたはフォアグラウンドになったときから、アプリが閉じたときまたはバックグラウンドになったときまで測定されます。

1
2
3
4
5
6
7
8
9
10
11
// This subscription is maintained through a Braze cancellable, which will observe changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
let cancellable = AppDelegate.braze?.subscribeToSessionUpdates { event in
  switch event {
  case .started(let id):
    print("Session \(id) has started")
  case .ended(let id):
    print("Session \(id) has ended")
  }
}

非同期ストリームにサブスクライブするには、代わりにsessionUpdatesStream を使用できます。

1
2
3
4
5
6
7
8
for await event in braze.sessionUpdatesStream {
  switch event {
  case .started(let id):
    print("Session \(id) has started")
  case .ended(let id):
    print("Session \(id) has ended")
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// This subscription is maintained through a Braze cancellable, which will observe changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
BRZCancellable *cancellable = [AppDelegate.braze subscribeToSessionUpdates:^(BRZSessionEvent * _Nonnull event) {
  switch (event.state) {
    case BRZSessionStateStarted:
      NSLog(@"Session %@ has started", event.sessionId);
      break;
    case BRZSessionStateEnded:
      NSLog(@"Session %@ has ended", event.sessionId);
      break;
    default:
      break;
  }
}];

React Native SDKは、セッションの更新を直接購読するためのメソッドを公開していない。セッションのライフサイクルは基盤となるネイティブSDKによって管理される。更新を購読するには、AndroidまたはSWIFTタブのネイティブプラットフォーム向けアプローチを使用する。

ステップ2:セッショントラッキング (オプション) をテストする

セッショントラッキングをテストするには、デバイスでセッションを開始し、Braze ダッシュボードを開き、関連するユーザーを検索します。ユーザープロファイルで、[セッションの概要] を選択します。メトリクスが期待どおりに更新された場合、セッション追跡は正常に動作しています。

ユーザープロファイルのセッション概要セクションには、セッション数、最終利用日、初回利用日が表示される。

デフォルトのセッションタイムアウトの変更

セッションが自動的にタイムアウトするまでの時間を変更できます。

デフォルトでは、セッションタイムアウトは30 分に設定されます。これを変更するには、sessionTimeoutInSeconds オプションをinitialize 関数に渡します。1 以上の任意の整数に設定できます。

1
2
// Sets the session timeout to 15 minutes instead of the default 30
braze.initialize('YOUR-API-KEY-HERE', { sessionTimeoutInSeconds: 900 });

デフォルトでは、セッションタイムアウトは10秒に設定されます。これを変更するには、braze.xml ファイルを開き、com_braze_session_timeout パラメータを追加します。1 以上の任意の整数に設定できます。

1
2
<!-- Sets the session timeout to 60 seconds. -->
<integer name="com_braze_session_timeout">60</integer>

デフォルトでは、セッションタイムアウトは10秒に設定されます。これを変更するには、configuration オブジェクトでinit(configuration) に渡されるsessionTimeout を設定します。1 以上の任意の整数に設定できます。

1
2
3
4
5
6
7
8
// Sets the session timeout to 60 seconds
let configuration = Braze.Configuration(
  apiKey: "<BRAZE_API_KEY>",
  endpoint: "<BRAZE_ENDPOINT>"
)
configuration.sessionTimeout = 60;
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
1
2
3
4
5
6
7
// Sets the session timeout to 60 seconds
BRZConfiguration *configuration =
  [[BRZConfiguration alloc] initWithApiKey:brazeApiKey
                                  endpoint:brazeEndpoint];
configuration.sessionTimeout = 60;
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;

React Native SDKはセッション管理のためにネイティブSDKに依存している。デフォルトのセッションタイムアウトを変更するには、ネイティブレイヤーで設定する。

  • Android :ファイルbraze.xmlcom_braze_session_timeout設定せよ。詳細は、Androidタブを選択せよ。
  • iOS:オブジェクトBraze.ConfigurationsessionTimeout設定せよ。詳細については、SWIFTタブを選択せよ。
New Stuff!