- 必要になった時点ではなく、アプリの起動時に初期化する
最初の画面が表示される前にSDKを使用できる状態にしておく必要があります。AppDelegate → application(_:didFinishLaunchingWithOptions:)、SceneDelegate → scene(_:willConnectTo:)、またはSwiftUIのAppイニシャライザーで初期化します。ユーザーが特定の画面に到達するまで待つと、それ以前の画面でテストの動作に一貫性がなくなる可能性があります。
- 1つのインスタンスをすべての場所で再利用する
PageSenseClientは一度だけ初期化し、アプリ全体で共有するように設計されています。複数のインスタンスを作成すると、ポーリングループが重複し、不要なメモリー負荷や余分なネットワーク呼び出しが発生します。シングルトンまたは共有参照として保存し、ビューコントローラー、ビューモデル、サービス全体で再利用してください。
- 安定したユーザー識別子を使用する
MurmurHashによるバケット割り当ては決定的です。同じテストでは、同じユーザーIDが常に同じバリエーションに割り当てられます。ただし、これは呼び出し間で指定するIDが変更されない場合に限ります。
適切な例:ユーザーアカウントID、顧客ID、ハッシュ化されたメールアドレス、永続的なデバイス識別子。
避けるべき例:セッションID、ランダムに生成されたID、要求単位の値。
- 匿名ユーザーとログイン済みユーザーには異なる識別子を使用する
匿名ユーザーには、一貫したデバイス単位の識別子(IDFVまたはアプリで生成した永続ID)を使用します。認証済みユーザーには、ユーザー固有の識別子を使用します。ユーザーがログインまたはログアウトした際は、識別情報の切り替えを適切に処理してください。
同じセッション内で識別子を混在させると、バリエーションの割り当てに一貫性がなくなり、データの信頼性が低下します。
- 適切なポーリング間隔を設定する
初期設定の5分は、ほとんどのアプリに適しています。これより短い間隔は設定できません(SDKによって最短5分に制限されています)。一方、間隔を大幅に長くすると、テストの変更がユーザーに反映されるまで時間がかかります。ほとんどの本番環境では、5~10分が最適です。
- メインスレッドをブロックしない
SDKはネットワーク処理と計算処理を非同期で実行します。SDKのコールバックには完了ハンドラーを使用し、結果を取得した場合にのみUIの更新をメインスレッドに渡してください。
-
swift
-
DispatchQueue.main.async {
-
// 割り当てられたバリエーションに基づいてUIを変更
-
}
デバッグとトラブルシューティング
最初にDEBUGログを有効にする
問題が発生した場合は、まずここから確認します。
- swift
- letsdkOptions = PageSenseSDKOptions()
- sdkOptions.logLevel = .DEBUG
Xcodeコンソールでログを表示するには、[表示]→[デバッグエリア]→[コンソールをアクティブにする]の順に選択します。
DEBUGモードでは、次の情報が表示されます。
-
SDKの初期化ステータス
-
プロジェクトの設定の取得と同期
-
テストの評価フロー
-
目標追跡イベント
本番環境にリリースする前に、.infoまたは.errorに戻してください。
一般的な問題と解決方法:
|
症状
|
考えられる原因
|
解決方法
|
|
APIがnilを返し、テストのログがない
|
API呼び出しの前にSDKが初期化されていない、または認証情報が無効
|
アプリの起動時に初期化し、accountId、sdkKey、projectnameを検証する
|
|
activateExperimentまたはgetVariationNameがnilを返す
|
ユーザーが対象条件を満たしていない、またはトラフィックの割り当て対象外
|
ユーザー属性がテストの対象条件と一致していることを確認し、テストが有効であることを確認する
|
|
PageSenseの変更がアプリに表示されない
|
ポーリングの遅延、アプリがバックグラウンドのままになっている、またはネットワークの問題
|
アプリをフォアグラウンドに戻して同期を開始し、ネットワークとポーリング設定を確認する
|
|
レポートにコンバージョンデータがない
|
ユーザーが対象条件を満たしていない、目標名が間違っている、または目標が設定されていない
|
テストの設定で目標を設定し、APIに渡す目標名を検証する
|
バリエーションの割り当てを手順ごとにデバッグする。
-
ログレベルを.debugに設定し、Xcodeコンソールで評価ログを確認します。
-
入力内容を確認します—experimentName、userId、userAttributesがすべて正しくなければなりません。値が1つでも間違っていると、エラーが表示されないまま失敗します。
-
ターゲティングを検証します—渡しているuserAttributesが、PageSenseで設定されているターゲティングルールを実際に満たしていることを確認します。
-
安定したユーザーIDを使用します—セッションをまたいで同じユーザーIDを使用してテストし、一貫して同じバケットに割り当てられることを確認します。
-
さまざまなシナリオでテストします—異なるユーザーIDと属性の組み合わせを試し、バリエーションの分布が想定どおりに機能していることを検証します。