react-native-theoplayer 2.5.0 → 2.7.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 +24 -0
- package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +9 -15
- package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +2 -1
- package/android/src/main/java/com/theoplayer/util/ViewResolver.kt +9 -1
- package/ios/THEOplayerRCTDebug.swift +3 -3
- package/ios/THEOplayerRCTMainEventHandler.swift +59 -59
- package/ios/THEOplayerRCTMediaTrackEventHandler.swift +18 -18
- package/ios/THEOplayerRCTNetworkUtils.swift +1 -1
- package/ios/THEOplayerRCTPlayerAPI.swift +14 -14
- package/ios/THEOplayerRCTPrintUtils.swift +16 -0
- package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +6 -6
- package/ios/THEOplayerRCTTextTrackEventHandler.swift +21 -21
- package/ios/THEOplayerRCTView.swift +29 -29
- package/ios/ads/THEOplayerRCTAdsAPI+DAI.swift +6 -6
- package/ios/ads/THEOplayerRCTAdsAPI.swift +13 -13
- package/ios/ads/THEOplayerRCTAdsEventHandler.swift +27 -27
- package/ios/ads/THEOplayerRCTSourceDescriptionBuilder+Ads.swift +5 -5
- package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +63 -37
- package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +16 -16
- package/ios/casting/THEOplayerRCTCastAPI+Airplay.swift +6 -6
- package/ios/casting/THEOplayerRCTCastAPI+Chromecast.swift +10 -10
- package/ios/casting/THEOplayerRCTCastAPI.swift +1 -1
- package/ios/casting/THEOplayerRCTCastEventHandler.swift +11 -11
- package/ios/contentprotection/THEOplayerRCTContentProtectionAPI.swift +1 -1
- package/ios/pip/THEOplayerRCTPipControlsManager.swift +1 -1
- package/lib/commonjs/api/abr/ABRConfiguration.js +25 -0
- package/lib/commonjs/api/abr/ABRConfiguration.js.map +1 -1
- package/lib/commonjs/api/track/Track.js +5 -1
- package/lib/commonjs/api/track/Track.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js +2 -6
- package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +41 -10
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +105 -52
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/module/api/abr/ABRConfiguration.js +19 -0
- package/lib/module/api/abr/ABRConfiguration.js.map +1 -1
- package/lib/module/api/track/Track.js +4 -1
- package/lib/module/api/track/Track.js.map +1 -1
- package/lib/module/internal/THEOplayerView.web.js +2 -6
- package/lib/module/internal/THEOplayerView.web.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +41 -10
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js +106 -53
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/typescript/api/abr/ABRConfiguration.d.ts +5 -1
- package/lib/typescript/api/track/Track.d.ts +1 -0
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +2 -0
- package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +3 -3
- package/package.json +1 -1
- package/react-native-theoplayer.podspec +1 -1
- package/src/api/abr/ABRConfiguration.ts +5 -1
- package/src/api/track/Track.ts +5 -1
- package/src/internal/THEOplayerView.web.tsx +2 -6
- package/src/internal/adapter/THEOplayerAdapter.ts +44 -10
- package/src/internal/adapter/THEOplayerWebAdapter.ts +97 -50
|
@@ -140,7 +140,7 @@ public class THEOplayerRCTView: UIView {
|
|
|
140
140
|
self.player?.removeAllIntegrations()
|
|
141
141
|
self.player?.destroy()
|
|
142
142
|
self.player = nil
|
|
143
|
-
if DEBUG_THEOPLAYER_INTERACTION {
|
|
143
|
+
if DEBUG_THEOPLAYER_INTERACTION { PrintUtils.printLog(logText: "[NATIVE] THEOplayer instance destroyed.") }
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
// MARK: - Property bridging (config)
|
|
@@ -153,7 +153,7 @@ public class THEOplayerRCTView: UIView {
|
|
|
153
153
|
self.chromeless = configDict["chromeless"] as? Bool ?? true
|
|
154
154
|
self.parseAdsConfig(configDict: configDict)
|
|
155
155
|
self.parseCastConfig(configDict: configDict)
|
|
156
|
-
if DEBUG_VIEW {
|
|
156
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] config prop updated.") }
|
|
157
157
|
|
|
158
158
|
// Given the bridged config, create the initial THEOplayer instance
|
|
159
159
|
self.createPlayer()
|
|
@@ -167,7 +167,7 @@ public class THEOplayerRCTView: UIView {
|
|
|
167
167
|
@objc(setOnNativePlayerReady:)
|
|
168
168
|
func setOnNativePlayerReady(nativePlayerReady: @escaping RCTDirectEventBlock) {
|
|
169
169
|
self.onNativePlayerReady = nativePlayerReady
|
|
170
|
-
if DEBUG_VIEW {
|
|
170
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativePlayerReady prop set.") }
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
// MARK: - Listener based MAIN event bridging
|
|
@@ -175,121 +175,121 @@ public class THEOplayerRCTView: UIView {
|
|
|
175
175
|
@objc(setOnNativePlay:)
|
|
176
176
|
func setOnNativePlay(nativePlay: @escaping RCTDirectEventBlock) {
|
|
177
177
|
self.mainEventHandler.onNativePlay = nativePlay
|
|
178
|
-
if DEBUG_VIEW {
|
|
178
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativePlay prop set.") }
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
@objc(setOnNativePause:)
|
|
182
182
|
func setOnNativePause(nativePause: @escaping RCTDirectEventBlock) {
|
|
183
183
|
self.mainEventHandler.onNativePause = nativePause
|
|
184
|
-
if DEBUG_VIEW {
|
|
184
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativePause prop set.") }
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
@objc(setOnNativeSourceChange:)
|
|
188
188
|
func setOnNativeSourceChange(nativeSourceChange: @escaping RCTDirectEventBlock) {
|
|
189
189
|
self.mainEventHandler.onNativeSourceChange = nativeSourceChange
|
|
190
|
-
if DEBUG_VIEW {
|
|
190
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeSourceChange prop set.") }
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
@objc(setOnNativeLoadStart:)
|
|
194
194
|
func setOnNativeLoadStart(nativeLoadStart: @escaping RCTDirectEventBlock) {
|
|
195
195
|
self.mainEventHandler.onNativeLoadStart = nativeLoadStart
|
|
196
|
-
if DEBUG_VIEW {
|
|
196
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeLoadStart prop set.") }
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
@objc(setOnNativeReadyStateChange:)
|
|
200
200
|
func setOnNativeReadyStateChange(nativeReadyStateChange: @escaping RCTDirectEventBlock) {
|
|
201
201
|
self.mainEventHandler.onNativeReadyStateChange = nativeReadyStateChange
|
|
202
|
-
if DEBUG_VIEW {
|
|
202
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeReadyStateChange prop set.") }
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
@objc(setOnNativeDurationChange:)
|
|
206
206
|
func setOnNativeDurationChange(nativeDurationChange: @escaping RCTDirectEventBlock) {
|
|
207
207
|
self.mainEventHandler.onNativeDurationChange = nativeDurationChange
|
|
208
|
-
if DEBUG_VIEW {
|
|
208
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeDurationChange prop set.") }
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
@objc(setOnNativeVolumeChange:)
|
|
212
212
|
func setOnNativeVolumeChange(nativeVolumeChange: @escaping RCTDirectEventBlock) {
|
|
213
213
|
self.mainEventHandler.onNativeVolumeChange = nativeVolumeChange
|
|
214
|
-
if DEBUG_VIEW {
|
|
214
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeVolumeChange prop set.") }
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
@objc(setOnNativeProgress:)
|
|
218
218
|
func setOnNativeProgress(nativeProgress: @escaping RCTBubblingEventBlock) {
|
|
219
219
|
self.mainEventHandler.onNativeProgress = nativeProgress
|
|
220
|
-
if DEBUG_VIEW {
|
|
220
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeProgress prop set.") }
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
@objc(setOnNativeTimeUpdate:)
|
|
224
224
|
func setOnNativeTimeUpdate(nativeTimeUpdate: @escaping RCTBubblingEventBlock) {
|
|
225
225
|
self.mainEventHandler.onNativeTimeUpdate = nativeTimeUpdate
|
|
226
|
-
if DEBUG_VIEW {
|
|
226
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeTimeUpdate prop set.") }
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
@objc(setOnNativePlaying:)
|
|
230
230
|
func setOnNativePlaying(nativePlaying: @escaping RCTDirectEventBlock) {
|
|
231
231
|
self.mainEventHandler.onNativePlaying = nativePlaying
|
|
232
|
-
if DEBUG_VIEW {
|
|
232
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativePlaying prop set.") }
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
@objc(setOnNativeSeeking:)
|
|
236
236
|
func setOnNativeSeeking(nativeSeeking: @escaping RCTDirectEventBlock) {
|
|
237
237
|
self.mainEventHandler.onNativeSeeking = nativeSeeking
|
|
238
|
-
if DEBUG_VIEW {
|
|
238
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeSeeking prop set.") }
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
@objc(setOnNativeSeeked:)
|
|
242
242
|
func setOnNativeSeeked(nativeSeeked: @escaping RCTDirectEventBlock) {
|
|
243
243
|
self.mainEventHandler.onNativeSeeked = nativeSeeked
|
|
244
|
-
if DEBUG_VIEW {
|
|
244
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeSeeked prop set.") }
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
@objc(setOnNativeEnded:)
|
|
248
248
|
func setOnNativeEnded(nativeEnded: @escaping RCTDirectEventBlock) {
|
|
249
249
|
self.mainEventHandler.onNativeEnded = nativeEnded
|
|
250
|
-
if DEBUG_VIEW {
|
|
250
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeEnded prop set.") }
|
|
251
251
|
}
|
|
252
252
|
|
|
253
253
|
@objc(setOnNativeError:)
|
|
254
254
|
func setOnNativeError(nativeError: @escaping RCTDirectEventBlock) {
|
|
255
255
|
self.mainEventHandler.onNativeError = nativeError
|
|
256
|
-
if DEBUG_VIEW {
|
|
256
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeError prop set.") }
|
|
257
257
|
}
|
|
258
258
|
|
|
259
259
|
@objc(setOnNativeLoadedData:)
|
|
260
260
|
func setOnNativeLoadedData(nativeLoadedData: @escaping RCTDirectEventBlock) {
|
|
261
261
|
self.mainEventHandler.onNativeLoadedData = nativeLoadedData
|
|
262
|
-
if DEBUG_VIEW {
|
|
262
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeLoadedData prop set.") }
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
@objc(setOnNativeRateChange:)
|
|
266
266
|
func setOnNativeRateChange(nativeRateChange: @escaping RCTDirectEventBlock) {
|
|
267
267
|
self.mainEventHandler.onNativeRateChange = nativeRateChange
|
|
268
|
-
if DEBUG_VIEW {
|
|
268
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeRateChange prop set.") }
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
@objc(setOnNativeLoadedMetadata:)
|
|
272
272
|
func setOnNativeLoadedMetadata(nativeLoadedMetadata: @escaping RCTDirectEventBlock) {
|
|
273
273
|
self.mainEventHandler.onNativeLoadedMetadata = nativeLoadedMetadata
|
|
274
|
-
if DEBUG_VIEW {
|
|
274
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeLoadedMetadata prop set.") }
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
@objc(setOnNativeWaiting:)
|
|
278
278
|
func setOnNativeWaiting(nativeWaiting: @escaping RCTDirectEventBlock) {
|
|
279
279
|
self.mainEventHandler.onNativeWaiting = nativeWaiting
|
|
280
|
-
if DEBUG_VIEW {
|
|
280
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeWaiting prop set.") }
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
@objc(setOnNativeCanPlay:)
|
|
284
284
|
func setOnNativeCanPlay(nativeCanPlay: @escaping RCTDirectEventBlock) {
|
|
285
285
|
self.mainEventHandler.onNativeCanPlay = nativeCanPlay
|
|
286
|
-
if DEBUG_VIEW {
|
|
286
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeCanPlay prop set.") }
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
@objc(setOnNativePresentationModeChange:)
|
|
290
290
|
func setOnNativePresentationModeChange(nativePresentationMode: @escaping RCTDirectEventBlock) {
|
|
291
291
|
self.mainEventHandler.onNativePresentationModeChange = nativePresentationMode
|
|
292
|
-
if DEBUG_VIEW {
|
|
292
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativePresentationMode prop set.") }
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
// MARK: - Listener based TEXTTRACK event bridging
|
|
@@ -297,13 +297,13 @@ public class THEOplayerRCTView: UIView {
|
|
|
297
297
|
@objc(setOnNativeTextTrackListEvent:)
|
|
298
298
|
func setOnNativeTextTrackListEvent(nativeTextTrackListEvent: @escaping RCTDirectEventBlock) {
|
|
299
299
|
self.textTrackEventHandler.onNativeTextTrackListEvent = nativeTextTrackListEvent
|
|
300
|
-
if DEBUG_VIEW {
|
|
300
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeTextTrackListEvent prop set.") }
|
|
301
301
|
}
|
|
302
302
|
|
|
303
303
|
@objc(setOnNativeTextTrackEvent:)
|
|
304
304
|
func setOnNativeTextTrackEvent(nativeTextTrackEvent: @escaping RCTDirectEventBlock) {
|
|
305
305
|
self.textTrackEventHandler.onNativeTextTrackEvent = nativeTextTrackEvent
|
|
306
|
-
if DEBUG_VIEW {
|
|
306
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeTextTrackEvent prop set.") }
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
// MARK: - Listener based MEDIATRACK event bridging
|
|
@@ -311,13 +311,13 @@ public class THEOplayerRCTView: UIView {
|
|
|
311
311
|
@objc(setOnNativeMediaTrackListEvent:)
|
|
312
312
|
func setOnNativeMediaTrackListEvent(nativeMediaTrackListEvent: @escaping RCTDirectEventBlock) {
|
|
313
313
|
self.mediaTrackEventHandler.onNativeMediaTrackListEvent = nativeMediaTrackListEvent
|
|
314
|
-
if DEBUG_VIEW {
|
|
314
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeMediaTrackListEvent prop set.") }
|
|
315
315
|
}
|
|
316
316
|
|
|
317
317
|
@objc(setOnNativeMediaTrackEvent:)
|
|
318
318
|
func setOnNativeMediaTrackEvent(nativeMediaTrackEvent: @escaping RCTDirectEventBlock) {
|
|
319
319
|
self.mediaTrackEventHandler.onNativeMediaTrackEvent = nativeMediaTrackEvent
|
|
320
|
-
if DEBUG_VIEW {
|
|
320
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeMediaTrackEvent prop set.") }
|
|
321
321
|
}
|
|
322
322
|
|
|
323
323
|
// MARK: - Listener based CAST event bridging
|
|
@@ -325,7 +325,7 @@ public class THEOplayerRCTView: UIView {
|
|
|
325
325
|
@objc(setOnNativeCastEvent:)
|
|
326
326
|
func setOnNativeCastEvent(nativeCastEvent: @escaping RCTDirectEventBlock) {
|
|
327
327
|
self.castEventHandler.onNativeCastEvent = nativeCastEvent
|
|
328
|
-
if DEBUG_VIEW {
|
|
328
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeCastEvent prop set.") }
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
// MARK: - Listener based AD event bridging
|
|
@@ -333,6 +333,6 @@ public class THEOplayerRCTView: UIView {
|
|
|
333
333
|
@objc(setOnNativeAdEvent:)
|
|
334
334
|
func setOnNativeAdEvent(nativeAdEvent: @escaping RCTDirectEventBlock) {
|
|
335
335
|
self.adEventHandler.onNativeAdEvent = nativeAdEvent
|
|
336
|
-
if DEBUG_VIEW {
|
|
336
|
+
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeAdEvent prop set.") }
|
|
337
337
|
}
|
|
338
338
|
}
|
|
@@ -21,17 +21,17 @@ extension THEOplayerRCTAdsAPI {
|
|
|
21
21
|
dai.requestSnapBack { enabled, error in
|
|
22
22
|
if let err = error {
|
|
23
23
|
reject(ERROR_CODE_DAI_GET_SNAPBACK_FAILED, err.localizedDescription, error)
|
|
24
|
-
if DEBUG_ADS_API {
|
|
24
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving dai snapback status failed: \(err.localizedDescription)") }
|
|
25
25
|
} else if let snapBack = enabled {
|
|
26
26
|
resolve(snapBack)
|
|
27
27
|
} else {
|
|
28
28
|
reject(ERROR_CODE_DAI_GET_SNAPBACK_UNDEFINED, ERROR_MESSAGE_DAI_GET_SNAPBACK_UNDEFINED, nil)
|
|
29
|
-
if DEBUG_ADS_API {
|
|
29
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving dai snapback status failed.") }
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
} else {
|
|
33
33
|
reject(ERROR_CODE_DAI_ACCESS_FAILURE, ERROR_MESSAGE_DAI_ACCESS_FAILURE, nil)
|
|
34
|
-
if DEBUG_ADS_API {
|
|
34
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not retrieve dai snapback status (ads DAI module unavailable).") }
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -44,7 +44,7 @@ extension THEOplayerRCTAdsAPI {
|
|
|
44
44
|
let dai = ads.dai {
|
|
45
45
|
dai.setSnapBack(enabled, completionHandler: nil)
|
|
46
46
|
} else {
|
|
47
|
-
if DEBUG_ADS_API {
|
|
47
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not update dai snapback status (ads DAI module unavailable).") }
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -60,7 +60,7 @@ extension THEOplayerRCTAdsAPI {
|
|
|
60
60
|
resolve(contentTime)
|
|
61
61
|
} else {
|
|
62
62
|
reject(ERROR_CODE_DAI_ACCESS_FAILURE, ERROR_MESSAGE_DAI_ACCESS_FAILURE, nil)
|
|
63
|
-
if DEBUG_ADS_API {
|
|
63
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not convert stream time to content time (ads DAI module unavailable).") }
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -76,7 +76,7 @@ extension THEOplayerRCTAdsAPI {
|
|
|
76
76
|
resolve(streamTime)
|
|
77
77
|
} else {
|
|
78
78
|
reject(ERROR_CODE_DAI_ACCESS_FAILURE, ERROR_MESSAGE_DAI_ACCESS_FAILURE, nil)
|
|
79
|
-
if DEBUG_ADS_API {
|
|
79
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not convert content time to stream time (ads DAI module unavailable).") }
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -47,7 +47,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
47
47
|
if let ads = theView.ads() {
|
|
48
48
|
ads.skip()
|
|
49
49
|
} else {
|
|
50
|
-
if DEBUG_ADS_API {
|
|
50
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not skip ad (ads module unavailable).") }
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -60,14 +60,14 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
60
60
|
ads.requestPlaying { playing, error in
|
|
61
61
|
if let err = error {
|
|
62
62
|
reject(ERROR_CODE_ADS_GET_PLAYING_STATE_FAILED, err.localizedDescription, error)
|
|
63
|
-
if DEBUG_ADS_API {
|
|
63
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving ad playing state failed: \(err.localizedDescription)") }
|
|
64
64
|
} else {
|
|
65
65
|
resolve(playing)
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
} else {
|
|
69
69
|
reject(ERROR_CODE_ADS_ACCESS_FAILURE, ERROR_MESSAGE_ADS_ACCESS_FAILURE, nil)
|
|
70
|
-
if DEBUG_ADS_API {
|
|
70
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not skip ad (ads module unavailable).") }
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -80,17 +80,17 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
80
80
|
ads.requestCurrentAdBreak { adBreak, error in
|
|
81
81
|
if let err = error {
|
|
82
82
|
reject(ERROR_CODE_ADS_GET_CURRENT_ADBREAK_FAILED, err.localizedDescription, error)
|
|
83
|
-
if DEBUG_ADS_API {
|
|
83
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving current adbreak failed: \(err.localizedDescription)") }
|
|
84
84
|
} else if let currentAdBreak = adBreak {
|
|
85
85
|
resolve(THEOplayerRCTAdAggregator.aggregateAdBreak(adBreak:currentAdBreak))
|
|
86
86
|
} else {
|
|
87
87
|
reject(ERROR_CODE_ADS_GET_CURRENT_ADBREAK_UNDEFINED, ERROR_MESSAGE_ADS_GET_CURRENT_ADBREAK_UNDEFINED, nil)
|
|
88
|
-
if DEBUG_ADS_API {
|
|
88
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving current adbreak failed: could not load adbreak.") }
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
} else {
|
|
92
92
|
reject(ERROR_CODE_ADS_ACCESS_FAILURE, ERROR_MESSAGE_ADS_ACCESS_FAILURE, nil)
|
|
93
|
-
if DEBUG_ADS_API {
|
|
93
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not retrieve current adbreak (ads module unavailable).") }
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
}
|
|
@@ -103,7 +103,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
103
103
|
ads.requestCurrentAds { adsArray, error in
|
|
104
104
|
if let err = error {
|
|
105
105
|
reject(ERROR_CODE_ADS_GET_CURRENT_ADS_FAILED, err.localizedDescription, error)
|
|
106
|
-
if DEBUG_ADS_API {
|
|
106
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving current ads failed: \(err.localizedDescription)") }
|
|
107
107
|
} else if let currentAdsArray = adsArray {
|
|
108
108
|
var currentAds: [[String:Any]] = []
|
|
109
109
|
for ad in currentAdsArray {
|
|
@@ -112,12 +112,12 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
112
112
|
resolve(currentAds)
|
|
113
113
|
} else {
|
|
114
114
|
reject(ERROR_CODE_ADS_GET_CURRENT_ADS_UNDEFINED, ERROR_MESSAGE_ADS_GET_CURRENT_ADS_UNDEFINED, nil)
|
|
115
|
-
if DEBUG_ADS_API {
|
|
115
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving current ads failed: could not load ads.") }
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
} else {
|
|
119
119
|
reject(ERROR_CODE_ADS_ACCESS_FAILURE, ERROR_MESSAGE_ADS_ACCESS_FAILURE, nil)
|
|
120
|
-
if DEBUG_ADS_API {
|
|
120
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not retrieve current ad (ads module unavailable).") }
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
}
|
|
@@ -130,7 +130,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
130
130
|
ads.requestScheduledAdBreaks { adBreaksArray, error in
|
|
131
131
|
if let err = error {
|
|
132
132
|
reject(ERROR_CODE_ADS_GET_SCHEDULED_ADBREAKS_FAILED, err.localizedDescription, error)
|
|
133
|
-
if DEBUG_ADS_API {
|
|
133
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving scheduled adbreaks failed: \(err.localizedDescription)") }
|
|
134
134
|
} else if let currentAdBreaksArray = adBreaksArray {
|
|
135
135
|
var currentAdBreaks: [[String:Any]] = []
|
|
136
136
|
for adbreak in currentAdBreaksArray {
|
|
@@ -139,12 +139,12 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
139
139
|
resolve(currentAdBreaks)
|
|
140
140
|
} else {
|
|
141
141
|
reject(ERROR_CODE_ADS_GET_SCHEDULED_ADBREAKS_UNDEFINED, ERROR_MESSAGE_ADS_GET_SCHEDULED_ADBREAKS_UNDEFINED, nil)
|
|
142
|
-
if DEBUG_ADS_API {
|
|
142
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Retrieving current adbreaks failed: could not load adbreaks.") }
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
} else {
|
|
146
146
|
reject(ERROR_CODE_ADS_ACCESS_FAILURE, ERROR_MESSAGE_ADS_ACCESS_FAILURE, nil)
|
|
147
|
-
if DEBUG_ADS_API {
|
|
147
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not retrieve current ad (ads module unavailable).") }
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
}
|
|
@@ -158,7 +158,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
158
158
|
let adDescription = THEOplayerRCTSourceDescriptionBuilder.buildSingleAdDescription(adData) {
|
|
159
159
|
ads.schedule(adDescription: adDescription)
|
|
160
160
|
} else {
|
|
161
|
-
if DEBUG_ADS_API {
|
|
161
|
+
if DEBUG_ADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not schedule new ad.") }
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
}
|
|
@@ -57,7 +57,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
57
57
|
#if (GOOGLE_IMA || GOOGLE_DAI) || canImport(THEOplayerGoogleIMAIntegration)
|
|
58
58
|
// AD_BEGIN
|
|
59
59
|
self.adBeginListener = player.ads.addEventListener(type: AdsEventTypes.AD_BEGIN) { [weak self] event in
|
|
60
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
60
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_BEGIN event from THEOplayer Ads") }
|
|
61
61
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
62
62
|
let ad = event.ad {
|
|
63
63
|
forwardedAdEvent([
|
|
@@ -66,11 +66,11 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
66
66
|
])
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
if DEBUG_EVENTHANDLER {
|
|
69
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBegin listener attached to THEOplayer.ads") }
|
|
70
70
|
|
|
71
71
|
// AD_END
|
|
72
72
|
self.adEndListener = player.ads.addEventListener(type: AdsEventTypes.AD_END) { [weak self] event in
|
|
73
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
73
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_END event from THEOplayer Ads") }
|
|
74
74
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
75
75
|
let ad = event.ad {
|
|
76
76
|
forwardedAdEvent([
|
|
@@ -79,11 +79,11 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
79
79
|
])
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
if DEBUG_EVENTHANDLER {
|
|
82
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdEnd listener attached to THEOplayer.ads") }
|
|
83
83
|
|
|
84
84
|
// AD_BREAK_BEGIN
|
|
85
85
|
self.adBreakBeginListener = player.ads.addEventListener(type: AdsEventTypes.AD_BREAK_BEGIN) { [weak self] event in
|
|
86
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
86
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_BREAK_BEGIN event from THEOplayer Ads") }
|
|
87
87
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
88
88
|
let adBreak = event.ad {
|
|
89
89
|
forwardedAdEvent([
|
|
@@ -92,11 +92,11 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
92
92
|
])
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
if DEBUG_EVENTHANDLER {
|
|
95
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakBegin listener attached to THEOplayer.ads") }
|
|
96
96
|
|
|
97
97
|
// AD_BREAK_END
|
|
98
98
|
self.adBreakEndListener = player.ads.addEventListener(type: AdsEventTypes.AD_BREAK_END) { [weak self] event in
|
|
99
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
99
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_BREAK_END event from THEOplayer Ads") }
|
|
100
100
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
101
101
|
let adBreak = event.ad {
|
|
102
102
|
forwardedAdEvent([
|
|
@@ -105,11 +105,11 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
105
105
|
])
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
if DEBUG_EVENTHANDLER {
|
|
108
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakEnd listener attached to THEOplayer.ads") }
|
|
109
109
|
|
|
110
110
|
// AD_ERROR
|
|
111
111
|
self.adErrorListener = player.ads.addEventListener(type: AdsEventTypes.AD_ERROR) { [weak self] event in
|
|
112
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
112
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_ERROR event from THEOplayer Ads") }
|
|
113
113
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
114
114
|
let ad = event.ad {
|
|
115
115
|
forwardedAdEvent([
|
|
@@ -118,11 +118,11 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
118
118
|
])
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
-
if DEBUG_EVENTHANDLER {
|
|
121
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdError listener attached to THEOplayer.ads") }
|
|
122
122
|
|
|
123
123
|
// AD_FIRST_QUARTILE
|
|
124
124
|
self.adFirstQuartileListener = player.ads.addEventListener(type: AdsEventTypes.AD_FIRST_QUARTILE) { [weak self] event in
|
|
125
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
125
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_FIRST_QUARTILE event from THEOplayer Ads") }
|
|
126
126
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
127
127
|
let ad = event.ad {
|
|
128
128
|
forwardedAdEvent([
|
|
@@ -131,11 +131,11 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
131
131
|
])
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
if DEBUG_EVENTHANDLER {
|
|
134
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdFirstQuartile listener attached to THEOplayer.ads") }
|
|
135
135
|
|
|
136
136
|
// AD_MIDPOINT
|
|
137
137
|
self.adMidpointListener = player.ads.addEventListener(type: AdsEventTypes.AD_MIDPOINT) { [weak self] event in
|
|
138
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
138
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_MIDPOINT event from THEOplayer Ads") }
|
|
139
139
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
140
140
|
let ad = event.ad {
|
|
141
141
|
forwardedAdEvent([
|
|
@@ -144,11 +144,11 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
144
144
|
])
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
|
-
if DEBUG_EVENTHANDLER {
|
|
147
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdMidpoint listener attached to THEOplayer.ads") }
|
|
148
148
|
|
|
149
149
|
// AD_THIRD_QUARTILE
|
|
150
150
|
self.adThirdQuartileListener = player.ads.addEventListener(type: AdsEventTypes.AD_THIRD_QUARTILE) { [weak self] event in
|
|
151
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
151
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_THIRD_QUARTILE event from THEOplayer Ads") }
|
|
152
152
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
153
153
|
let ad = event.ad {
|
|
154
154
|
forwardedAdEvent([
|
|
@@ -157,11 +157,11 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
157
157
|
])
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
-
if DEBUG_EVENTHANDLER {
|
|
160
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdThirdQuartile listener attached to THEOplayer.ads") }
|
|
161
161
|
|
|
162
162
|
// AD_LOADED
|
|
163
163
|
self.adLoadedListener = player.ads.addEventListener(type: AdsEventTypes.AD_LOADED) { [weak self] event in
|
|
164
|
-
if DEBUG_THEOPLAYER_EVENTS {
|
|
164
|
+
if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AD_LOADED event from THEOplayer Ads") }
|
|
165
165
|
if let forwardedAdEvent = self?.onNativeAdEvent,
|
|
166
166
|
let ad = event.ad {
|
|
167
167
|
forwardedAdEvent([
|
|
@@ -170,7 +170,7 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
170
170
|
])
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
if DEBUG_EVENTHANDLER {
|
|
173
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdThirdQuartile listener attached to THEOplayer.ads") }
|
|
174
174
|
#endif
|
|
175
175
|
|
|
176
176
|
}
|
|
@@ -184,55 +184,55 @@ class THEOplayerRCTAdsEventHandler {
|
|
|
184
184
|
// AD_BEGIN
|
|
185
185
|
if let adBeginListener = self.adBeginListener {
|
|
186
186
|
player.ads.removeEventListener(type: AdsEventTypes.AD_BEGIN, listener: adBeginListener)
|
|
187
|
-
if DEBUG_EVENTHANDLER {
|
|
187
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBegin listener dettached from THEOplayer.ads") }
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
// AD_END
|
|
191
191
|
if let adEndListener = self.adEndListener {
|
|
192
192
|
player.ads.removeEventListener(type: AdsEventTypes.AD_END, listener: adEndListener)
|
|
193
|
-
if DEBUG_EVENTHANDLER {
|
|
193
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdEnd listener dettached from THEOplayer.ads") }
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
// AD_BREAK_BEGIN
|
|
197
197
|
if let adBreakBeginListener = self.adBreakBeginListener {
|
|
198
198
|
player.ads.removeEventListener(type: AdsEventTypes.AD_BREAK_BEGIN, listener: adBreakBeginListener)
|
|
199
|
-
if DEBUG_EVENTHANDLER {
|
|
199
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakBegin listener dettached from THEOplayer.ads") }
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
// AD_BREAK_END
|
|
203
203
|
if let adBreakEndListener = self.adBreakEndListener {
|
|
204
204
|
player.ads.removeEventListener(type: AdsEventTypes.AD_BREAK_END, listener: adBreakEndListener)
|
|
205
|
-
if DEBUG_EVENTHANDLER {
|
|
205
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdBreakEnd listener dettached from THEOplayer.ads") }
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
// AD_ERROR
|
|
209
209
|
if let adErrorListener = self.adErrorListener {
|
|
210
210
|
player.ads.removeEventListener(type: AdsEventTypes.AD_ERROR, listener: adErrorListener)
|
|
211
|
-
if DEBUG_EVENTHANDLER {
|
|
211
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AdError listener dettached from THEOplayer.ads") }
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
// AD_FIRST_QUARTILE
|
|
215
215
|
if let adFirstQuartileListener = self.adFirstQuartileListener {
|
|
216
216
|
player.ads.removeEventListener(type: AdsEventTypes.AD_FIRST_QUARTILE, listener: adFirstQuartileListener)
|
|
217
|
-
if DEBUG_EVENTHANDLER {
|
|
217
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adFirstQuartileListener listener dettached from THEOplayer.ads") }
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
// AD_MIDPOINT
|
|
221
221
|
if let adMidpointListener = self.adMidpointListener {
|
|
222
222
|
player.ads.removeEventListener(type: AdsEventTypes.AD_MIDPOINT, listener: adMidpointListener)
|
|
223
|
-
if DEBUG_EVENTHANDLER {
|
|
223
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adMidpointListener listener dettached from THEOplayer.ads") }
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
// AD_THIRD_QUARTILE
|
|
227
227
|
if let adThirdQuartileListener = self.adThirdQuartileListener {
|
|
228
228
|
player.ads.removeEventListener(type: AdsEventTypes.AD_THIRD_QUARTILE, listener: adThirdQuartileListener)
|
|
229
|
-
if DEBUG_EVENTHANDLER {
|
|
229
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adThirdQuartileListener listener dettached from THEOplayer.ads") }
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
// AD_LOADED
|
|
233
233
|
if let adLoadedListener = self.adLoadedListener {
|
|
234
234
|
player.ads.removeEventListener(type: AdsEventTypes.AD_LOADED, listener: adLoadedListener)
|
|
235
|
-
if DEBUG_EVENTHANDLER {
|
|
235
|
+
if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] adLoadedListener listener dettached from THEOplayer.ads") }
|
|
236
236
|
}
|
|
237
237
|
#endif
|
|
238
238
|
|
|
@@ -25,7 +25,7 @@ extension THEOplayerRCTSourceDescriptionBuilder {
|
|
|
25
25
|
adsDescriptions?.append(adDescription)
|
|
26
26
|
} else {
|
|
27
27
|
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
28
|
-
|
|
28
|
+
PrintUtils.printLog(logText: "[NATIVE] Could not create THEOplayer GoogleImaAdDescription from adsData array")
|
|
29
29
|
}
|
|
30
30
|
return nil
|
|
31
31
|
}
|
|
@@ -37,7 +37,7 @@ extension THEOplayerRCTSourceDescriptionBuilder {
|
|
|
37
37
|
adsDescriptions?.append(adDescription)
|
|
38
38
|
} else {
|
|
39
39
|
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
40
|
-
|
|
40
|
+
PrintUtils.printLog(logText: "[NATIVE] Could not create THEOplayer GoogleImaAdDescription from adsData")
|
|
41
41
|
}
|
|
42
42
|
return nil
|
|
43
43
|
}
|
|
@@ -67,10 +67,10 @@ extension THEOplayerRCTSourceDescriptionBuilder {
|
|
|
67
67
|
if let src = srcString {
|
|
68
68
|
return GoogleImaAdDescription(src: src, timeOffset: timeOffset)
|
|
69
69
|
} else {
|
|
70
|
-
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
70
|
+
if DEBUG_SOURCE_DESCRIPTION_BUIDER { PrintUtils.printLog(logText: "[NATIVE] AdDescription requires 'src' property in 'ads' description.") }
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
73
|
+
if DEBUG_SOURCE_DESCRIPTION_BUIDER { PrintUtils.printLog(logText: "[NATIVE] We currently require and only support the 'google-ima' integration in the 'ads' description.") }
|
|
74
74
|
#endif
|
|
75
75
|
|
|
76
76
|
return nil
|
|
@@ -110,7 +110,7 @@ extension THEOplayerRCTSourceDescriptionBuilder {
|
|
|
110
110
|
}
|
|
111
111
|
default:
|
|
112
112
|
if DEBUG_SOURCE_DESCRIPTION_BUIDER {
|
|
113
|
-
|
|
113
|
+
PrintUtils.printLog(logText: "[NATIVE] THEOplayer ssai 'availabilityType' must be 'live' or 'vod'")
|
|
114
114
|
}
|
|
115
115
|
return nil
|
|
116
116
|
}
|