mcpField
C
contentsquare-ios-sdk

contentsquare-ios-sdk

github.com/contentsquare開発238 回インストール6 日前に更新
リポジトリ

contentsquare-ios-sdk について

iOS アプリへの Contentsquare SDK の導入や更新を支援する、AI エージェント向けスキルです。プロジェクトのヘルスチェック、SDK の起動、同意取得、画面・取引の計測、Session Replay のマスキング、WebView 登録を扱います。

主な機能

  1. 01データソース ID または Bundle ID で設定確認
  2. 02SPM と CocoaPods の導入手順
  3. 03SDK 起動とユーザー同意の設定
  4. 04画面、取引、イベント、ID の計測
  5. 05Session Replay のプライバシーマスキング
  6. 06WebView 登録とアプリ内機能の設定

活用シーン

  1. 01iOS アプリへの Contentsquare SDK 導入
  2. 02SDK 設定の更新やトラブル対応
  3. 03画面表示や購入イベントの計測
  4. 04Session Replay での機密情報のマスキング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/contentsquare/agents --skill contentsquare-ios-sdk

インストール後、Claude Code で/contentsquare-ios-sdkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api-reference.md
ios-in-app-features.md
session-replay.md
xcode-project-setup.md
scripts/xcode_spm_setup/
.gitignore
Package.swift
scripts/xcode_spm_setup/Sources/
main.swift

詳細

Contentsquare iOS SDK の統合

このスキルは、AI エージェントがクライアントアプリケーションに Contentsquare iOS SDK を統合またはアップグレードする際に役立ちます。

必須の最初の手順 -- Contentsquare プロジェクトのヘルスチェック

会話中に Contentsquare に関する作業(統合、デバッグ、設定に関する質問、コードの変更など)を行う前に、このヘルスチェックを会話ごとに必ず 1 回だけ実行してください。省略しないでください。タスクの後半に先送りしないでください。

  1. まず実行することを伝えます。 これから行うことをユーザーに伝えます。たとえば、次のようにします。

    「始める前に、Contentsquare プロジェクトの簡単なヘルスチェックを実行します。データソース ID をお尋ねする(または、お持ちでない場合はアプリのバンドル ID を読み取る)ほか、Contentsquare のヘルスチェックエンドポイントを呼び出して、現在のプロジェクト設定をお見せします。その後、作業を続けます。」

  2. まず、Contentsquare のデータソース ID を尋ねます。 たとえば、次のように尋ねます。「Contentsquare のデータソース ID はお持ちですか? 1 つの場合も、複数の場合もあります。」 ユーザーが提示した ID のみを使用してください。決して作り出さないでください。

    • ユーザーが 1 つ以上のデータソース ID を提示する場合 → データソース ID のみで確認します(v3)。手順 3 は省略します。
    • ユーザーが環境 ID しか持っていない場合 → バンドル ID のみで確認します(v2)。環境 ID はデータソース ID ではなく、v3 の経路では使用できません。
    • ユーザーが ID を持っていない、分からない、または質問に回答しない場合 → バンドル ID のみで確認します(v2)。
  3. バンドル ID を解決します(データソース ID がない場合のみ)。 Xcode プロジェクト(*.xcodeproj/project.pbxproj)から PRODUCT_BUNDLE_IDENTIFIER を、または Info.plist から CFBundleIdentifier を読み取ります。使用する前に、$(...) のビルド設定変数をリテラル値に解決してください。

  4. エンドポイントを呼び出します。使用するバージョンは 1 つだけにし、両方は決して使用しないでください。 プラットフォームのセグメントは文字どおり ios です。他の値は受け付けられません。

    データソース ID を使用する場合(v3)、各 ID につき 1 回:

    curl -s "https://mobile-production.content-square.net/healthcheck/ios/config/v3/<dataSourceId>.json"
    

    ID が 200 を返さない場合は、その旨をユーザーに伝えます。環境 ID または入力ミスの可能性があります。自分でコード内のデータソース ID を探してもよいか尋ねます。この ID は CSQ.start(dataSourceID:) に渡される値です。定数または設定ファイルに由来する場合は、リテラル値までたどってください。ユーザーが同意し、別の ID が見つかった場合は、その ID で v3 の確認を 1 回実行します。ユーザーが断った場合、またはコード内に ID がない場合は、ID なしで続行します。

    データソース ID がない場合(v2):

    curl -s "https://mobile-production.content-square.net/healthcheck/ios/config/v2/<bundleId>.json"
    
  5. 200 を返した各呼び出しについて、以下の値を簡潔にまとめて報告します。

    報告項目JSON パス
    プロジェクト IDcs_project_id
    トラッキングの有効状態project_configurations.project_config.enabled
    セッションリプレイproject_configurations.project_config.session_replay -- recording_rate、record_via_cellular_network、recording_quality_wifi、srm_enabled、user_identifier
    有効な機能フラグproject_configurations.project_config.feature_flags -- enabled == true の項目のみ。name と min_version を含めます。

    v3 の呼び出しでは、環境 ID(environment_id)も報告します。レスポンスに違いがある場合は、そのことを明示してください。

  6. その後、 ユーザーの本来の依頼に進みます。

