react-native-theoplayer 8.5.0 → 8.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/android/build.gradle +3 -3
- package/android/src/main/java/com/theoplayer/ads/AdEventAdapter.kt +2 -2
- package/android/src/main/java/com/theoplayer/presentation/PresentationManager.kt +22 -8
- package/android/src/main/java/com/theoplayer/presentation/PresentationModeChangeContext.kt +4 -1
- package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +1 -0
- package/ios/ads/THEOplayerRCTAdsEventHandler.swift +77 -36
- package/lib/commonjs/api/event/PlayerEvent.js +1 -0
- package/lib/commonjs/api/event/PlayerEvent.js.map +1 -1
- package/lib/module/api/event/PlayerEvent.js +1 -0
- package/lib/module/api/event/PlayerEvent.js.map +1 -1
- package/lib/typescript/api/event/AdEvent.d.ts +2 -2
- package/lib/typescript/api/event/PlayerEvent.d.ts +8 -1
- package/lib/typescript/api/event/PlayerEvent.d.ts.map +1 -1
- package/package.json +15 -15
- package/react-native-theoplayer.podspec +6 -6
- package/src/api/event/AdEvent.ts +2 -2
- package/src/api/event/PlayerEvent.ts +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.0/)
|
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [8.6.0] - 24-10-25
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Added `AdEvent.AD_CLICKED` and `AdEvent.AD_TAPPED` ad events for iOS and Android. The events are dispatched when a user taps or clicks on an ad that has a `clickThrough` link.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Upgrade example app to support React Native v0.75.
|
|
17
|
+
|
|
8
18
|
## [8.5.0] - 24-10-21
|
|
9
19
|
|
|
10
20
|
### Added
|
package/android/build.gradle
CHANGED
|
@@ -108,9 +108,9 @@ repositories {
|
|
|
108
108
|
maven { url "https://maven.theoplayer.com/releases" }
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
// The minimum supported THEOplayer version is 8.
|
|
112
|
-
def theoplayer_sdk_version = safeExtGet('THEOplayer_sdk', '[8.
|
|
113
|
-
def theoplayer_mediasession_version = safeExtGet('THEOplayer_mediasession', '[8.
|
|
111
|
+
// The minimum supported THEOplayer version is 8.3.0
|
|
112
|
+
def theoplayer_sdk_version = safeExtGet('THEOplayer_sdk', '[8.3.0, 9.0.0)')
|
|
113
|
+
def theoplayer_mediasession_version = safeExtGet('THEOplayer_mediasession', '[8.0.0, 9.0.0)')
|
|
114
114
|
|
|
115
115
|
dependencies {
|
|
116
116
|
//noinspection GradleDynamicVersion
|
|
@@ -115,8 +115,8 @@ class AdEventAdapter(private val adsApi: AdsApiWrapper, eventEmitter: AdEventEmi
|
|
|
115
115
|
GoogleImaAdEventType.AD_BREAK_STARTED, AdsEventTypes.AD_BREAK_BEGIN -> "adbreakbegin"
|
|
116
116
|
GoogleImaAdEventType.AD_BREAK_ENDED, AdsEventTypes.AD_BREAK_END -> "adbreakend"
|
|
117
117
|
GoogleImaAdEventType.AD_BREAK_FETCH_ERROR -> "aderror"
|
|
118
|
-
GoogleImaAdEventType.CLICKED -> "adclicked"
|
|
119
|
-
GoogleImaAdEventType.TAPPED -> "adtapped"
|
|
118
|
+
GoogleImaAdEventType.CLICKED, AdsEventTypes.AD_CLICKED -> "adclicked"
|
|
119
|
+
GoogleImaAdEventType.TAPPED, AdsEventTypes.AD_TAPPED -> "adtapped"
|
|
120
120
|
GoogleImaAdEventType.ICON_TAPPED -> "adicontapped"
|
|
121
121
|
GoogleImaAdEventType.ICON_FALLBACK_IMAGE_CLOSED -> "adiconfallbackimageclosed"
|
|
122
122
|
AdsEventTypes.ADD_AD -> "addad"
|
|
@@ -40,6 +40,8 @@ class PresentationManager(
|
|
|
40
40
|
|
|
41
41
|
var currentPresentationMode: PresentationMode = PresentationMode.INLINE
|
|
42
42
|
private set
|
|
43
|
+
var currentPresentationModeChangeContext: PresentationModeChangeContext? = null
|
|
44
|
+
private set
|
|
43
45
|
|
|
44
46
|
var pipConfig: PipConfig = PipConfig()
|
|
45
47
|
|
|
@@ -54,12 +56,14 @@ class PresentationManager(
|
|
|
54
56
|
}
|
|
55
57
|
onPictureInPictureModeChanged = object : BroadcastReceiver() {
|
|
56
58
|
override fun onReceive(context: Context?, intent: Intent?) {
|
|
57
|
-
|
|
59
|
+
val transitioningToPip = intent
|
|
60
|
+
?.getBooleanExtra("isTransitioningToPip", false) ?: false
|
|
58
61
|
val inPip = intent?.getBooleanExtra("isInPictureInPictureMode", false) ?: false
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
// Dispatch event on every PiP mode change
|
|
63
|
+
when {
|
|
64
|
+
transitioningToPip -> onEnterPip(true)
|
|
65
|
+
inPip -> onEnterPip()
|
|
66
|
+
else -> onExitPip()
|
|
63
67
|
}
|
|
64
68
|
}
|
|
65
69
|
}
|
|
@@ -104,9 +108,11 @@ class PresentationManager(
|
|
|
104
108
|
PresentationMode.INLINE -> {
|
|
105
109
|
setFullscreen(false)
|
|
106
110
|
}
|
|
111
|
+
|
|
107
112
|
PresentationMode.FULLSCREEN -> {
|
|
108
113
|
setFullscreen(true)
|
|
109
114
|
}
|
|
115
|
+
|
|
110
116
|
PresentationMode.PICTURE_IN_PICTURE -> {
|
|
111
117
|
setFullscreen(false)
|
|
112
118
|
enterPip()
|
|
@@ -144,8 +150,13 @@ class PresentationManager(
|
|
|
144
150
|
}
|
|
145
151
|
}
|
|
146
152
|
|
|
147
|
-
private fun onEnterPip() {
|
|
148
|
-
updatePresentationMode(
|
|
153
|
+
private fun onEnterPip(transitioningToPip: Boolean = false) {
|
|
154
|
+
updatePresentationMode(
|
|
155
|
+
PresentationMode.PICTURE_IN_PICTURE,
|
|
156
|
+
if (transitioningToPip)
|
|
157
|
+
PresentationModeChangeContext(PresentationModeChangePipContext.TRANSITIONING_TO_PIP)
|
|
158
|
+
else null
|
|
159
|
+
)
|
|
149
160
|
}
|
|
150
161
|
|
|
151
162
|
private fun onExitPip() {
|
|
@@ -241,11 +252,14 @@ class PresentationManager(
|
|
|
241
252
|
presentationMode: PresentationMode,
|
|
242
253
|
context: PresentationModeChangeContext? = null
|
|
243
254
|
) {
|
|
244
|
-
if (presentationMode == currentPresentationMode
|
|
255
|
+
if (presentationMode == currentPresentationMode &&
|
|
256
|
+
context == currentPresentationModeChangeContext
|
|
257
|
+
) {
|
|
245
258
|
return
|
|
246
259
|
}
|
|
247
260
|
val prevPresentationMode = currentPresentationMode
|
|
248
261
|
currentPresentationMode = presentationMode
|
|
262
|
+
currentPresentationModeChangeContext = context
|
|
249
263
|
eventEmitter.emitPresentationModeChange(presentationMode, prevPresentationMode, context)
|
|
250
264
|
|
|
251
265
|
// Resume playing when going to PiP and player was playing
|
|
@@ -9,7 +9,10 @@ enum class PresentationModeChangePipContext {
|
|
|
9
9
|
CLOSED,
|
|
10
10
|
|
|
11
11
|
// The PiP window transitioned back into the app.
|
|
12
|
-
RESTORED
|
|
12
|
+
RESTORED,
|
|
13
|
+
|
|
14
|
+
// The app transitioning to PiP frame
|
|
15
|
+
TRANSITIONING_TO_PIP
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
data class PresentationModeChangeContext(
|
|
@@ -109,6 +109,7 @@ class PayloadBuilder {
|
|
|
109
109
|
val contextPayload = Arguments.createMap()
|
|
110
110
|
context.pip?.let { pipCtx ->
|
|
111
111
|
contextPayload.putString(EVENT_PROP_PIP, when (pipCtx) {
|
|
112
|
+
PresentationModeChangePipContext.TRANSITIONING_TO_PIP -> "transitioning-to-pip"
|
|
112
113
|
PresentationModeChangePipContext.RESTORED -> "restored"
|
|
113
114
|
else -> "closed"
|
|
114
115
|
})
|
|
@@ -15,14 +15,16 @@ let EVENT_TYPE_AD_FIRST_QUARTILE: String = "adfirstquartile"
|
|
|
15
15
|
let EVENT_TYPE_AD_THIRD_QUARTILE: String = "adthirdquartile"
|
|
16
16
|
let EVENT_TYPE_AD_MIDPOINT: String = "admidpoint"
|
|
17
17
|
let EVENT_TYPE_AD_LOADED: String = "adloaded"
|
|
18
|
+
let EVENT_TYPE_AD_TAPPED: String = "adtapped"
|
|
19
|
+
let EVENT_TYPE_AD_CLICKED: String = "adclicked"
|
|
18
20
|
|
|
19
21
|
class THEOplayerRCTAdsEventHandler {
|
|
20
22
|
// MARK: Members
|
|
21
23
|
private weak var player: THEOplayer?
|
|
22
|
-
|
|
24
|
+
|
|
23
25
|
// MARK: Events
|
|
24
26
|
var onNativeAdEvent: RCTDirectEventBlock?
|
|
25
|
-
|
|
27
|
+
|
|
26
28
|
// MARK: Ad Listeners
|
|
27
29
|
private var adBeginListener: EventListener?
|
|
28
30
|
private var adEndListener: EventListener?
|
|
@@ -33,27 +35,29 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
33
35
|
private var adMidpointListener: EventListener?
|
|
34
36
|
private var adThirdQuartileListener: EventListener?
|
|
35
37
|
private var adLoadedListener: EventListener?
|
|
36
|
-
|
|
38
|
+
private var adTappedListener: EventListener?
|
|
39
|
+
private var adClickedListener: EventListener?
|
|
40
|
+
|
|
37
41
|
// MARK: - destruction
|
|
38
42
|
func destroy() {
|
|
39
43
|
// dettach listeners
|
|
40
44
|
self.dettachListeners()
|
|
41
45
|
}
|
|
42
|
-
|
|
46
|
+
|
|
43
47
|
// MARK: - player setup / breakdown
|
|
44
48
|
func setPlayer(_ player: THEOplayer) {
|
|
45
49
|
self.player = player;
|
|
46
|
-
|
|
50
|
+
|
|
47
51
|
// attach listeners
|
|
48
52
|
self.attachListeners()
|
|
49
53
|
}
|
|
50
|
-
|
|
54
|
+
|
|
51
55
|
// MARK: - attach/dettach Listeners
|
|
52
56
|
private func attachListeners() {
|
|
53
57
|
guard let player = self.player else {
|
|
54
58
|
return
|
|
55
59
|
}
|
|
56
|
-
|
|
60
|
+
|
|
57
61
|
#if canImport(THEOplayerGoogleIMAIntegration)
|
|
58
62
|
// AD_BEGIN
|
|
59
63
|
self.adBeginListener = player.ads.addEventListener(type: AdsEventTypes.AD_BEGIN) { [weak self] event in
|
|
@@ -67,7 +71,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
73
|
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBegin listener attached to THEOplayer.ads") }
|
|
70
|
-
|
|
74
|
+
|
|
71
75
|
// AD_END
|
|
72
76
|
self.adEndListener = player.ads.addEventListener(type: AdsEventTypes.AD_END) { [weak self] event in
|
|
73
77
|
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_END event from THEOplayer Ads") }
|
|
@@ -80,7 +84,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdEnd listener attached to THEOplayer.ads") }
|
|
83
|
-
|
|
87
|
+
|
|
84
88
|
// AD_BREAK_BEGIN
|
|
85
89
|
self.adBreakBeginListener = player.ads.addEventListener(type: AdsEventTypes.AD_BREAK_BEGIN) { [weak self] event in
|
|
86
90
|
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_BREAK_BEGIN event from THEOplayer Ads") }
|
|
@@ -93,7 +97,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakBegin listener attached to THEOplayer.ads") }
|
|
96
|
-
|
|
100
|
+
|
|
97
101
|
// AD_BREAK_END
|
|
98
102
|
self.adBreakEndListener = player.ads.addEventListener(type: AdsEventTypes.AD_BREAK_END) { [weak self] event in
|
|
99
103
|
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_BREAK_END event from THEOplayer Ads") }
|
|
@@ -106,7 +110,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
106
110
|
}
|
|
107
111
|
}
|
|
108
112
|
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakEnd listener attached to THEOplayer.ads") }
|
|
109
|
-
|
|
113
|
+
|
|
110
114
|
// AD_ERROR
|
|
111
115
|
self.adErrorListener = player.ads.addEventListener(type: AdsEventTypes.AD_ERROR) { [weak self] event in
|
|
112
116
|
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_ERROR event from THEOplayer Ads") }
|
|
@@ -119,7 +123,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
119
123
|
}
|
|
120
124
|
}
|
|
121
125
|
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdError listener attached to THEOplayer.ads") }
|
|
122
|
-
|
|
126
|
+
|
|
123
127
|
// AD_FIRST_QUARTILE
|
|
124
128
|
self.adFirstQuartileListener = player.ads.addEventListener(type: AdsEventTypes.AD_FIRST_QUARTILE) { [weak self] event in
|
|
125
129
|
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_FIRST_QUARTILE event from THEOplayer Ads") }
|
|
@@ -132,7 +136,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
132
136
|
}
|
|
133
137
|
}
|
|
134
138
|
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdFirstQuartile listener attached to THEOplayer.ads") }
|
|
135
|
-
|
|
139
|
+
|
|
136
140
|
// AD_MIDPOINT
|
|
137
141
|
self.adMidpointListener = player.ads.addEventListener(type: AdsEventTypes.AD_MIDPOINT) { [weak self] event in
|
|
138
142
|
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_MIDPOINT event from THEOplayer Ads") }
|
|
@@ -145,7 +149,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
145
149
|
}
|
|
146
150
|
}
|
|
147
151
|
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdMidpoint listener attached to THEOplayer.ads") }
|
|
148
|
-
|
|
152
|
+
|
|
149
153
|
// AD_THIRD_QUARTILE
|
|
150
154
|
self.adThirdQuartileListener = player.ads.addEventListener(type: AdsEventTypes.AD_THIRD_QUARTILE) { [weak self] event in
|
|
151
155
|
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_THIRD_QUARTILE event from THEOplayer Ads") }
|
|
@@ -158,7 +162,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
158
162
|
}
|
|
159
163
|
}
|
|
160
164
|
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdThirdQuartile listener attached to THEOplayer.ads") }
|
|
161
|
-
|
|
165
|
+
|
|
162
166
|
// AD_LOADED
|
|
163
167
|
self.adLoadedListener = player.ads.addEventListener(type: AdsEventTypes.AD_LOADED) { [weak self] event in
|
|
164
168
|
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_LOADED event from THEOplayer Ads") }
|
|
@@ -170,69 +174,106 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
170
174
|
])
|
|
171
175
|
}
|
|
172
176
|
}
|
|
173
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE]
|
|
177
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdLoaded listener attached to THEOplayer.ads") }
|
|
178
|
+
|
|
179
|
+
// AD_TAPPED
|
|
180
|
+
self.adTappedListener = player.ads.addEventListener(type: AdsEventTypes.AD_TAPPED) { [weak self] event in
|
|
181
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_TAPPED event from THEOplayer Ads") }
|
|
182
|
+
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
183
|
+
let ad = event.ad {
|
|
184
|
+
forwardedAdEvent([
|
|
185
|
+
AD_EVENT_PROP_TYPE: EVENT_TYPE_AD_TAPPED,
|
|
186
|
+
AD_EVENT_PROP_AD: THEOplayerRCTAdAdapter.fromAd(ad: ad)
|
|
187
|
+
])
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdTapped listener attached to THEOplayer.ads") }
|
|
191
|
+
|
|
192
|
+
// AD_CLICKED
|
|
193
|
+
self.adClickedListener = player.ads.addEventListener(type: AdsEventTypes.AD_CLICKED) { [weak self] event in
|
|
194
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_CLICKED event from THEOplayer Ads") }
|
|
195
|
+
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
196
|
+
let ad = event.ad {
|
|
197
|
+
forwardedAdEvent([
|
|
198
|
+
AD_EVENT_PROP_TYPE: EVENT_TYPE_AD_CLICKED,
|
|
199
|
+
AD_EVENT_PROP_AD: THEOplayerRCTAdAdapter.fromAd(ad: ad)
|
|
200
|
+
])
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdClicked listener attached to THEOplayer.ads") }
|
|
174
204
|
#endif
|
|
175
|
-
|
|
176
205
|
}
|
|
177
|
-
|
|
206
|
+
|
|
178
207
|
private func dettachListeners() {
|
|
179
208
|
guard let player = self.player else {
|
|
180
209
|
return
|
|
181
210
|
}
|
|
182
|
-
|
|
211
|
+
|
|
183
212
|
#if canImport(THEOplayerGoogleIMAIntegration)
|
|
184
213
|
// AD_BEGIN
|
|
185
214
|
if let adBeginListener = self.adBeginListener {
|
|
186
215
|
player.ads.removeEventListener(type: AdsEventTypes.AD_BEGIN, listener: adBeginListener)
|
|
187
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBegin listener
|
|
216
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBegin listener detached from THEOplayer.ads") }
|
|
188
217
|
}
|
|
189
|
-
|
|
218
|
+
|
|
190
219
|
// AD_END
|
|
191
220
|
if let adEndListener = self.adEndListener {
|
|
192
221
|
player.ads.removeEventListener(type: AdsEventTypes.AD_END, listener: adEndListener)
|
|
193
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdEnd listener
|
|
222
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdEnd listener detached from THEOplayer.ads") }
|
|
194
223
|
}
|
|
195
|
-
|
|
224
|
+
|
|
196
225
|
// AD_BREAK_BEGIN
|
|
197
226
|
if let adBreakBeginListener = self.adBreakBeginListener {
|
|
198
227
|
player.ads.removeEventListener(type: AdsEventTypes.AD_BREAK_BEGIN, listener: adBreakBeginListener)
|
|
199
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakBegin listener
|
|
228
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakBegin listener detached from THEOplayer.ads") }
|
|
200
229
|
}
|
|
201
|
-
|
|
230
|
+
|
|
202
231
|
// AD_BREAK_END
|
|
203
232
|
if let adBreakEndListener = self.adBreakEndListener {
|
|
204
233
|
player.ads.removeEventListener(type: AdsEventTypes.AD_BREAK_END, listener: adBreakEndListener)
|
|
205
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakEnd listener
|
|
234
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakEnd listener detached from THEOplayer.ads") }
|
|
206
235
|
}
|
|
207
|
-
|
|
236
|
+
|
|
208
237
|
// AD_ERROR
|
|
209
238
|
if let adErrorListener = self.adErrorListener {
|
|
210
239
|
player.ads.removeEventListener(type: AdsEventTypes.AD_ERROR, listener: adErrorListener)
|
|
211
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdError listener
|
|
240
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdError listener detached from THEOplayer.ads") }
|
|
212
241
|
}
|
|
213
|
-
|
|
242
|
+
|
|
214
243
|
// AD_FIRST_QUARTILE
|
|
215
244
|
if let adFirstQuartileListener = self.adFirstQuartileListener {
|
|
216
245
|
player.ads.removeEventListener(type: AdsEventTypes.AD_FIRST_QUARTILE, listener: adFirstQuartileListener)
|
|
217
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adFirstQuartileListener listener
|
|
246
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adFirstQuartileListener listener detached from THEOplayer.ads") }
|
|
218
247
|
}
|
|
219
|
-
|
|
248
|
+
|
|
220
249
|
// AD_MIDPOINT
|
|
221
250
|
if let adMidpointListener = self.adMidpointListener {
|
|
222
251
|
player.ads.removeEventListener(type: AdsEventTypes.AD_MIDPOINT, listener: adMidpointListener)
|
|
223
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adMidpointListener listener
|
|
252
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adMidpointListener listener detached from THEOplayer.ads") }
|
|
224
253
|
}
|
|
225
|
-
|
|
254
|
+
|
|
226
255
|
// AD_THIRD_QUARTILE
|
|
227
256
|
if let adThirdQuartileListener = self.adThirdQuartileListener {
|
|
228
257
|
player.ads.removeEventListener(type: AdsEventTypes.AD_THIRD_QUARTILE, listener: adThirdQuartileListener)
|
|
229
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adThirdQuartileListener listener
|
|
258
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adThirdQuartileListener listener detached from THEOplayer.ads") }
|
|
230
259
|
}
|
|
231
|
-
|
|
260
|
+
|
|
232
261
|
// AD_LOADED
|
|
233
262
|
if let adLoadedListener = self.adLoadedListener {
|
|
234
263
|
player.ads.removeEventListener(type: AdsEventTypes.AD_LOADED, listener: adLoadedListener)
|
|
235
|
-
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adLoadedListener listener
|
|
264
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adLoadedListener listener detached from THEOplayer.ads") }
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// AD_TAPPED
|
|
268
|
+
if let adTappedListener = self.adLoadedListener {
|
|
269
|
+
player.ads.removeEventListener(type: AdsEventTypes.AD_TAPPED, listener: adTappedListener)
|
|
270
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adTapped listener detached from THEOplayer.ads") }
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// AD_CLICKED
|
|
274
|
+
if let adClickedListener = self.adLoadedListener {
|
|
275
|
+
player.ads.removeEventListener(type: AdsEventTypes.AD_CLICKED, listener: adClickedListener)
|
|
276
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adClicked listener detached from THEOplayer.ads") }
|
|
236
277
|
}
|
|
237
278
|
#endif
|
|
238
279
|
|
|
@@ -7,6 +7,7 @@ exports.PresentationModeChangePipContext = void 0;
|
|
|
7
7
|
let PresentationModeChangePipContext = exports.PresentationModeChangePipContext = /*#__PURE__*/function (PresentationModeChangePipContext) {
|
|
8
8
|
PresentationModeChangePipContext["CLOSED"] = "closed";
|
|
9
9
|
PresentationModeChangePipContext["RESTORED"] = "restored";
|
|
10
|
+
PresentationModeChangePipContext["TRANSITIONING_TO_PIP"] = "transitioning-to-pip";
|
|
10
11
|
return PresentationModeChangePipContext;
|
|
11
12
|
}({});
|
|
12
13
|
//# sourceMappingURL=PlayerEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PresentationModeChangePipContext","exports"],"sourceRoot":"../../../../src","sources":["api/event/PlayerEvent.ts"],"mappings":";;;;;;IAiDYA,gCAAgC,GAAAC,OAAA,CAAAD,gCAAA,0BAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAA,OAAhCA,gCAAgC;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PresentationModeChangePipContext","exports"],"sourceRoot":"../../../../src","sources":["api/event/PlayerEvent.ts"],"mappings":";;;;;;IAiDYA,gCAAgC,GAAAC,OAAA,CAAAD,gCAAA,0BAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAA,OAAhCA,gCAAgC;AAAA","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export let PresentationModeChangePipContext = /*#__PURE__*/function (PresentationModeChangePipContext) {
|
|
2
2
|
PresentationModeChangePipContext["CLOSED"] = "closed";
|
|
3
3
|
PresentationModeChangePipContext["RESTORED"] = "restored";
|
|
4
|
+
PresentationModeChangePipContext["TRANSITIONING_TO_PIP"] = "transitioning-to-pip";
|
|
4
5
|
return PresentationModeChangePipContext;
|
|
5
6
|
}({});
|
|
6
7
|
//# sourceMappingURL=PlayerEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PresentationModeChangePipContext"],"sourceRoot":"../../../../src","sources":["api/event/PlayerEvent.ts"],"mappings":"AAiDA,WAAYA,gCAAgC,0BAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAA,OAAhCA,gCAAgC;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PresentationModeChangePipContext"],"sourceRoot":"../../../../src","sources":["api/event/PlayerEvent.ts"],"mappings":"AAiDA,WAAYA,gCAAgC,0BAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAhCA,gCAAgC;EAAA,OAAhCA,gCAAgC;AAAA","ignoreList":[]}
|
|
@@ -91,14 +91,14 @@ export declare enum AdEventType {
|
|
|
91
91
|
* Dispatched when an ad is clicked.
|
|
92
92
|
*
|
|
93
93
|
* @remarks
|
|
94
|
-
* <br/> - Available only on Android.
|
|
94
|
+
* <br/> - Available only on iOS and Android.
|
|
95
95
|
*/
|
|
96
96
|
AD_CLICKED = "adclicked",
|
|
97
97
|
/**
|
|
98
98
|
* Dispatched when a non-clickthrough portion of an ad is tapped.
|
|
99
99
|
*
|
|
100
100
|
* @remarks
|
|
101
|
-
* <br/> - Available only on Android.
|
|
101
|
+
* <br/> - Available only on iOS and Android.
|
|
102
102
|
*/
|
|
103
103
|
AD_TAPPED = "adtapped",
|
|
104
104
|
/**
|
|
@@ -47,7 +47,14 @@ export declare enum PresentationModeChangePipContext {
|
|
|
47
47
|
/**
|
|
48
48
|
* The PiP window was restored/maximized.
|
|
49
49
|
*/
|
|
50
|
-
RESTORED = "restored"
|
|
50
|
+
RESTORED = "restored",
|
|
51
|
+
/**
|
|
52
|
+
* The app is transitioning to the PiP frame.
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* <br/> - This property only applies to Android platforms.
|
|
56
|
+
*/
|
|
57
|
+
TRANSITIONING_TO_PIP = "transitioning-to-pip"
|
|
51
58
|
}
|
|
52
59
|
export interface PresentationModeChangeContext {
|
|
53
60
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerEvent.d.ts","sourceRoot":"","sources":["../../../../src/api/event/PlayerEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACrH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;IAC9D,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC;IACjF,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC;IACzE;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;IAChE;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC;IACjF;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,oBAAY,gCAAgC;IAC1C;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,QAAQ,aAAa;
|
|
1
|
+
{"version":3,"file":"PlayerEvent.d.ts","sourceRoot":"","sources":["../../../../src/api/event/PlayerEvent.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-theoplayer",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.6.0",
|
|
4
4
|
"description": "A THEOplayer video component for react-native.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -25,16 +25,16 @@
|
|
|
25
25
|
],
|
|
26
26
|
"scripts": {
|
|
27
27
|
"typescript": "tsc --noEmit",
|
|
28
|
-
"prettier": "prettier --check \"(src|example)/**/*.{js,jsx,ts,tsx}\"",
|
|
29
|
-
"prettier:fix": "prettier --write \"(src|example)/**/*.{js,jsx,ts,tsx}\"",
|
|
28
|
+
"prettier": "prettier --check \"(src|example|e2e)/**/*.{js,jsx,ts,tsx}\"",
|
|
29
|
+
"prettier:fix": "prettier --write \"(src|example|e2e)/**/*.{js,jsx,ts,tsx}\"",
|
|
30
30
|
"lint": "eslint \"**/*.{ts,tsx}\"",
|
|
31
31
|
"lint:fix": "npm run lint -- --fix",
|
|
32
|
-
"prepare": "bob build && husky
|
|
32
|
+
"prepare": "bob build && husky",
|
|
33
33
|
"pods": "cd example && pod-install --quiet",
|
|
34
34
|
"docs": "typedoc --treatWarningsAsErrors"
|
|
35
35
|
},
|
|
36
36
|
"lint-staged": {
|
|
37
|
-
"(src|example)/**/*.{js,jsx,ts,tsx}": [
|
|
37
|
+
"(src|example|e2e)/**/*.{js,jsx,ts,tsx}": [
|
|
38
38
|
"prettier --write"
|
|
39
39
|
]
|
|
40
40
|
},
|
|
@@ -55,24 +55,24 @@
|
|
|
55
55
|
"registry": "https://registry.npmjs.org/"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@eslint/js": "^9.
|
|
59
|
-
"@react-native/eslint-config": "^0.
|
|
60
|
-
"@types/react": "^18.3.
|
|
61
|
-
"eslint": "^8.57.
|
|
58
|
+
"@eslint/js": "^9.13.0",
|
|
59
|
+
"@react-native/eslint-config": "^0.75.4",
|
|
60
|
+
"@types/react": "^18.3.12",
|
|
61
|
+
"eslint": "^8.57.1",
|
|
62
62
|
"eslint-config-prettier": "^9.1.0",
|
|
63
|
-
"husky": "^9.1.
|
|
63
|
+
"husky": "^9.1.6",
|
|
64
64
|
"lint-staged": "^15.2.10",
|
|
65
65
|
"pod-install": "^0.1.39",
|
|
66
66
|
"prettier": "^3.3.3",
|
|
67
|
-
"react": "^18.
|
|
68
|
-
"react-native": "^0.
|
|
67
|
+
"react": "^18.3.1",
|
|
68
|
+
"react-native": "^0.75.4",
|
|
69
69
|
"react-native-builder-bob": "^0.23.2",
|
|
70
|
-
"theoplayer": "^8.
|
|
70
|
+
"theoplayer": "^8.3.0",
|
|
71
71
|
"typedoc": "^0.25.13",
|
|
72
72
|
"typedoc-plugin-external-resolver": "^1.0.3",
|
|
73
|
-
"typedoc-plugin-mdn-links": "^3.
|
|
73
|
+
"typedoc-plugin-mdn-links": "^3.3.4",
|
|
74
74
|
"typescript": "5.1.6",
|
|
75
|
-
"typescript-eslint": "^8.
|
|
75
|
+
"typescript-eslint": "^8.11.0"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
78
78
|
"react": "*",
|
|
@@ -33,21 +33,21 @@ Pod::Spec.new do |s|
|
|
|
33
33
|
|
|
34
34
|
# THEOplayer core Dependency
|
|
35
35
|
puts "Adding THEOplayerSDK-core"
|
|
36
|
-
s.dependency "THEOplayerSDK-core", "~> 8.
|
|
37
|
-
|
|
38
|
-
if theofeatures.include?("GOOGLE_IMA")
|
|
36
|
+
s.dependency "THEOplayerSDK-core", "~> 8.3"
|
|
37
|
+
|
|
38
|
+
if theofeatures.include?("GOOGLE_IMA")
|
|
39
39
|
puts "Adding THEOplayer-Integration-GoogleIMA"
|
|
40
|
-
s.dependency "THEOplayer-Integration-GoogleIMA", "~> 8.
|
|
40
|
+
s.dependency "THEOplayer-Integration-GoogleIMA", "~> 8.3"
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
if theofeatures.include?("CHROMECAST")
|
|
44
44
|
puts "Adding THEOplayer-Integration-GoogleCast"
|
|
45
|
-
s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 8.
|
|
45
|
+
s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 8.3"
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
if theofeatures.include?("SIDELOADED_TEXTTRACKS")
|
|
49
49
|
puts "Adding THEOplayer-Connector-SideloadedSubtitle"
|
|
50
|
-
s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 8.
|
|
50
|
+
s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 8.3"
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
end
|
package/src/api/event/AdEvent.ts
CHANGED
|
@@ -113,7 +113,7 @@ export enum AdEventType {
|
|
|
113
113
|
* Dispatched when an ad is clicked.
|
|
114
114
|
*
|
|
115
115
|
* @remarks
|
|
116
|
-
* <br/> - Available only on Android.
|
|
116
|
+
* <br/> - Available only on iOS and Android.
|
|
117
117
|
*/
|
|
118
118
|
AD_CLICKED = 'adclicked',
|
|
119
119
|
|
|
@@ -121,7 +121,7 @@ export enum AdEventType {
|
|
|
121
121
|
* Dispatched when a non-clickthrough portion of an ad is tapped.
|
|
122
122
|
*
|
|
123
123
|
* @remarks
|
|
124
|
-
* <br/> - Available only on Android.
|
|
124
|
+
* <br/> - Available only on iOS and Android.
|
|
125
125
|
*/
|
|
126
126
|
AD_TAPPED = 'adtapped',
|
|
127
127
|
|
|
@@ -57,6 +57,14 @@ export enum PresentationModeChangePipContext {
|
|
|
57
57
|
* The PiP window was restored/maximized.
|
|
58
58
|
*/
|
|
59
59
|
RESTORED = 'restored',
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The app is transitioning to the PiP frame.
|
|
63
|
+
*
|
|
64
|
+
* @remarks
|
|
65
|
+
* <br/> - This property only applies to Android platforms.
|
|
66
|
+
*/
|
|
67
|
+
TRANSITIONING_TO_PIP = 'transitioning-to-pip',
|
|
60
68
|
}
|
|
61
69
|
|
|
62
70
|
export interface PresentationModeChangeContext {
|