Skip to content

セッションを追跡する

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

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

セッションとは、Braze SDKがアプリ起動後のユーザーアクティビティを追跡する期間を指す。また、 changeUser() メソッドを呼び出すことで、強制的に新しいセッションを作ることもできる。

デフォルトでは、セッションはbraze.openSession() を最初にコールしたときに始まる。セッションは、30 分間アクティブにならない限り(デフォルトのセッションタイムアウトを変更するか、ユーザーがアプリを閉じない限り)、アクティブのままである。

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

closeSession() を呼んでも、すぐにセッションは終了しない。その代わり、ユーザーが別のアクティビティを開始することによってopenSession() が再度呼び出されなければ、10秒後にセッションを終了する。

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

アプリがバックグラウンドになると、UIApplicationDidEnterBackgroundNotification 、トリガーがかかる。アプリがフォアグラウンドに戻ったとき、SDKはセッションが開始してから10秒以上経過しているかどうかをチェックする(デフォルトのセッションタイムアウトを変更しない限り)。その場合、新しいセッションが始まる。

セッション更新の購読

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

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

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

セッションは、セッションの数s、最後に使用された日付、および最初に使用された日付を示すユーザープロファイルの概観を示します。

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

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

デフォルトでは、セッションタイムアウトは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;
New Stuff!