react-native-theoplayer 10.5.1 → 10.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/src/main/java/com/theoplayer/source/SourceAdapter.kt +3 -1
- package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +2 -2
- package/ios/millicast/THEOplayerRCTSourceDescriptionBuilder+Millicast.swift +3 -3
- package/ios/pip/THEOplayerRCTPipManager.swift +2 -1
- package/ios/theolive/THEOplayerRCTSourceDescriptionBuilder+Theolive.swift +5 -2
- package/lib/commonjs/manifest.json +1 -1
- package/lib/module/manifest.json +1 -1
- package/lib/typescript/api/theolive/TheoLiveSource.d.ts +11 -1
- package/lib/typescript/api/theolive/TheoLiveSource.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api/theolive/TheoLiveSource.ts +13 -1
- package/src/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,12 +5,22 @@ 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
|
+
## [10.6.0] - 25-12-02
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Added support for personalized discovery call responses by configuring the `profile` property on an OptiView Live source.
|
|
13
|
+
|
|
8
14
|
## [10.5.1] - 25-11-28
|
|
9
15
|
|
|
10
16
|
### Added
|
|
11
17
|
|
|
12
18
|
- Support for contentProtection query parameters on THEOlive sources.
|
|
13
19
|
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Fixed an issue on tvOS where unsupported pip logic was used on older tvOS target versions (< 14.0).
|
|
23
|
+
|
|
14
24
|
## [10.5.0] - 25-11-24
|
|
15
25
|
|
|
16
26
|
### Fixed
|
|
@@ -71,6 +71,7 @@ private const val PROP_INITIALIZATION_DELAY = "initializationDelay"
|
|
|
71
71
|
private const val PROP_SSE_ENDPOINT = "sseEndpoint"
|
|
72
72
|
private const val PROP_STREAM_ACTIVITY_MONITOR_ID = "streamActivityMonitorId"
|
|
73
73
|
private const val PROP_LATENCY_CONFIGURATION = "latencyConfiguration"
|
|
74
|
+
private const val PROP_PROFILE = "profile"
|
|
74
75
|
|
|
75
76
|
private const val ERROR_IMA_NOT_ENABLED = "Google IMA support not enabled."
|
|
76
77
|
private const val ERROR_THEOADS_NOT_ENABLED = "THEOads support not enabled."
|
|
@@ -181,7 +182,8 @@ class SourceAdapter {
|
|
|
181
182
|
},
|
|
182
183
|
drm=jsonTypedSource.optJSONObject(PROP_CONTENT_PROTECTION)?.let {
|
|
183
184
|
ContentProtectionAdapter.drmConfigurationFromJson(it)
|
|
184
|
-
}
|
|
185
|
+
},
|
|
186
|
+
profile=jsonTypedSource.optString(PROP_PROFILE)
|
|
185
187
|
)
|
|
186
188
|
}
|
|
187
189
|
|
|
@@ -63,7 +63,7 @@ let SD_PROP_RETRIEVE_POD_ID_URI: String = "retrievePodIdURI"
|
|
|
63
63
|
let SD_PROP_INITIALIZATION_DELAY: String = "initializationDelay"
|
|
64
64
|
let SD_PROP_HLS_DATE_RANGE: String = "hlsDateRange"
|
|
65
65
|
let SD_PROP_CMCD: String = "cmcd"
|
|
66
|
-
let SD_PROP_QUERY_PARAMETERS = "queryParameters"
|
|
66
|
+
let SD_PROP_QUERY_PARAMETERS: String = "queryParameters"
|
|
67
67
|
|
|
68
68
|
let EXTENSION_HLS: String = ".m3u8"
|
|
69
69
|
let EXTENSION_MP4: String = ".mp4"
|
|
@@ -195,7 +195,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
|
|
|
195
195
|
let type = typedSourceData[SD_PROP_TYPE] as? String
|
|
196
196
|
|
|
197
197
|
if integration == "theolive" || type == "theolive" {
|
|
198
|
-
return THEOplayerRCTSourceDescriptionBuilder.buildTHEOliveDescription(typedSourceData,
|
|
198
|
+
return THEOplayerRCTSourceDescriptionBuilder.buildTHEOliveDescription(typedSourceData, contentProtection: contentProtection)
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
if type == "millicast" {
|
|
@@ -24,14 +24,14 @@ extension THEOplayerRCTSourceDescriptionBuilder {
|
|
|
24
24
|
if let src = millicastData[SD_PROP_SRC] as? String,
|
|
25
25
|
let accountID = millicastData[SD_PROP_ACCOUNTID] as? String {
|
|
26
26
|
let subscriberToken = millicastData[SD_PROP_SUBSCRIBERTOKEN] as? String;
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
if millicastData[SD_PROP_CONNECTOPTIONS] == nil {
|
|
29
29
|
return MillicastSource(src: src, streamAccountId: accountID, subscriberToken: subscriberToken)
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
let dict = millicastData[SD_PROP_CONNECTOPTIONS] as? NSDictionary;
|
|
33
33
|
let connectOptions = buildConnectOptions(dict)
|
|
34
|
-
return MillicastSource(src: src, streamAccountId: accountID, subscriberToken:
|
|
34
|
+
return MillicastSource(src: src, streamAccountId: accountID, subscriberToken: subscriberToken, connectOptions: connectOptions)
|
|
35
35
|
}
|
|
36
36
|
#endif
|
|
37
37
|
return nil
|
|
@@ -25,13 +25,14 @@ class THEOplayerRCTPipManager: NSObject, AVPictureInPictureControllerDelegate {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
@available(tvOS 14.0, *)
|
|
28
29
|
func pictureInPictureControllerDidStopPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) {
|
|
29
30
|
if let view = self.view {
|
|
30
31
|
let pipClosed = view.presentationModeManager.presentationModeContext.pipContext == .PIP_CLOSED
|
|
31
32
|
let appInBackground = view.isApplicationInBackground
|
|
32
33
|
let stopOnBackground = view.backgroundAudioConfig.stopOnBackground
|
|
33
34
|
if pipClosed && appInBackground && stopOnBackground {
|
|
34
|
-
|
|
35
|
+
if DEBUG_PIPCONTROLS { PrintUtils.printLog(logText: "[NATIVE] Pip closed while app in background and stopOnBackground is enabled => stopping playback") }
|
|
35
36
|
view.player?.stop()
|
|
36
37
|
}
|
|
37
38
|
}
|
|
@@ -8,16 +8,19 @@ import UIKit
|
|
|
8
8
|
import THEOplayerTHEOliveIntegration
|
|
9
9
|
#endif
|
|
10
10
|
|
|
11
|
+
let SD_PROP_PROFILE: String = "profile"
|
|
12
|
+
|
|
11
13
|
extension THEOplayerRCTSourceDescriptionBuilder {
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
Builds a THEOplayer SourceDescription that can be passed as a source for the THEOplayer.
|
|
15
17
|
- returns: a THEOlive TypedSource.
|
|
16
18
|
*/
|
|
17
|
-
static func buildTHEOliveDescription(_ theoliveData: [String:Any],
|
|
19
|
+
static func buildTHEOliveDescription(_ theoliveData: [String:Any], contentProtection: MultiplatformDRMConfiguration?) -> TypedSource? {
|
|
18
20
|
#if canImport(THEOplayerTHEOliveIntegration)
|
|
19
21
|
if let src = theoliveData[SD_PROP_SRC] as? String {
|
|
20
|
-
|
|
22
|
+
let profile = theoliveData[SD_PROP_PROFILE] as? String;
|
|
23
|
+
return TheoLiveSource(channelId: src, drm: contentProtection, profile: profile)
|
|
21
24
|
}
|
|
22
25
|
#endif
|
|
23
26
|
return nil
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"10.
|
|
1
|
+
{"version":"10.6.0","buildDate":"2025-12-02T17:49:55.245Z"}
|
package/lib/module/manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"10.
|
|
1
|
+
{"version":"10.6.0","buildDate":"2025-12-02T17:49:55.245Z"}
|
|
@@ -4,9 +4,19 @@ import { SourceIntegrationId, TypedSource } from 'react-native-theoplayer';
|
|
|
4
4
|
*
|
|
5
5
|
* @category Source
|
|
6
6
|
* @public
|
|
7
|
-
* @deprecated use {@link TypedSource.type} instead.
|
|
8
7
|
*/
|
|
9
8
|
export interface TheoLiveSource extends TypedSource {
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated use {@link TypedSource.type} instead.
|
|
11
|
+
*/
|
|
10
12
|
integration: SourceIntegrationId.THEO_LIVE;
|
|
13
|
+
/**
|
|
14
|
+
* The content type.
|
|
15
|
+
*/
|
|
16
|
+
type: 'theolive';
|
|
17
|
+
/**
|
|
18
|
+
* The profile identifier is included as a query parameter in the discovery request to obtain a response specific to that profile.
|
|
19
|
+
*/
|
|
20
|
+
profile?: string;
|
|
11
21
|
}
|
|
12
22
|
//# sourceMappingURL=TheoLiveSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TheoLiveSource.d.ts","sourceRoot":"","sources":["../../../../src/api/theolive/TheoLiveSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3E
|
|
1
|
+
{"version":3,"file":"TheoLiveSource.d.ts","sourceRoot":"","sources":["../../../../src/api/theolive/TheoLiveSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C;;OAEG;IACH,WAAW,EAAE,mBAAmB,CAAC,SAAS,CAAC;IAE3C;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/package.json
CHANGED
|
@@ -5,8 +5,20 @@ import { SourceIntegrationId, TypedSource } from 'react-native-theoplayer';
|
|
|
5
5
|
*
|
|
6
6
|
* @category Source
|
|
7
7
|
* @public
|
|
8
|
-
* @deprecated use {@link TypedSource.type} instead.
|
|
9
8
|
*/
|
|
10
9
|
export interface TheoLiveSource extends TypedSource {
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated use {@link TypedSource.type} instead.
|
|
12
|
+
*/
|
|
11
13
|
integration: SourceIntegrationId.THEO_LIVE;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The content type.
|
|
17
|
+
*/
|
|
18
|
+
type: 'theolive';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The profile identifier is included as a query parameter in the discovery request to obtain a response specific to that profile.
|
|
22
|
+
*/
|
|
23
|
+
profile?: string;
|
|
12
24
|
}
|
package/src/manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"10.
|
|
1
|
+
{"version":"10.6.0","buildDate":"2025-12-02T17:49:55.245Z"}
|