失敗時の対応。 403 Invalid health-check path は URL の形式が間違っていることを示します。ios セグメント、v2/v3 セグメント、ID を再確認し、パスの構造は変更しないでください。上流からプロキシされた非 200 レスポンスは、そのデータソース ID またはバンドル ID に Contentsquare の設定がないことを示します。その旨を伝えてから作業を続けてください。もう一方のバージョンで再試行してはいけません(再試行できるのは、手順 4 でコードを検索した場合のみです)。このヘルスチェックは情報提供のみを目的としており、ユーザーのタスクを決して妨げてはいけません。

インストール

Swift Package Manager(推奨)

https://github.com/ContentSquare/apple-sdk を追加するには、xcode-project-setup を参照してください。

CocoaPods
pod 'ContentsquareSDK'

次に pod install を実行します。

クイックスタート

import ContentsquareSDK

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        CSQ.start(dataSourceID: "your-data-source-id") // or start(environmentID:) if no data source ID
        CSQ.optIn() // TODO: Only call after user consent. The SDK stays inactive until optIn() is called. Implement a consent prompt and call optIn()/optOut() based on user choice.
        return true
    }
}

SwiftUI:

import ContentsquareSDK

@main
struct MyApp: App {
    init() {
        CSQ.start(dataSourceID: "your-data-source-id") // or start(environmentID:) if no data source ID
        CSQ.optIn() // TODO: Only call after user consent. The SDK stays inactive until optIn() is called. Implement a consent prompt and call optIn()/optOut() based on user choice.
    }

    var body: some Scene {
        WindowGroup { ContentView() }
    }
}

DXA のみ(Product Analytics なし)の場合は、パラメーターなしで CSQ.start() を使用します。

画面をトラッキングしないと、Session Replay が機能しないため、画面のトラッキングは非常に重要です。UIKit の viewWillAppear(_:) または SwiftUI の .onAppear で trackScreenview() を呼び出して、画面を手動でトラッキングできます。

CSQ.trackScreenview("HomeScreen")

連携を完了する前に、アプリに WebView がある場合は、必ずその処理を行ってください。WebView は自動的にトラッキングされないため、すべての WebView を登録する必要があります。詳細は、以下の「WebView トラッキング」セクションをご確認ください。

連携ワークフロー

iOS アプリに Contentsquare を連携する際は、次の順序に従ってください。

  1. 依存関係を追加する -- SPM:https://github.com/ContentSquare/apple-sdk.git、または CocoaPods:pod 'ContentsquareSDK'。
  2. SDK を起動する -- application(_:didFinishLaunchingWithOptions:) または App.init() で、CSQ.start(dataSourceID:)(推奨)または CSQ.start(environmentID:) を呼び出します。DXA のみの場合は、CSQ.start() を使用します。
  3. 同意を実装する -- 顧客が独自の同意フローを管理できるよう、TODO コメントを付けて CSQ.optIn() を追加します。optIn() が呼び出されるまで、SDK は非アクティブのままです。
  4. 画面トラッキングを設定する -- 各画面が表示されたときに(例:viewWillAppear、.onAppear)、CSQ.trackScreenview(_:) を呼び出します。
  5. トランザクションをトラッキングする -- 購入には CSQ.trackTransaction(Transaction(id:, value:, currency:)) を使用します。
  6. Session Replay のマスキングを設定する -- 全体に CSQ.setDefaultMasking(true) を使用し、機密性の高いコンテンツには CSQ.unmask(view) / CSQ.mask(view) または SwiftUI の .csqMaskContents(true) を使用します。
  7. エラートラッキングを設定する -- サードパーティ製クラッシュレポーターと連携するには、CSQ.onCrashReporterStart { } を使用します。
  8. WebView を登録する -- すべての WKWebView インスタンスに対して CSQ.registerWebView(webView) を呼び出します。
  9. ID を追加する -- Product Analytics には identify()、Experience Analytics には sendUserIdentifier() を使用します。
  10. アプリ内機能を設定する -- カスタム URL スキームを追加し、ディープリンクを処理します。スクリーンショットの取得、SDK ログ、Log Visualizer、Zoning Analysis にアクセスするには、この手順が必須です。references/ios-in-app-features.md をご覧ください。

