概要
このリリースでは、AndroidおよびiOS向けのPageSense React Native Bridgeが更新され、収益目標のトラッキングに対応しました。今回の更新では、PageSenseUserContextと目標プロパティが導入され、ユーザー情報の受け渡しや、関連プロパティを含む目標のトラッキングを行うためのAPIが、より整理され拡張しやすくなりました。
これらの追加機能には完全な後方互換性があります。従来のSDK関数を使用している既存の連携は、変更せずに引き続き動作します。
新機能
PageSenseUserContext
新しいオブジェクトで、userIdとuserAttributesを単一の構造化コンテナーにまとめます。userIdとuserAttributesを個別の引数として渡す代わりに、新しいSDK関数では単一のPageSenseUserContextインスタンスを受け取ります。
目標プロパティ
収益値などの関連プロパティとともに目標をトラッキングできる新しい仕組みです。目標プロパティは、JavaScriptからキーと値のオブジェクトとして渡されます。ネイティブブリッジは、SDKを呼び出す前に各文字列キーを対応するネイティブ型にマッピングします。
-
Android—目標プロパティは、SDKによってHashMap<GoalProperty, String>として受け取られます。ここで、GoalPropertyはcom.zoho.pagesense.android.abtesting.constantsで定義されている定数です。
-
iOS—目標プロパティは、SDKによって[GoalProperty: String]として受け取られます。ここで、GoalPropertyはPageSenseFrameworkによって公開されている、小文字のraw valueを持つ列挙型です。
新しいSDK関数
次のコンテキストベースの関数が、JavaScriptラッパー(PageSenseSDKWrapper.js)およびAndroidとiOSの両方のネイティブブリッジモジュールに追加されました。
|
関数
|
説明
|
|
activateExperimentByContext(experimentName, userContext)
|
FullStack実験をPageSenseUserContextを使用して有効化し、ユーザーに割り当てられたバリエーションを返します。
|
|
getVariationNameByContext(experimentName, userContext)
|
実験を有効化せずに、PageSenseUserContextを使用してユーザーに割り当てられたバリエーションを取得します。
|
|
trackGoalByContext(goalName, userContext)
|
目標プロパティなしで、PageSenseUserContextを使用して目標をトラッキングします。FullStackのカスタムイベント目標に使用します。
|
|
trackGoalByContext(goalName, userContext, goalProperties)
|
目標プロパティ付きで、PageSenseUserContextを使用して目標をトラッキングします。収益目標に使用します。
|
関数の比較
|
目的
|
旧SDK関数
|
新SDK関数
|
|
実験の有効化
|
activateExperiment(experimentName, userId, userAttributes)
|
activateExperimentByContext(experimentName, userContext)
|
|
バリエーション名の取得
|
getVariationName(experimentName, userId, userAttributes)
|
getVariationNameByContext(experimentName, userContext)
|
|
目標のトラッキング(プロパティなし)
|
trackGoal(experimentName, userId, goalName, userAttributes)
|
trackGoalByContext(goalName, userContext)
|
|
目標のトラッキング(プロパティあり)
|
非対応
|
trackGoalByContext(goalName, userContext, goalProperties)
|
後方互換性
新しいコンテキストベースの関数は、既存のSDK関数を置き換えるものではなく、追加されるものです。旧SDK関数と新SDK関数の両方がサポートされています。既存の連携は、変更せずに引き続き動作します。
Android
-
PageSenseUserContextのサポートをKotlinネイティブモジュール(PageSenseSDKModule.kt)に追加しました。
-
activateExperimentByContext、getVariationNameByContext、trackGoalByContext、およびtrackGoalWithPropertiesByContextをKotlinネイティブモジュールに追加しました。
-
GoalPropertyのインポートをcom.zoho.pagesense.android.abtesting.constantsから追加しました。
-
validateAndBuildUserContextおよびvalidateAndConvertGoalPropertiesNonEmptyのプライベート検証ヘルパーを追加しました。
-
PageSenseSDKPackage.ktまたはMainApplication.ktへの変更は不要です。
必要なSDKバージョンのアップグレード
- Revenue Goalのトラッキングを使用するには、PageSense Android SDKの依存関係をバージョン1.1.3以降にアップグレードする必要があります(android/app/build.gradle)。
- gradle
- dependencies {
- implementation('com.facebook.react:react-android')
- implementation('com.zoho.pagesense:pagesense:1.1.3')
- }
更新後、Android StudioでGradle同期を実行し、アプリケーションを再ビルドしてください。
iOS
-
PageSenseUserContextのサポートをSwiftネイティブモジュール(PageSenseSDKModule.swift)に追加しました。
-
activateExperimentByContext、getVariationNameByContext、trackGoalByContext、およびtrackGoalWithPropertiesByContextをSwiftネイティブモジュールに追加しました。
-
対応するRCT_EXTERN_METHOD宣言をObjective-Cブリッジファイル(PageSenseSDKModule.m)に追加しました。
-
validateAndBuildUserContextおよびvalidateAndConvertGoalPropertiesNonEmptyのプライベート検証ヘルパーを追加しました。
-
Goalプロパティは、JavaScriptの文字列キーからGoalPropertyの列挙型ケースにGoalProperty(rawValue:)を使用してマッピングされます。
JavaScriptラッパー
-
GoalProperty定数オブジェクトをPageSenseSDKWrapper.jsからエクスポートされるように追加しました。
-
activateExperimentByContext、getVariationNameByContext、およびtrackGoalByContextラッパー関数を追加しました。
-
_validateUserContextおよび_validateGoalPropertiesNonEmptyのプライベート検証ヘルパーを追加しました。
-
GoalProperty.REVENUE定数には文字列値'revenue'が保持され、AndroidではネイティブのGoalProperty.REVENUE定数に、iOSではGoalProperty.revenue列挙型ケースにマッピングされます。
GoalPropertyリファレンス
|
JS定数
|
文字列値
|
Androidネイティブ定数
|
iOSネイティブ列挙型ケース
|
用途
|
|
GoalProperty.REVENUE
|
'revenue'
|
GoalProperty.REVENUE
|
GoalProperty.revenue
|
Revenue Goalで使用される、セント単位の収益額
|
メモ
-
収益の値は、セント単位の文字列として渡す必要があります。たとえば、$100.50 は '10050' として渡します。
-
goalPropertiesをtrackGoalByContextに指定する場合は、空でないオブジェクトである必要があります。プロパティのない目標の場合は、引数を完全に省略してください。
-
新しい連携ではすべて、コンテキストベースのSDK関数(activateExperimentByContext、getVariationNameByContext、trackGoalByContext)を使用してください。これらは、今後のすべての実装に推奨される方法です。