Skip to content

Commit

Permalink
feat(player): use new analytics endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
ThibaultBee committed Jul 25, 2024
1 parent dca0eae commit 69bbdce
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 57 deletions.
2 changes: 1 addition & 1 deletion ApiVideoPlayer.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ Pod::Spec.new do |s|
s.source_files = 'Sources/**/*.{swift, plist}'
s.resources = 'Sources/**/*.{storyboard,xib,xcassets,json,png}'

s.dependency "ApiVideoPlayerAnalytics", "1.1.1"
s.dependency "ApiVideoPlayerAnalytics", "2.0.0"
end
2 changes: 1 addition & 1 deletion ApiVideoPlayer.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1237,7 +1237,7 @@
repositoryURL = "https://github.com/apivideo/api.video-swift-player-analytics";
requirement = {
kind = exactVersion;
version = 1.1.1;
version = 2.0.0;
};
};
/* End XCRemoteSwiftPackageReference section */
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ let package = Package(
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
.package(url: "https://github.com/apivideo/api.video-swift-player-analytics", exact: "1.1.1"),
.package(url: "https://github.com/apivideo/api.video-swift-player-analytics", exact: "2.0.0"),
.package(url: "https://github.com/apivideo/api.video-swift-client", exact: "1.2.1")
],
targets: [
Expand Down
56 changes: 2 additions & 54 deletions Sources/ApiVideoPlayer/Player/ApiVideoPlayerController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ import MediaPlayer
/// It is used internally of the ``ApiVideoPlayerView``.
/// It could be used directly if you want to use the player with a fully custom UI.
public class ApiVideoPlayerController: NSObject {
internal let player = AVPlayer(playerItem: nil)
private var analytics: PlayerAnalytics?
internal let player = ApiVideoAnalyticsAVPlayer(playerItem: nil)
private var timeObserver: Any?
private var isFirstPlay = true
private var isSeeking = false
Expand Down Expand Up @@ -163,9 +162,7 @@ public class ApiVideoPlayerController: NSObject {
name: .AVPlayerItemDidPlayToEndTime,
object: playerItem
)
if let urlAsset = playerItem.asset as? AVURLAsset {
self.setUpAnalytics(url: urlAsset.url.absoluteString)
}

}

private func notifyError(error: Error) {
Expand Down Expand Up @@ -209,15 +206,6 @@ public class ApiVideoPlayerController: NSObject {
player.removeTimeObserver(observer)
}

private func setUpAnalytics(url: String) {
do {
let option = try Options(mediaUrl: url)
self.analytics = PlayerAnalytics(options: option)
} catch {
print("Failed to initiate analytics for \(url)")
}
}

/// Get if the player is playing a live stream.
/// - Returns: True if the player is playing a live stream
public var isLive: Bool {
Expand Down Expand Up @@ -253,16 +241,6 @@ public class ApiVideoPlayerController: NSObject {
private func seekImpl(to time: CMTime, completion: @escaping (Bool) -> Void) {
let from = self.currentTime
self.player.seek(to: time, toleranceBefore: .zero, toleranceAfter: .zero) { completed in
self.analytics?
.seek(
from: Float(max(0, from.seconds)),
to: Float(max(0, time.seconds))
) { result in
switch result {
case .success: break
case let .failure(error): print("Failed to send seek event to analytics: \(error)")
}
}
self.infoNowPlaying.updateCurrentTime(currentTime: time)
completion(completed)
}
Expand Down Expand Up @@ -514,12 +492,6 @@ public class ApiVideoPlayerController: NSObject {
self.replay()
self.multicastDelegate.didLoop()
}
self.analytics?.end { result in
switch result {
case .success: break
case let .failure(error): print("Failed to send end event to analytics: \(error)")
}
}
self.multicastDelegate.didEnd()
}

Expand Down Expand Up @@ -578,12 +550,6 @@ public class ApiVideoPlayerController: NSObject {
if self.autoplay {
self.play()
}
self.analytics?.ready { result in
switch result {
case .success: break
case let .failure(error): print("Failed to send ready event to analytics: \(error)")
}
}
}
}

Expand All @@ -596,12 +562,6 @@ public class ApiVideoPlayerController: NSObject {
return
}

self.analytics?.pause { result in
switch result {
case .success: break
case let .failure(error): print("Failed to send pause event to analytics: \(error)")
}
}
self.infoNowPlaying.pause(currentTime: self.currentTime)
self.multicastDelegate.didPause()
}
Expand All @@ -623,19 +583,7 @@ public class ApiVideoPlayerController: NSObject {
)

#endif
self.analytics?.play { result in
switch result {
case .success: break
case let .failure(error): print("Failed to send play event to analytics: \(error)")
}
}
} else {
self.analytics?.resume { result in
switch result {
case .success: break
case let .failure(error): print("Failed to send resume event to analytics: \(error)")
}
}
self.infoNowPlaying.play(currentTime: self.currentTime)
}
#if !os(macOS)
Expand Down

0 comments on commit 69bbdce

Please sign in to comment.