Created
August 8, 2023 07:31
-
-
Save initishbhatt/3868bdc941f29333346de2e4436be3ec to your computer and use it in GitHub Desktop.
AV Crash open Telemetry
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright The OpenTelemetry Authors | |
* SPDX-License-Identifier: Apache-2.0 | |
*/ | |
import Foundation | |
import OpenTelemetryApi | |
import OpenTelemetrySdk | |
import StdoutExporter | |
import URLSessionInstrumentation | |
import AVFoundation | |
func simpleNetworkCall() { | |
let url = URL(string: "http://httpbin.org/get")! | |
let request = URLRequest(url: url) | |
let semaphore = DispatchSemaphore(value: 0) | |
AssetSessionManager().setup() | |
let task = URLSession.shared.dataTask(with: request) { data, _, _ in | |
if let data = data { | |
let string = String(decoding: data, as: UTF8.self) | |
print(string) | |
} | |
semaphore.signal() | |
} | |
task.resume() | |
semaphore.wait()} | |
let spanProcessor = SimpleSpanProcessor(spanExporter: StdoutExporter(isDebug: true)) | |
OpenTelemetry.registerTracerProvider(tracerProvider: | |
TracerProviderBuilder() | |
.add(spanProcessor: spanProcessor) | |
.build() | |
) | |
let networkInstrumentation = URLSessionInstrumentation(configuration: URLSessionInstrumentationConfiguration()) | |
simpleNetworkCall() | |
sleep(1) | |
class AssetSessionManager: NSObject, AVAssetDownloadDelegate { | |
func setup() { | |
let backgroundConfiguration = URLSessionConfiguration.background(withIdentifier: "AAPL-Identifier") | |
let assetDownloadURLSession = AVAssetDownloadURLSession(configuration: backgroundConfiguration, assetDownloadDelegate: self, delegateQueue: OperationQueue.main) | |
let videoURL = AVURLAsset(url: URL(string: "https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/.m3u8")!) | |
let preferredMediaSelection = videoURL.preferredMediaSelection | |
guard let task = assetDownloadURLSession.aggregateAssetDownloadTask(with: videoURL, | |
mediaSelections: [preferredMediaSelection], | |
assetTitle: "my asset", | |
assetArtworkData: nil, | |
options: | |
[AVAssetDownloadTaskMinimumRequiredMediaBitrateKey: 265_000]) else { return } | |
task.taskDescription = "1" | |
task.resume() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment