セッショントラッキング
Braze SDK では、ユーザーエンゲージメントやユーザーの理解に不可欠なその他の分析を計算するため、Braze ダッシュボードで使用されるセッションデータがレポートされます。
SDK では、以下のセッションセマンティクスに基づいて、Braze ダッシュボード内で表示可能なセッションの長さとセッション数を考慮した「セッション開始」と「セッション終了」のデータポイントが生成されます。
セッションライフサイクル
Braze.init(configuration:)
を呼び出すと、セッションが開始されます。デフォルトでは、UIApplicationWillEnterForegroundNotification
通知の発行時 (アプリがフォアグラウンドになった時点) にこの動作が発生します。セッション終了は、アプリがフォアグラウンドでなくなった時点 (UIApplicationDidEnterBackgroundNotification
通知の発行時やアプリの終了時など) に発生します。
新しいセッションを強制する必要がある場合、ユーザーを変更することで強制が可能になります。
セッションタイムアウトのカスタマイズ
init(configuration)
に渡された configuration
オブジェクトで、sessionTimeout
を希望する整数値に設定できます。
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;
セッションタイムアウトを設定した場合、セッションセマンティクスの長さはすべてそのカスタマイズされたタイムアウトになります。
sessionTimeout
の最小値は 1 秒です。デフォルト値は 10 秒です。
セッショントラッキングをテストする
ユーザー経由でセッションを検出するには、ダッシュボードでユーザーを見つけ、ユーザープロファイルの「セッションの概要」に移動する。「セッション」指標が想定どおりに増加していることを確認することで、セッショントラッキングが機能していることを確認できます。アプリ固有の詳細は、ユーザーが複数のアプリを使用した後に表示されます。
アプリ別の詳細は、ユーザーが複数のアプリを使用した場合にのみ表示されます。
セッション更新の購読
セッションの更新をリッスンするには、subscribeToSessionUpdates(_:)
メソッドを使用します。セッション開始と終了のイベントは、アプリがフォアグラウンドで実行されているときのみ記録される。セッション終了イベントにコールバックを登録し、アプリがバックグラウンドになった場合、アプリが再びフォアグラウンドになったときにコールバックが起動する。ただし、セッションの継続時間は、アプリを開くかフォアグラウンドにしてから、アプリを閉じるかバックグラウンドにするまでの時間として測定されます。
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")
}
}
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;
}
}];
また、Swift では sessionUpdatesStream
AsyncStream
を使用して非同期変更を監視できます。
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")
}
}