Skip to content

Instantly share code, notes, and snippets.

@initishbhatt
Created August 8, 2023 07:31
Show Gist options
  • Save initishbhatt/3868bdc941f29333346de2e4436be3ec to your computer and use it in GitHub Desktop.
Save initishbhatt/3868bdc941f29333346de2e4436be3ec to your computer and use it in GitHub Desktop.
AV Crash open Telemetry
/*
* 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