Datadog SDK が適切に初期化されているかどうか確認

Datadog SDKを構成し、アプリを初回実行した後、Xcode のデバッガコンソールを確認します。SDK はいくつかの一貫性チェックを実装しており、構成ミスがある場合は関連する警告を出力します。

デバッグ作業

アプリケーションの作成時に、verbosityLevel 値を設定することで開発ログを有効にすることができます。設定したレベルと同等以上の優先度を持つ SDK からの関連メッセージが、Xcode のデバッガコンソールに出力されます。

Datadog.verbosityLevel = .debug

すべての処理が完了すると、RUM データのバッチが正しくアップロードされたことを示す以下のような出力が表示されます。

[DATADOG SDK] 🐶 → 17:23:09.849 [DEBUG] ⏳ (rum) Uploading batch...
[DATADOG SDK] 🐶 → 17:23:10.972 [DEBUG]    → (rum) accepted, won't be retransmitted: success

推奨: DEBUG コンフィギュレーションで Datadog.verbosityLevel を使用し、RELEASE で設定を解除してください。 

独自のセッションデリゲートで DDURLSessionDelegate を使用する

DDURLSessionDelegate を使ってネットワークリクエストを自動的に追跡したいが、アプリがすでに独自のセッションデリゲートを実装している場合は、inheritance または composition のいずれかのパターンを使って DDURLSessionDelegate に呼び出しを転送することが可能です。

inheritance を使用する場合は、カスタムデリゲートのベースクラスとして DDURLSessionDelegate を使用し、オーバーライドするメソッドから super の実装を必ず呼び出すようにしてください。例:

class YourCustomDelegateURLSessionDelegate: DDURLSessionDelegate {
    override func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
        super.urlSession(session, task: task, didCompleteWithError: error) // Datadog デリゲートに転送する
        /* カスタムロジック */
    }
}

composition を使う場合は、Datadog の __URLSessionDelegateProviding プロトコルを利用して、DDURLSessionDelegate の内部インスタンスを保持して、ddURLSessionDelegate に呼び出しを転送します。例:

private class YourCustomDelegateURLSessionDelegate: NSObject, URLSessionTaskDelegate, URLSessionDataDelegate, __URLSessionDelegateProviding {
    // MARK: - __URLSessionDelegateProviding conformance

    let ddURLSessionDelegate = DDURLSessionDelegate()

    // MARK: - __URLSessionDelegateProviding handling

    func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
        d dURLSessionDelegate.urlSession(session, task: task, didFinishCollecting: metrics) // Datadog デリゲートに転送する
        /* カスタムロジック */
    }

    func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
        ddURLSessionDelegate.urlSession(session, task: task, didCompleteWithError: error) // Datadog デリゲートに転送する
        /* カスタムロジック */
    }

    func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
        ddURLSessionDelegate.urlSession(session, dataTask: dataTask, didReceive: data) // Datadog デリゲートに転送する
        /* カスタムロジック */
    }
}

: composition を使用する場合、ddURLSessionDelegate__URLSessionDelegateProviding プロトコルコメント に記載されている必要なすべての呼び出しを受け取る必要があります。デリゲートには以下が必要です。

その他の参考資料