UniApp ミニプログラム JavaScript SDK リモート設定¶
この記事では、UniApp ミニプログラム JavaScript SDK 2.2.19 以降のリモート設定、強制サンプリング、および Session の動作について説明します。
この記事は
rum-uniappJavaScript SDK に適用されます。他のページで紹介されているGCUniPlugin-*ネイティブモジュールには適用されません。
リモート設定を有効にする¶
初期化時に remoteConfiguration: true を設定します。SDK は直ちにローカル設定に従って起動し、リモート設定のリクエストはファーストビューの収集をブロックしません。リクエストが返された後、サポートされている設定項目は実行時に更新されます。
以前のバージョンでは remoteConfigration というスペルが使用されていましたが、2.2.19 でもこのパラメータは互換性があります。ただし、新しいプロジェクトでは remoteConfiguration を使用してください。
const { datafluxRum } = require('@cloudcare/rum-uniapp')
const rumConfig = {
applicationId: 'appid_xxxxxxx',
site: 'https://rum-openway.guance.com',
clientToken: 'client_token_xxxxx',
service: 'uniapp-demo',
env: 'production',
version: '1.0.0',
sessionSampleRate: 20,
allowedTracingOrigins: ['https://api.example.com'],
allowTraceHeaderWithoutSession: true,
remoteConfiguration: true,
remoteConfigurationFetchTimeout: 3000,
}
// Vue2
datafluxRum.init(Vue, rumConfig)
// Vue3 プロジェクトでは以下を使用:
// datafluxRum.initVue3(rumConfig)
| パラメータ | 型 | デフォルト値 | 説明 |
|---|---|---|---|
sessionSampleRate |
number | 100 |
sampleRate の互換別名。範囲は 0 から 100 です。両方が設定されている場合は sampleRate が優先されます |
allowedTracingOrigins |
Array | [] |
Trace Header の注入を許可するリクエスト Origin のリスト。文字列と正規表現をサポートします |
allowTraceHeaderWithoutSession |
boolean | false |
現在の Session がサンプリングにヒットしなかった場合でも、allowedTracingOrigins にヒットしたリクエストに Trace Header を注入するかどうか。有効にしても、この Session の RUM データが報告されることはありません |
remoteConfiguration |
boolean | false |
リモート設定を非同期で取得して適用するかどうか |
remoteConfigration |
boolean | false |
旧スペルの互換項目。新しいプロジェクトでの使用は推奨されません |
remoteConfigurationFetchTimeout |
number | 3000 |
リモート設定リクエストのタイムアウト時間(ミリ秒単位)。リクエストが失敗するかタイムアウトした場合、ローカル設定が引き続き使用されます |
有効にすると、SDK は以下のアドレスにリクエストを送信します:
パブリックネットワークの DataWay を使用する場合、リクエストには clientToken も含まれます。対応するドメインをミニプログラムプラットフォームのリクエスト許可ドメインホワイトリストに追加する必要があります。
設定の配信形式¶
リモート設定のキーは以下の形式を使用します:
例:
SDK は R.{applicationId}. プレフィックスを削除します。ビジネスコードは getRemoteConfiguration() を使用して取得します:
現在、リモート更新をサポートしている設定は次のとおりです:
sampleRate
sessionSampleRate
service
env
version
trackInteractions
traceType
traceId128Bit
allowedTracingOrigins
allowTraceHeaderWithoutSession
sessionSampleRate は sampleRate に従って適用されます。vip_id などのカスタムフィールドは SDK の動作を自動的に変更しないため、ビジネスコードで読み取って個別に処理する必要があります。
サンプリング未ヒット Session の Trace Header¶
デフォルトでは、現在の Session が RUM サンプリングにヒットした場合のみ、SDK は allowedTracingOrigins にヒットしたリクエストに Trace Header を注入します。
allowTraceHeaderWithoutSession: true を設定すると、現在の Session がサンプリングにヒットしなかった場合でも、SDK は条件に一致するリクエストに Trace Header を注入します。この設定はサンプリングを強制したり、新しい Session を作成したりすることはなく、サンプリングにヒットしなかった Session の View、Action、Resource、Error などの RUM データを報告することもありません。
const rumConfig = {
sessionSampleRate: 0,
traceType: 'w3c_traceparent',
allowedTracingOrigins: ['https://api.example.com'],
allowTraceHeaderWithoutSession: true,
}
この設定はリモート更新をサポートしています。リモート値が返されるまではローカル設定に従って処理され、返された後は後続のリクエストにのみ影響します。
リモート設定の取得¶
init() または initVue3() の後に getRemoteConfiguration(callback) を呼び出します:
datafluxRum.getRemoteConfiguration(function (remoteConfig) {
console.log('remote config:', remoteConfig)
})
- リクエストが完了していない場合、コールバックはリクエストの完了を待ちます。
- リクエストがすでに完了している場合、コールバックはキャッシュされた結果を直ちに受信し、再度リクエストを発行することはありません。
- 各コールバックは独立したコピーを受け取ります。返されたオブジェクトを変更しても、SDK の内部設定は変更されません。
- リモート設定が有効になっていない場合、リクエストが失敗した場合、タイムアウトした場合、または返された内容が解析できない場合、コールバックは空のオブジェクト
{}を受け取ります。
現在の Session を強制収集する¶
setForcedSession() は現在の Session を強制的に収集するために使用されます。ローカルまたはリモートのサンプリングレートにヒットしなかった場合でも、呼び出し後の RUM データは引き続き報告され、次の内容が含まれます:
次の例では、リモートから配信された VIP ユーザーリストに基づいて強制収集を行います:
const currentUserId = 'user-1'
datafluxRum.setUser({ id: currentUserId })
datafluxRum.getRemoteConfiguration(function (remoteConfig) {
let vipIds = remoteConfig && remoteConfig.vip_id
if (typeof vipIds === 'string') {
try {
vipIds = JSON.parse(vipIds)
} catch (error) {
vipIds = []
}
}
if (Array.isArray(vipIds) && vipIds.map(String).indexOf(currentUserId) !== -1) {
datafluxRum.setForcedSession()
datafluxRum.addRumGlobalContext('vip_force_collect', true)
}
})
setForcedSession() は呼び出し後のデータにのみ影響し、以前に破棄されたデータを再送信することはありません。強制状態は現在の Session にのみ属します。Session が期限切れになると、最新のサンプリングレートに従って再計算されます。
Session と実行時の動作¶
- Session は
applicationIdごとに独立して保存されます。異なる RUM アプリケーション間で Session ID やサンプリング結果が再利用されることはありません。 - 15 分間連続してアクティビティがない場合、新しい Session が作成されます。1 つの Session の最大期間は 4 時間です。
- ページへの進入、クリック、タッチ、入力、および宣言されたページスクロールによって Session の有効期限が延長されます。
trackInteractionsを無効にすると、自動 Action 収集が停止されるだけで、Session のアクティビティ認識には影響しません。 - リモート設定が返される前のデータはローカル設定に従って処理され、遡って再計算されることはありません。
- 今回の初期化で新しく作成され、まだ強制サンプリングされていない Session の場合、リモートサンプリングレートが返された後にサンプリング結果を再計算できます。ストレージから復元された Session は、元のサンプリング決定を保持します。
- SDK が
uni.requestとuni.downloadFileをプロキシする場合、ビジネス呼び出しの元の戻り値と Promise の動作が維持されます。