diff --git a/Sources/Segment/Plugins/Platforms/Vendors/AppleUtils.swift b/Sources/Segment/Plugins/Platforms/Vendors/AppleUtils.swift index 4971dd2d..2f5bad90 100644 --- a/Sources/Segment/Plugins/Platforms/Vendors/AppleUtils.swift +++ b/Sources/Segment/Plugins/Platforms/Vendors/AppleUtils.swift @@ -66,9 +66,15 @@ internal class iOSVendorSystem: VendorSystem { override var userAgent: String? { #if !os(tvOS) var userAgent: String? - DispatchQueue.main.sync { - userAgent = WKWebView().value(forKey: "userAgent") as? String + + if Thread.isMainThread { + userAgent = WKWebView().value(forKey: "userAgent") as? String + } else { + DispatchQueue.main.sync { + userAgent = WKWebView().value(forKey: "userAgent") as? String + } } + return userAgent #else // webkit isn't on tvos @@ -233,9 +239,14 @@ internal class MacOSVendorSystem: VendorSystem { override var userAgent: String? { var userAgent: String? - DispatchQueue.main.sync { - userAgent = WKWebView().value(forKey: "userAgent") as? String + if Thread.isMainThread { + userAgent = WKWebView().value(forKey: "userAgent") as? String + } else { + DispatchQueue.main.sync { + userAgent = WKWebView().value(forKey: "userAgent") as? String + } } + return userAgent }