Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion packages/core/ios/Sources/DatadogSDKWrapper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ import DatadogRUM
import DatadogLogs
import DatadogTrace
import DatadogCrashReporting
import DatadogWebViewTracking
import DatadogInternal
import Foundation

#if os(iOS)
import DatadogWebViewTracking
#endif

public typealias OnSdkInitializedListener = () -> Void

/// Wrapper around the Datadog SDK. Use DatadogSDKWrapper.shared to access the instance.
Expand Down Expand Up @@ -47,6 +50,7 @@ public class DatadogSDKWrapper {
self.loggerConfiguration = loggerConfiguration
}

#if os(iOS)
// Webview
private var webviewMessageEmitter: InternalExtension<WebViewTracking>.AbstractMessageEmitter?

Expand All @@ -57,6 +61,7 @@ public class DatadogSDKWrapper {
internal func sendWebviewMessage(body: NSString) throws {
try self.webviewMessageEmitter?.send(body: body)
}
#endif
}


2 changes: 2 additions & 0 deletions packages/core/ios/Sources/DdSdk.mm
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,11 @@ - (dispatch_queue_t)methodQueue {
return [RNQueue getSharedQueue];
}

#if TARGET_OS_IOS
- (void)consumeWebviewEvent:(NSString *)message resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
[self.ddSdkImplementation consumeWebviewEventWithMessage:message resolve:resolve reject:reject];
}
#endif

- (void)initialize:(NSDictionary *)configuration resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
[self.ddSdkImplementation initializeWithConfiguration:configuration resolve:resolve reject:reject];
Expand Down
13 changes: 10 additions & 3 deletions packages/core/ios/Sources/DdSdkImplementation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ import DatadogInternal
import DatadogLogs
import DatadogRUM
import DatadogTrace
import DatadogWebViewTracking
import Foundation
import React

#if os(iOS)
import DatadogWebViewTracking
#endif

func getDefaultAppVersion() -> String {
let bundleShortVersion =
Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String
Expand All @@ -28,7 +31,10 @@ public class DdSdkImplementation: NSObject {
let mainDispatchQueue: DispatchQueueType
let RUMMonitorProvider: () -> RUMMonitorProtocol
let RUMMonitorInternalProvider: () -> RUMMonitorInternalProtocol?

#if os(iOS)
var webviewMessageEmitter: InternalExtension<WebViewTracking>.AbstractMessageEmitter?
#endif

private let jsLongTaskThresholdInSeconds: TimeInterval = 0.1

Expand Down Expand Up @@ -193,11 +199,12 @@ public class DdSdkImplementation: NSObject {
resolve(nil)
}

#if os(iOS)
@objc
public func consumeWebviewEvent(
message: NSString, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock
) {
do {
do{
try DatadogSDKWrapper.shared.sendWebviewMessage(body: message)
} catch {
DdTelemetry.telemetryError(
Expand All @@ -206,9 +213,9 @@ public class DdSdkImplementation: NSObject {
kind: "WebViewEventBridgeError" as String,
stack: String(describing: error) as String)
}

resolve(nil)
}
#endif

@objc
public func clearAllData(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
Expand Down
9 changes: 8 additions & 1 deletion packages/core/ios/Sources/DdSdkNativeInitialization.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ import DatadogRUM
import DatadogLogs
import DatadogTrace
import DatadogCrashReporting
import DatadogWebViewTracking
import DatadogInternal
import React

#if os(iOS)
import DatadogWebViewTracking
#endif

@objc
public class DdSdkNativeInitialization: NSObject {
let jsonFileReader: ResourceFileReader
Expand Down Expand Up @@ -90,6 +93,10 @@ public class DdSdkNativeInitialization: NSObject {
if sdkConfiguration.nativeCrashReportEnabled ?? false {
CrashReporting.enable()
}

#if os(iOS)
DatadogSDKWrapper.shared.enableWebviewTracking()
#endif
}

func buildSDKConfiguration(configuration: DdSdkConfiguration, defaultAppVersion: String = getDefaultAppVersion()) -> Datadog.Configuration {
Expand Down