API の概要

常に import ContentsquareSDK の CSQ を使用してください。Contentsquare クラスは旧 SDK のため、使用しないでください。

ライフサイクル
メソッド用途
start()SDK を起動します。他の API より先に呼び出す必要があります。
stop()SDK を完全に停止します。
pauseTracking()データ収集を一時停止します(機密性の高い画面向け)。
resumeTracking()pauseTracking() の後に再開します。

明示的に依頼された場合を除き、pauseTracking と resumeTracking は使用しないでください。

起動設定
メソッドユースケースオンボーディングの優先度
start(dataSourceID:, options:)データソース ID を使用した DXA と Product Analytics の両方新規クライアントへの第一候補 -- まずこれを確認してください
start(environmentID:, options:)環境 ID を使用した Product Analyticsデータソース ID がない場合の第二候補
start(options:)Digital Experience Analytics のみフォールバックのみ -- どちらの ID もない場合、または DXA のみが明示的に希望された場合

推奨されるオンボーディングの流れ:

  1. ユーザーに 「Contentsquare のデータソース ID をお持ちですか?」 と尋ねます(ヘルスチェック中にすでに回答があった場合は、この質問を省略します)。「はい」の場合は、CSQ.start(dataSourceID: "your-data-source-id") を使用します。
  2. ない場合は、「環境 ID をお持ちですか?」 と尋ねます。「はい」の場合は、CSQ.start(environmentID: "your-env-id") を使用します。
  3. どちらもない場合(またはユーザーが明示的に DXA のみを希望する場合)に限り、CSQ.start() を使用します。

ID を作り出さないでください。尋ねずに DXA をデフォルトとして選択しないでください。

オプションには、.uploadInterval、.baseURL、.disablePageviewAutocapture、.enableNativeAutocapture、.enablePushNotificationAutocapture、.sessionReplayAutoStart があります。

プライバシー
メソッド目的
optIn()デバイスでトラッキングを有効にします。ユーザー ID を生成し、ただちに開始します。
optOut()永続的にオプトアウトします。optIn() を呼び出すか、アプリを再インストールするまで停止します。
ID
メソッドコンテキスト目的
identify("userId")プロダクトアナリティクスユーザー ID を設定します。異なる ID を指定すると、新しいセッションが開始されます。最大 255 文字です。
resetIdentity()プロダクトアナリティクスID をクリアします。
sendUserIdentifier("userId")デジタルエクスペリエンスアナリティクスハッシュ化されたユーザー ID を送信します。最大 100 文字です。
画面トラッキング
メソッド目的
trackScreenview(_:, cvars:)オプションのカスタム変数を指定して、画面表示をトラッキングします。

CustomVar(index:, name:, value:) -- index(UInt32)、name(String、最大 512 文字)、value(String、最大 255 文字)。

トランザクション
let transaction = Transaction(id: "order_123", value: 29.99, currency: .usd)
CSQ.trackTransaction(transaction)

Currency は ISO 4217 の列挙型です(例:.usd、.eur、.gbp)。

カスタムイベントとプロパティ
メソッド目的
trackEvent(_:, properties:)オプションのプロパティを指定して、名前付きイベントをトラッキングします。
addDynamicVar(DynamicVar)セッションレベルの動的変数を追加します(EA)。
addUserProperties([String: PropertyValue])ユーザーレベルのプロパティを設定します(PA)。
addEventProperties([String: PropertyValue])今後のすべてのイベントにプロパティを設定します(PA)。
removeEventProperty("key")イベントプロパティを 1 つ削除します。
clearEventProperties()すべてのイベントプロパティを削除します。

