追跡セッション
Braze SDK を使用してセッションを追跡する方法について説明します。
リストされていないラッパーSDK の場合は、代わりに関連するネイティブAndroid またはSwift メソッドを使用します。
セッションライフサイクルについて
セッションとは、Braze SDK が起動後にアプリ内のユーザーアクティビティを追跡する時間のことです。 changeUser()
メソッド を呼び出して、新しいセッションを強制することもできます。
Android のactivity lifecycle callback) を設定した場合、Braze はアプリの各アクティビティに対して自動的にopenSession()
とcloseSession()
を呼び出します。
デフォルトでは、openSession()
が最初に呼び出されたときにセッションが開始されます。アプリがバックグラウンドに移動した場合、セッションは10
秒間アクティブのままになります(デフォルトのセッションタイムアウトを変更しない限り)。そうしないと、ユーザーはアプリを閉じます。ユーザーがバックグラウンドでアプリを閉じた場合、セッションデータはアプリを再び開くまでブレーズに設定されないことがあります。
closeSession()
を呼び出すと、セッションはすぐに終了しません。代わりに、別のアクティビティを開始するユーザがopenSession()
を再度呼び出さない場合、10 秒後にセッションが終了します。
デフォルトでは、Braze.init(configuration:)
を呼び出すとセッションが開始されます。これは、UIApplicationWillEnterForegroundNotification
通知がトリガーされたときに発生します。これは、アプリがフォアグラウンドに入ったことを意味します。
アプリがバックグラウンドに移動すると、UIApplicationDidEnterBackgroundNotification
がトリガーされます。セッションは、10
秒間アクティブのままになります(デフォルトのセッションタイムアウトを変更しない限り)。そうしないと、ユーザーはアプリを閉じます。
デフォルトでは、最初にbraze.openSession()
を呼び出すとセッションが開始されます。セッションは、最大30
分間、非アクティブのままになります( デフォルトのセッションタイムアウト を変更しない限り)。または、ユーザーがアプリを閉じるまで、セッションはアクティブのままになります。
セッション更新の購読
ステップ1:更新を購読する
セッション更新にサブスクライブするには、subscribeToSessionUpdates()
メソッドを使用します。
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;
}
}];
現時点では、Web Braze SDK のセッション更新のサブスクライブはサポートされていません。
ステップ2:テストセッショントラッキング(オプション)
セッショントラッキングをテストするには、デバイスでセッションを開始し、Braze ダッシュボードを開き、関連するユーザーを検索します。ユーザープロファイルで、Sessions Overviewを選択します。メトリクスが期待どおりに更新された場合、セッション追跡は正常に動作しています。
アプリ固有の詳細は、複数のアプリを使用したユーザーにのみ表示されます。
デフォルトのセッションタイムアウトの変更
セッションが自動的にタイムアウトするまでの時間を変更できます。
デフォルトでは、セッションタイムアウトは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;
デフォルトでは、セッションタイムアウトは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 });
セッションタイムアウトを設定すると、すべてのセッションセマンティクスが設定されたタイムアウトに自動的に拡張されます。