概要
このリリースでは、AndroidおよびiOS向けのPageSense React Native Bridgeが更新され、売上目標の追跡がサポートされました。また、PageSenseUserContextと目標のプロパティが導入され、ユーザー情報の受け渡しや、関連するプロパティを使用した目標の追跡を、より簡潔で拡張性の高いAPIで行えるようになりました。
これらの追加機能には完全な下位互換性があります。従来のSDK関数を使用している既存の連携は、変更せずに引き続き動作します。
新機能
PageSenseUserContext
新しいオブジェクトでは、userIdとuserAttributesを1つの構造化コンテナーにまとめます。従来のようにuserIdとuserAttributesを個別の引数として渡す代わりに、新規SDK関数では単一のPageSenseUserContextインスタンスを受け取ります。
目標のプロパティ
売上の値など、関連するプロパティとともに目標を追跡できる新しい仕組みです。目標のプロパティは、JavaScriptからキーと値のペアからなるオブジェクトとして渡されます。ネイティブブリッジは、SDKを呼び出す前に各文字列キーを対応するネイティブ型にマッピングします。
-
Android—SDKでは、目標のプロパティをHashMap<GoalProperty, String>として受け取ります。GoalPropertyは、com.zoho.pagesense.android.abtesting.constantsで定義されている定数です。
-
iOS—SDKでは、目標のプロパティを[GoalProperty: String]として受け取ります。GoalPropertyは、PageSenseFrameworkによって公開される、小文字の生の値を持つ列挙型です。
新規SDK関数
次のコンテキストベースの関数が、JavaScriptラッパー(PageSenseSDKWrapper.js)と、AndroidおよびiOSの両方のネイティブブリッジモジュールに追加されました。
|
関数
|
説明
|
|
activateExperimentByContext(experimentName, userContext)
|
フルスタックテストをPageSenseUserContextを使用して有効にし、ユーザーに割り当てられたバリエーションを返します。
|
|
getVariationNameByContext(experimentName, userContext)
|
テストを有効にせず、PageSenseUserContextを使用してユーザーに割り当てられたバリエーションを取得します。
|
|
trackGoalByContext(goalName, userContext)
|
目標のプロパティを指定せず、PageSenseUserContextを使用して目標を追跡します。フルスタックのカスタムイベント目標に使用します。
|
|
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)。
-
Kotlinネイティブモジュールに、activateExperimentByContext、getVariationNameByContext、trackGoalByContext、trackGoalWithPropertiesByContextを追加しました。
-
GoalPropertyをcom.zoho.pagesense.android.abtesting.constantsからインポートしました。
-
非公開の検証ヘルパーとして、validateAndBuildUserContextとvalidateAndConvertGoalPropertiesNonEmptyを追加しました。
-
PageSenseSDKPackage.ktとMainApplication.ktを変更する必要はありません。
必要なSDKバージョンのアップグレード
- 売上目標の追跡を使用するには、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)。
-
Swiftネイティブモジュールに、activateExperimentByContext、getVariationNameByContext、trackGoalByContext、trackGoalWithPropertiesByContextを追加しました。
-
対応するRCT_EXTERN_METHOD宣言をObjective-Cブリッジファイル(PageSenseSDKModule.m)に追加しました。
-
非公開の検証ヘルパーとして、validateAndBuildUserContextとvalidateAndConvertGoalPropertiesNonEmptyを追加しました。
-
目標プロパティを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
|
売上目標に使用する、セント単位の売上額
|
注記
-
売上の値は、セント単位の文字列として渡す必要があります。たとえば、$100.50は'10050'として渡します。
-
引数goalPropertiesをtrackGoalByContextに指定する場合、空でないオブジェクトにする必要があります。プロパティのない目標では、引数自体を省略してください。
-
すべての新規連携では、コンテキストベースのSDK関数(activateExperimentByContext、getVariationNameByContext、trackGoalByContext)を使用してください。今後のすべての実装では、これらの使用を推奨します。