Swift の PropertyValue:String、Substring、Bool、Double、Float、Int、Int64、Int32、Int16、Int8。

DynamicVar(key:, value:) -- value は String(key は最大 512 文字、value は最大 255 文字)または UInt32(key は最大 50 文字)です。

セッションリプレイのマスキング
メソッド目的
setDefaultMasking(Bool)グローバルなマスキング状態を設定します。注:false に設定しても、テキスト入力はマスキングされたままです。
mask(UIView)特定のビューとそのサブビューをマスキングします。
unmask(UIView)特定のビューのマスキングを解除します。
mask(viewsOfType: UIView.Type)指定した型のすべてのビューをマスキングします(DXA)。
unmask(viewsOfType: UIView.Type)指定した型のすべてのビューのマスキングを解除します(DXA)。
ignoreInteractions(UIView)特定のビューでの操作を無視します(PA)。
maskTexts(Bool)すべてのテキストコンテンツをマスキングします(UILabel、SwiftUI Text)。
maskImages(Bool)すべての画像コンポーネントをマスキングします(UIImageView、SwiftUI Image)。
maskTextInputs(Bool)すべてのテキスト入力フィールドをマスキングします(UITextField、UITextView、SwiftUI TextField、SecureField、TextEditor)。

UIKit の IBInspectable プロパティ:view.csqMaskContents = true、view.csqIgnoreInteractions = true、view.csqIgnoreInnerHierarchy = true。

SwiftUI の修飾子:.csqMaskContents(true)、.csqIgnoreInteractions(true)。

WebView トラッキング
メソッド目的
registerWebView(WKWebView)トラッキング対象として WKWebView を登録します。
unregisterWebView(WKWebView)WKWebView の登録を解除します。

WebView は自動的にはトラッキングされません。すべての WKWebView インスタンスを登録する必要があります。

アンケート
メソッド目的
triggerSurvey("triggerName")事前定義されたトリガー名でアンケートを開始します(DXA VoC)。
エラートラッキング
メソッド目的
onCrashReporterStart { enabled in }クラッシュレポーターの初期化時に呼び出されるコールバックです(DXA)。
setURLMaskingPatterns(["pattern"])機密性の高い URL パスをマスキングします(DXA)。
trackNetworkMetric(NetworkMetric)HTTP ネットワークエラーをトラッキングします(DXA)。
CSInApp

これらの API を機能させるには、アプリでアプリ内機能を設定する必要があります。 URL スキームとディープリンクハンドラーが設定されていないと、handle(url:) は呼び出されず、アプリ内機能(スクリーンショットキャプチャ、SDK ログ、ログビジュアライザー)にアクセスできません。設定方法の詳細は、references/ios-in-app-features.md を参照してください。

メソッド目的
handle(url:)CSInApp URL スキームのアクティベーション(DXA)を処理します。application(_:open:options:) で呼び出します。
csInAppアプリ内デバッグ機能(DXA)を手動で有効化または無効化するための読み書き可能なプロパティです。
デバッグとメタデータ
API目的
logLevel = .debugログレベル(.none、.error、.warn、.info、.debug、.trace)を設定します。
logChannel = customChannelログをカスタムロガーに送信し、デフォルトのコンソール出力を置き換えます。
addLogChannel(_:) / removeLogChannel(_:)既存のログチャンネルにログチャンネルを追加、または既存のログチャンネルから削除します。
metadataセッションのメタデータにアクセスします。
metadata.onChange { metadata in }メタデータの変更を監視します。

メタデータのプロパティ:userID、sessionID、projectID、environmentID、sessionReplayURL、identity。

よく使われるパターン

1. プロダクトアナリティクスを含む完全な初期化
import ContentsquareSDK

func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    CSQ.start(dataSourceID: "your-data-source-id", options: [.enableNativeAutocapture: true]) // or start(environmentID:) if no data source ID
    CSQ.optIn() // TODO: Only call after user consent
    return true
}
2. 購入をトラッキングする
let transaction = Transaction(id: "txn_abc", value: 49.99, currency: .eur)
CSQ.trackTransaction(transaction)
3. プロパティを含むカスタムイベント
CSQ.trackEvent(
    "add_to_cart",
    properties: ["product_id": "sku_123", "quantity": 2, "is_promo": true]
)
4. クラッシュレポーターとの連携
CSQ.onCrashReporterStart { enabled in
    if enabled {
        // Start Firebase Crashlytics or other crash reporter here
    }
}
5. SwiftUI の画面トラッキング
struct ProductDetailView: View {
    var body: some View {
        VStack { /* content */ }
            .onAppear {
                CSQ.trackScreenview("ProductDetail")
            }
    }
}
6. WebView の登録
let webView = WKWebView()
CSQ.registerWebView(webView)
// When done or on deinit:
CSQ.unregisterWebView(webView)

