- オンデマンドではなく、アプリの起動時に初期化
最初の画面が表示される前に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と属性の組み合わせを試し、パターンの割り当てが想定どおりに行われることを確認してください。