モバイル リアルユーザーモニタリングのセッションリプレイ

セッションリプレイを使用すると、クリック、スクロール、ナビゲーションなどのインタラクションを記録することで、モバイルアプリケーションでのユーザーアクティビティをモニターできます。これらのインタラクションを、詳細なセッションメタデータとともに、ビデオのようなダイナミックなプロセスとしてキャプチャします。これによりチームは、ユーザー体験に関する明確な洞察を、特に問題が発生した場合に、得られます。セッションのリプレイを見ると、次のことができます。
  • ユーザーエクスペリエンスを最適化する。

  • アプリケーションクラッシュのエラーをデバッグする。

  • アプリケーションが低速である理由を診断します。

セッション リプレイ ライセンス

セッションリプレイは、RUM Peak、Browser RUM-Pro、Browser RUM-Peak、Mobile RUM-Pro、および Mobile RUM-Peak パッケージで利用可能なアドオンライセンスです。詳細については、Session Replay を参照してください。

前提条件

セッションリプレイを使用するには、次の条件が満たされていることを確認してください。
  • コントローラ 25.10 以降

  • EUM サーバー 25.10 以降

  • iOS エージェント 25.9 以降

  • Android エージェント 25.9 以降

セッションリプレイを使用するには、管理コンソールにログインして次のプロパティを追加します。
  1. Account Settings に進みます。

  2. [Add Property] をクリックして [session.replay.enabled] を追加します。このプロパティの値を true に設定します。

前提条件

セッションリプレイを使用するには、次の条件が満たされていることを確認してください。
  • コントローラ 25.10 以降

  • EUM サーバー 25.10 以降

  • iOS エージェント 25.9 以降

  • Android エージェント 25.9 以降

セッションリプレイを使用するには、管理コンソールにログインして次のプロパティを追加します。
  1. Account Settings に進みます。

  2. [Add Property] をクリックして [session.replay.enabled] を追加します。このプロパティの値を true に設定します。

セッションリプレイをレポートするための iOS エージェントの設定

モバイルアプリケーションのセッションリプレイをレポートするには、次のように iOS エージェントを設定する必要があります。
注: iOS エージェントは、さまざまなサービス(コレクタ/スクリーンショットサービス)へのコール発信に使用するパスを認識しています。たとえば、EUM Server の URL が https://myEUMServerURL.com:7001 の場合、iOS エージェントは EUM コレクタへリクエストを行うために https://myEUMServerURL.com:7001/eumcollector を使用することを認識します。コレクタ URL を指定することで、スクリーンショットサービスに EUM クラウドの SaaS 展開を使用することはできなくなります。
Objective C
PYTHON
#import <ADEumInstrumentation/ADEumInstrumentation.h>
#import "AppDelegate.h"
  
    // ...
    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        ADEumAgentConfiguration *config = [[ADEumAgentConfiguration alloc] initWithAppKey:<#EUM_APP_KEY#>];
		// Set the Collector URL, Screenshot Service URL, and Session Replay URL to the EUM Server URL.
	    config.collectorURL = <#COLLECTOR_URL:PORT#>;
	    config.screenshotURL = adeumAgentConfig.collectorURL;
        config.sessionReplayURL = <#SESSIONREPLAY_URL:PORT#>;
        [ADEumInstrumentation initWithConfiguration: config];
        // other tasks
        return YES;
     }
Swift
JAVASCRIPT
#import <ADEumInstrumentation/ADEumInstrumentation.h>
#import "AppDelegate.h"
  
    // ...
     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let config = ADEumAgentConfiguration(appKey: <#EUM_APP_KEY#>)
        // Set the Collector URL, Screenshot Service URL, and Session Replay URL to the EUM Server URL.
	    config.collectorURL = <#COLLECTOR_URL:PORT#>
	    config.screenshotURL = config.collectorURL
        config.sessionReplayURL = <#SESSIONREPLAY_URL:PORT#>
        ADEumInstrumentation.initWith(config)
        // other tasks
        return true
    }
// ...
セッションの記録中にユーザーのプライバシーを保護するには、デフォルトですべてのテキストフィールドと入力フィールドを非表示にするオプションを有効にして、機密データをマスクするようにセッションリプレイを設定します。詳細については、「機密データの取り扱い」を参照してください。

セッションリプレイをレポートするための Android エージェントの設定