プラットフォーム別のガイダンス

UIKit
  • application(_:didFinishLaunchingWithOptions:) で CSQ.start() を呼び出します。
  • viewWillAppear(_:) で CSQ.trackScreenview(_:) を使って画面をトラッキングします。
  • CSQ.mask(view) / view.csqMaskContents = true でビューをマスクします。
SwiftUI
  • App.init() で CSQ.start() を呼び出します。
  • .onAppear { CSQ.trackScreenview("ScreenName") } で画面をトラッキングします。
  • .csqMaskContents(true) モディファイアでビューをマスクします。
  • .csqIgnoreInteractions(true) でインタラクションを無視します。

古い SDK バージョンからの移行

現在の SDK バージョン:1.11.x

このセクションでは、SDK バージョン 1.0–1.6 から 1.11.x への移行について説明します。古いバージョンから移行する場合は、以下の変更をすべて適用してください。各変更は累積されます。バージョン 1.0 のプロジェクトでは、すべての手順を適用する必要があります。

手順 1 — SDK バージョンを 1.11.x にアップグレードする

SDK が最新かどうかを確認します。最新でない場合は、Contentsquare SPM パッケージを 1.11.x にアップグレードしてください。 Swift Package のアップグレードについては、xcode-project-setup を参照してください。

手順 2 — 非推奨の初期化パターンを置き換える

2 段階の CSQ.configureProductAnalytics(environmentID:, additionalOptions:) + CSQ.start() パターンは削除されました。統合された CSQ.start(environmentID:, options:) または CSQ.start(dataSourceID:, options:) に置き換えてください。

// Old (removed — will not compile in 1.11.x)
CSQ.configureProductAnalytics(environmentID: "your-env-id", additionalOptions: [.enableUIKitAutocapture: true])

// New
CSQ.start(environmentID: "your-env-id", options: [.enableNativeAutocapture: true])

プロジェクトにデータソース ID がある場合(新規クライアントではこちらが推奨されます)は、代わりに start(dataSourceID:) を使用してください。

手順 3 — オプションの名前を変更する
旧名称新名称
.enableUIKitAutocapture.enableNativeAutocapture
ProductAnalyticsOption(型)AnalyticsOption(ProductAnalyticsOption は非推奨の型エイリアスです。新しいコードでは AnalyticsOption を推奨します)
手順 4 — 削除されたオプションを削除する

以下のオプションは AnalyticsOption から完全に削除されました。すべての start(...) または configureProductAnalytics(...) の呼び出し箇所から、それぞれの記述をすべて削除してください。残っているとプロジェクトはコンパイルできません。

  • .captureVendorID
  • .captureAdvertiserID
  • .clearEventPropertiesOnNewUser
  • .messageBatchByteLimit
  • .messageBatchMessageLimit
  • .resumePreviousSession
  • .pruningLookBackWindow
  • .disableScreenviewForwardToDXA
  • .disableScreenviewForwardToPA
  • .interactionHierarchyCaptureLimit
  • .disableInteractionTextCapture
  • .disableInteractionAccessibilityLabelCapture
ステップ 5 — セッションリプレイの自動開始動作を確認する

新しいオプション .sessionReplayAutoStart(デフォルトは true)が追加されました。デフォルトの動作を使用する場合、対応は不要です。セッションリプレイを手動で制御する必要がある場合にのみ、false に設定してください。

CSQ.start(environmentID: "your-env-id", options: [.sessionReplayAutoStart: false])
// Then start/stop manually:
CSQ.startSessionReplay()
CSQ.stopSessionReplay() // terminal — cannot be restarted in the same SDK lifetime
移行チェックリスト(1.0~1.6 → 1.11.x)
  • SPM パッケージを 1.11.x に更新する
  • configureProductAnalytics と start() を、統合された CSQ.start(environmentID:options:) または CSQ.start(dataSourceID:options:) に置き換える
  • .enableUIKitAutocapture を .enableNativeAutocapture に変更する
  • ProductAnalyticsOption 型の参照を AnalyticsOption に変更する
  • 削除されたすべてのオプションを、すべての呼び出し箇所から削除する
  • 上記に関連する非推奨 API の警告がなく、ビルドが成功する

