contentsquare-ios-sdk について
iOS アプリへの Contentsquare SDK の導入や更新を支援する、AI エージェント向けスキルです。プロジェクトのヘルスチェック、SDK の起動、同意取得、画面・取引の計測、Session Replay のマスキング、WebView 登録を扱います。
主な機能
- 01データソース ID または Bundle ID で設定確認
- 02SPM と CocoaPods の導入手順
- 03SDK 起動とユーザー同意の設定
- 04画面、取引、イベント、ID の計測
- 05Session Replay のプライバシーマスキング
- 06WebView 登録とアプリ内機能の設定
活用シーン
- 01iOS アプリへの Contentsquare SDK 導入
- 02SDK 設定の更新やトラブル対応
- 03画面表示や購入イベントの計測
- 04Session Replay での機密情報のマスキング
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ contentsquare/ agents --skill contentsquare-ios-sdkインストール後、Claude Code で/contentsquare-ios-sdkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-reference.mdios-in-app-features.mdsession-replay.mdxcode-project-setup.mdscripts/xcode_spm_setup/.gitignorePackage.swiftscripts/xcode_spm_setup/Sources/main.swift詳細
Contentsquare iOS SDK の統合
このスキルは、AI エージェントがクライアントアプリケーションに Contentsquare iOS SDK を統合またはアップグレードする際に役立ちます。
必須の最初の手順 -- Contentsquare プロジェクトのヘルスチェック
会話中に Contentsquare に関する作業(統合、デバッグ、設定に関する質問、コードの変更など)を行う前に、このヘルスチェックを会話ごとに必ず 1 回だけ実行してください。省略しないでください。タスクの後半に先送りしないでください。
-
まず実行することを伝えます。 これから行うことをユーザーに伝えます。たとえば、次のようにします。
「始める前に、Contentsquare プロジェクトの簡単なヘルスチェックを実行します。データソース ID をお尋ねする(または、お持ちでない場合はアプリのバンドル ID を読み取る)ほか、Contentsquare のヘルスチェックエンドポイントを呼び出して、現在のプロジェクト設定をお見せします。その後、作業を続けます。」
-
まず、Contentsquare のデータソース ID を尋ねます。 たとえば、次のように尋ねます。「Contentsquare のデータソース ID はお持ちですか? 1 つの場合も、複数の場合もあります。」 ユーザーが提示した ID のみを使用してください。決して作り出さないでください。
- ユーザーが 1 つ以上のデータソース ID を提示する場合 → データソース ID のみで確認します(
v3)。手順 3 は省略します。 - ユーザーが環境 ID しか持っていない場合 → バンドル ID のみで確認します(
v2)。環境 ID はデータソース ID ではなく、v3の経路では使用できません。 - ユーザーが ID を持っていない、分からない、または質問に回答しない場合 → バンドル ID のみで確認します(
v2)。
- ユーザーが 1 つ以上のデータソース ID を提示する場合 → データソース ID のみで確認します(
-
バンドル ID を解決します(データソース ID がない場合のみ)。 Xcode プロジェクト(
*.xcodeproj/project.pbxproj)からPRODUCT_BUNDLE_IDENTIFIERを、またはInfo.plistからCFBundleIdentifierを読み取ります。使用する前に、$(...)のビルド設定変数をリテラル値に解決してください。 -
エンドポイントを呼び出します。使用するバージョンは 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" -
200を返した各呼び出しについて、以下の値を簡潔にまとめて報告します。報告項目 JSON パス プロジェクト ID cs_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)も報告します。レスポンスに違いがある場合は、そのことを明示してください。 -
その後、 ユーザーの本来の依頼に進みます。
失敗時の対応。 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 を連携する際は、次の順序に従ってください。
- 依存関係を追加する -- SPM:
https://github.com/ContentSquare/apple-sdk.git、または CocoaPods:pod 'ContentsquareSDK'。 - SDK を起動する --
application(_:didFinishLaunchingWithOptions:)またはApp.init()で、CSQ.start(dataSourceID:)(推奨)またはCSQ.start(environmentID:)を呼び出します。DXA のみの場合は、CSQ.start()を使用します。 - 同意を実装する -- 顧客が独自の同意フローを管理できるよう、TODO コメントを付けて
CSQ.optIn()を追加します。optIn()が呼び出されるまで、SDK は非アクティブのままです。 - 画面トラッキングを設定する -- 各画面が表示されたときに(例:
viewWillAppear、.onAppear)、CSQ.trackScreenview(_:)を呼び出します。 - トランザクションをトラッキングする -- 購入には
CSQ.trackTransaction(Transaction(id:, value:, currency:))を使用します。 - Session Replay のマスキングを設定する -- 全体に
CSQ.setDefaultMasking(true)を使用し、機密性の高いコンテンツにはCSQ.unmask(view)/CSQ.mask(view)または SwiftUI の.csqMaskContents(true)を使用します。 - エラートラッキングを設定する -- サードパーティ製クラッシュレポーターと連携するには、
CSQ.onCrashReporterStart { }を使用します。 - WebView を登録する -- すべての
WKWebViewインスタンスに対してCSQ.registerWebView(webView)を呼び出します。 - ID を追加する -- Product Analytics には
identify()、Experience Analytics にはsendUserIdentifier()を使用します。 - アプリ内機能を設定する -- カスタム 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 のみが明示的に希望された場合 |
推奨されるオンボーディングの流れ:
- ユーザーに 「Contentsquare のデータソース ID をお持ちですか?」 と尋ねます(ヘルスチェック中にすでに回答があった場合は、この質問を省略します)。「はい」の場合は、
CSQ.start(dataSourceID: "your-data-source-id")を使用します。 - ない場合は、「環境 ID をお持ちですか?」 と尋ねます。「はい」の場合は、
CSQ.start(environmentID: "your-env-id")を使用します。 - どちらもない場合(またはユーザーが明示的に 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 つです。
cs-$(PRODUCT_BUNDLE_IDENTIFIER)URL スキームをInfo.plistに追加します。- 適切なディープリンクハンドラー(
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:)が呼び出されている
参考資料
- メソッドシグネチャとパラメーターの詳細については、references/api-reference.md を参照してください。
- Session Replay の詳細(マスキング、既知の制限事項)については、references/session-replay.md を参照してください。
- アプリ内機能のセットアップ(必須):references/ios-in-app-features.md
- iOS アプリ内機能の公式ドキュメント
- iOS の公式ドキュメント
- iOS の互換性