モバイルアプリケーションのセッションリプレイをレポートするには、次のように Android エージェントを設定する必要があります。
  1. 以下の方法でエージェントを初期化します。
    • .withSessionReplayEnabled(true)

    • .withBlobServiceURL(configHelper.getSessionReplayUrl())

    • (オプション)デフォルト設定:RenderingMode.NATIVE_MODE.withSessionReplayRenderingMode(RenderingMode.WIREFRAME_MODE)

    PYTHON
    import com.appdynamics.eumagent.runtime.Instrumentation;
    ...
    @Override public void onCreate(Bundle savedInstanceState) {
      Instrumentation.start(AgentConfiguration.builder()
        .withAppKey("<EUM_APP_KEY>")
        .withContext(getApplicationContext())
        // The default SaaS EUM Server and Screenshot Service are in the Americas,
        // so you can omit the following settings if you are in the Americas.
        .withSessionReplayEnabled(true)
        .withBlobServiceURL(configHelper.getSessionReplayUrl()) 
        .build());
      ...
    }
  2. アプリケーション モジュール レベルの build.gradle ファイルで、セッションリプレイ SDK を追加します。
    JSON
    ...
    ...
    repositories {
            maven {
                url = "https://sdk.smartlook.com/android/release"
            }
        }
    ...
    ...
    dependencies {
            implementation 'com.cisco.android:sr-instrumentation-session-recording-core:1.0.12' 
    }
セッションの記録中にユーザーのプライバシーを保護するには、デフォルトですべてのテキストフィールドと入力フィールドを非表示にするオプションを有効にして、機密データをマスクするようにセッションリプレイを設定します。詳細については、「機密データの取り扱い機密データの取り扱い」を参照してください。

セッションリプレイの有効化

管理者はセッションリプレイのみを有効にできます。選択したモバイルアプリケーションのセッションリプレイを有効にするには、以下のオプションを実行します。
  1. コントローラ UI にログインします。
  2. 対象のモバイルアプリケーションを開きます。
  3. 左のナビゲーションメニューで、[Configuration] を選択します。
  4. [Mobile App Group Configuration.] をクリックします。
  5. [Session Replay] タブで、[Enable Session Replay] を選択します。
    注: Xcode's Main Thread Checker

    デバッグモードで iOS アプリを起動すると、数秒間停止することがあります。セッションリプレイを有効にすると、セッションリプレイが開始し警告が表示されます。この問題は、Xcode のメインスレッドチェッカーの診断によって引き起こされます。

    CODE
    Main Thread Checker: UI API called on a background thread: -[UIView drawViewHierarchyInRect:afterScreenUpdates:]

    この警告は無害であり、iOS エージェントがバックグラウンドで画面をキャプチャしていることが原因で発生します。別の方法(メインスレッドでスクリーンショットをキャプチャする)は、アプリケーション UI の不具合を引き起こす可能性があります。そのため、この方法で実装し、この警告を表示することは、シームレスな記録機能を有効にするために必要なトレードオフです。

    この警告は、デバッグ中にアプリケーションが短時間フリーズする場合にも表示されます。このフリーズは実稼働環境ビルドでは発生せず、メインスレッドチェッカーの Xcode 診断オプションが原因で発生します。

    このオプションは、それぞれの実行スキームの診断オプションでオフにすることができます。詳細については、「メモリ、スレッド、クラッシュの問題の早期診断」の「バックグラウンドセクションの不適切な UI 更新の検出」セクションを参照してください。

セッションリプレイの表示

セッションリプレイでは、複数の録音とユーザーインタラクションが組み合わされています。セッションリプレイを表示するには、以下の手順を実行します。
  1. ユーザー Experience > Mobile Apps に移動します。録音が可能な場合、[Session Replay] に再生アイコンが表示されます。[Session Replay] タブを展開します。
  2. セッションリプレイを有効にしたアプリケーションを選択します。
  3. Sessions を選択します。
    記録が可能な場合、Session Replay に再生アイコンが表示されます。
  4. [Session Replay] タブを展開します。
Session Replay は、セッションのアクティブなセグメントを強調表示します。録画またはユーザー アクティビティがない場合は、空白の画面が表示されます。
セッションリプレイの表示中に、以下のアクションを実行できます。
  • 再生速度を調整する。

  • Video モードと Wireframe モードを切り替える。Wireframe モードでは、セッションリプレイは UI レイアウトだけを表示し、テキストはマスクされます。