アプリ内機能(必須の設定)

アプリ内機能(スクリーンショットキャプチャ、SDK ログ、ログビジュアライザー、ゾーニング分析)は、Contentsquare ユーザーが統合を検証してデバッグするために不可欠です。これらは任意ではありません。この設定を行わないと、Contentsquare ユーザーはこれらのツールを利用できません。

必要な手順は 2 つです。

  1. cs-$(PRODUCT_BUNDLE_IDENTIFIER) URL スキームを Info.plist に追加します。
  2. 適切なディープリンクハンドラー(AppDelegate、SceneDelegate、または SwiftUI の .onOpenURL)で CSQ.handle(url: url) を呼び出します。

SDK を統合する際は、必ずこの設定を含めてください。実装手順の詳細は、references/ios-in-app-features.md を参照してください。

重要な制約

  • ID は次の順序で確認してください:統合の前に、ユーザーに (1) Contentsquare の データソース ID を確認します(ヘルスチェックの回答を再利用します)。新規クライアントにはこちらを推奨します。(2) それを持っていない場合は、環境 ID を確認します。(3) どちらも持っていない場合(または DXA のみを明示的に希望する場合)に限り、CSQ.start() にフォールバックします。ID を作り出したり、確認せずに DXA をデフォルトとして使用したりしないでください。
  • WebView を検索してください:統合中に、コードベース内で WKWebView が使用されている箇所を検索します。WebView は自動的にトラッキングされません。すべてのインスタンスを CSQ.registerWebView(_:) で登録する必要があります。この手順を省略しないでください。
  • アプリ内機能は必須です:URL スキーム(cs-$(PRODUCT_BUNDLE_IDENTIFIER))と CSQ.handle(url:) のディープリンクハンドラーを必ず設定してください。設定しないと、Contentsquare ユーザーはスクリーンショットキャプチャ、SDK ログ、ログビジュアライザー、ゾーニング分析を利用できません。references/ios-in-app-features.md を参照してください。
  • プラットフォームのサポート:iOS のみです。互換性に関するドキュメントを確認してください。
  • プロパティの型:PropertyValue として受け入れられるのは String、Bool、および数値型のみです。
  • DynamicVar の制限:String バリアントでは、キーの最大長は 512 文字、値の最大長は 255 文字です。Int バリアントでは、キーの最大長は 50 文字、値の型は UInt32 です。
  • userIdentifier:identify() では最大 255 文字、sendUserIdentifier() では最大 100 文字です。
  • プライバシー:自動的にオプトインしないでください。必ず同意フローを実装してください。
  • PII:画面名、イベント名、プロパティにメールアドレス、パスワード、実名を渡さないでください。
  • 環境 ID:ハードコードしないでください。設定または環境変数を使用してください。

統合チェックリスト

統合が完了したと判断する前に、次の項目を確認してください。

  • 依存関係が追加されている(SPM または CocoaPods)
  • CSQ.start(dataSourceID:)、CSQ.start(environmentID:)、または CSQ.start() が、AppDelegate または App.init で最初の SDK 呼び出しとして実行されている
  • 顧客の同意フロー用の TODO コメントを添えて、CSQ.optIn() が追加されている
  • すべてのメイン画面で画面トラッキングが設定されている
  • 機密コンテンツに対して Session Replay のマスキングが設定されている
  • すべての WKWebView インスタンスが CSQ.registerWebView(_:) に登録されている
  • CSQ.onCrashReporterStart { } によってクラッシュレポーターとの連携が設定されている
  • 画面名、イベント名、プロパティに PII が含まれていない
  • トランザクションのトラッキングで Currency 列挙型が使用されている
  • ID(dataSourceID、environmentID)がハードコードされていない
  • アプリ内機能が設定されている:cs-$(PRODUCT_BUNDLE_IDENTIFIER) URL スキームが Info.plist に追加され、ディープリンクハンドラーで CSQ.handle(url:) が呼び出されている

参考資料

コメント