Skip to content

Commit a8b8590

Browse files
authored
feat: update demo for all new play APIs (#2)
* feat: update demo for all new play APIs * feat: add demo auto play
1 parent 5b0c2b9 commit a8b8590

File tree

5 files changed

+58
-27
lines changed

5 files changed

+58
-27
lines changed

TrinityAudioSwiftUIDemo.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -648,8 +648,8 @@
648648
isa = XCRemoteSwiftPackageReference;
649649
repositoryURL = "https://github.com/TrinityAudioSDK/trinityaudio-ios-sdk";
650650
requirement = {
651-
kind = upToNextMajorVersion;
652-
minimumVersion = 2.0.85;
651+
branch = main;
652+
kind = branch;
653653
};
654654
};
655655
/* End XCRemoteSwiftPackageReference section */
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
{
2+
"originHash" : "a23b42ccf7382d7f0ed93dc0d5b1c30c7cff3d6211d146b443deec7fef1734ce",
23
"pins" : [
34
{
45
"identity" : "trinityaudio-ios-sdk",
56
"kind" : "remoteSourceControl",
67
"location" : "https://github.com/TrinityAudioSDK/trinityaudio-ios-sdk",
78
"state" : {
8-
"revision" : "b3147950462af27a525accb76fde3e51754230c7",
9-
"version" : "2.0.85"
9+
"branch" : "main",
10+
"revision" : "49bf7e5028995c3a620806f29d4e61c100a84f30"
1011
}
1112
}
1213
],
13-
"version" : 2
14+
"version" : 3
1415
}

TrinityAudioSwiftUIDemo/ContentView.swift

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,24 @@ import TrinityPlayer
55
struct ContentView: View {
66

77
@StateObject var permissionRequester = AppTrackingPermissionRequester()
8+
// Use session value to force the screen reload
9+
@State var session = 0
810

911
var body: some View {
10-
VStack{
11-
if permissionRequester.isRequestedTrackingPermission {
12-
DemoContentView()
13-
} else {
14-
EmptyView()
12+
NavigationView{
13+
VStack{
14+
if permissionRequester.isRequestedTrackingPermission {
15+
NavigationLink("Main Usage") {
16+
DemoContentView(session: $session).id(session)
17+
}.padding(.bottom, 20)
18+
NavigationLink("Auto Play") {
19+
DemoContentView(autoPlay: true, session: $session).id(session)
20+
}
21+
} else {
22+
EmptyView()
23+
}
1524
}
16-
}
17-
.onAppear(perform: {
25+
}.onAppear(perform: {
1826
// Request permission for tracking user.
1927
// After have a permission we could access the IAD
2028
permissionRequester.request()

TrinityAudioSwiftUIDemo/DemoContentView.swift

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,18 @@ import SwiftUI
99
import TrinityPlayer
1010

1111
struct DemoContentView: View {
12-
13-
@StateObject var trinityAudioController = TrinityAudioController(unitId: "2900004156", contentURL:"https://demo.trinityaudio.ai/general-demo/demo.html")
14-
@StateObject var delegate = TrinityPlayerDelegate()
12+
13+
var autoPlay: Bool = false
14+
@ObservedObject var trinityAudioController: TrinityAudioController
15+
@ObservedObject var delegate: TrinityPlayerDelegate = TrinityPlayerDelegate()
16+
@Binding var session: Int
17+
18+
internal init(autoPlay: Bool = false, session: Binding<Int>) {
19+
self._session = session
20+
self.autoPlay = autoPlay
21+
self.trinityAudioController = TrinityAudioController(unitId: "2900004156", contentURL:"https://demo.trinityaudio.ai/general-demo/demo.html", autoPlay: autoPlay)
22+
self.trinityAudioController.delegate = delegate
23+
}
1524

1625
var body: some View {
1726
ScrollView(.vertical) {
@@ -32,6 +41,19 @@ struct DemoContentView: View {
3241
.foregroundColor(Color(UIColor.lightGray))
3342
// 1. Insert the player view on the scroll view
3443
TrinityAudioPlayer(audioController: trinityAudioController)
44+
Text("Player Id: \(trinityAudioController.playerId ?? "")")
45+
.font(.system(size: 14, weight: .semibold))
46+
HStack{
47+
Button("Play", action: {
48+
trinityAudioController.play()
49+
})
50+
.padding(.trailing, 20)
51+
Button("Pause") {
52+
if let playerId = trinityAudioController.playerId {
53+
trinityAudioController.pause(playerID: playerId)
54+
}
55+
}
56+
}
3557
VStack(alignment: .leading) {
3658
Text("Player Events")
3759
.font(.system(size: 21, weight: .heavy))
@@ -52,15 +74,16 @@ struct DemoContentView: View {
5274
.trinityFAB(
5375
controller: trinityAudioController,
5476
fabViewTopLeftCoordinates: CGPoint(x: 20, y: 80)
55-
).onAppear(perform: {
56-
trinityAudioController.delegate = delegate
57-
})
77+
).onDisappear{
78+
trinityAudioController.invalidate()
79+
session = session + 1
80+
}
5881
}
5982
}
6083

6184
struct DemoContentView_Previews: PreviewProvider {
6285
static var previews: some View {
63-
DemoContentView()
86+
DemoContentView(session: .constant(0))
6487
}
6588
}
6689

TrinityAudioSwiftUIDemo/TrinityPlayerDelegate.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
import Foundation
99
import TrinityPlayer
1010

11+
1112
class TrinityPlayerDelegate: ObservableObject, TrinityAudioDelegate {
12-
13+
1314
private var cachedEvents = [[String: Any]]()
1415
@Published var eventLog : String = ""
1516

@@ -27,12 +28,10 @@ class TrinityPlayerDelegate: ObservableObject, TrinityAudioDelegate {
2728

2829
func trinity(service: TrinityPlayer.TrinityAudioProtocol, didReceivePostMessage message: [String : Any]) {
2930
print(message)
30-
31-
cachedEvents.append(message)
32-
33-
if let eventsData = try? JSONSerialization.data(withJSONObject: cachedEvents, options: [.prettyPrinted, .withoutEscapingSlashes]),
34-
let eventsText = String(data: eventsData, encoding: .utf8) {
35-
eventLog = eventsText
36-
}
31+
eventLog.append("\n\(message)")
32+
}
33+
34+
func trinity(service: any TrinityPlayer.TrinityAudioProtocol, onPlayerReady playerId: String) {
35+
print("onPlayerReady \(playerId)")
3736
}
3837
}

0 commit comments

Comments
 (0)