react-native-theoplayer 1.7.2 → 1.8.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/README.md +2 -0
- package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +115 -0
- package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +648 -0
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerPackage.kt +23 -0
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt +446 -0
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerViewManager.kt +117 -0
- package/android/src/main/java/com/theoplayer/{TimeUpdateRate.java → TimeUpdateRate.kt} +2 -2
- package/android/src/main/java/com/theoplayer/ads/AdAdapter.kt +161 -0
- package/android/src/main/java/com/theoplayer/ads/AdEventAdapter.kt +90 -0
- package/android/src/main/java/com/theoplayer/ads/AdsModule.kt +140 -0
- package/android/src/main/java/com/theoplayer/cast/CastEventAdapter.kt +81 -0
- package/android/src/main/java/com/theoplayer/cast/CastModule.kt +75 -0
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionAdapter.kt +2 -2
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +1 -2
- package/android/src/main/java/com/theoplayer/drm/ProxyContentProtectionIntegration.kt +1 -2
- package/android/src/main/java/com/theoplayer/drm/ProxyContentProtectionIntegrationFactory.kt +3 -5
- package/android/src/main/java/com/theoplayer/source/SourceAdapter.kt +402 -0
- package/android/src/main/java/com/theoplayer/track/MediaTrackEventType.kt +6 -0
- package/android/src/main/java/com/theoplayer/track/MediaTrackType.kt +6 -0
- package/android/src/main/java/com/theoplayer/track/QualityListAdapter.kt +43 -0
- package/android/src/main/java/com/theoplayer/track/QualityListFilter.kt +28 -0
- package/android/src/main/java/com/theoplayer/track/TextTrackCueEventType.kt +10 -0
- package/android/src/main/java/com/theoplayer/track/TrackEventType.kt +7 -0
- package/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt +219 -0
- package/android/src/main/java/com/theoplayer/util/ViewResolver.kt +19 -0
- package/ios/THEOplayerRCTAdAggregator.swift +12 -6
- package/ios/THEOplayerRCTAdsAPI.swift +39 -40
- package/ios/THEOplayerRCTBridge.m +52 -1
- package/ios/THEOplayerRCTCastAPI.swift +275 -0
- package/ios/THEOplayerRCTDebug.swift +3 -0
- package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +91 -19
- package/ios/{THEOplayerRCTMetadataAggregator.swift → THEOplayerRCTTrackMetadataAggregator.swift} +12 -12
- package/ios/THEOplayerRCTView.swift +104 -24
- package/ios/THEOplayerRCTViewAdEventHandler.swift +2 -2
- package/ios/THEOplayerRCTViewCastEventHandler.swift +124 -0
- package/ios/THEOplayerRCTViewMainEventHandler.swift +1 -1
- package/ios/THEOplayerRCTViewMediaTrackEventHandler.swift +6 -6
- package/ios/THEOplayerRCTViewTextTrackEventHandler.swift +5 -5
- package/ios/custom/Frameworks/ios/put_custom_ios_xcframework_here.txt +1 -1
- package/ios/custom/Frameworks/tvos/put_custom_tvos_xcframework_here.txt +2 -0
- package/ios/custom/react-native-theoplayer_custom.podspec +46 -0
- package/lib/commonjs/api/THEOplayerView.js.map +1 -1
- package/lib/commonjs/api/barrel.js +21 -8
- package/lib/commonjs/api/barrel.js.map +1 -1
- package/lib/commonjs/api/cast/Airplay.js +6 -0
- package/lib/commonjs/api/cast/Airplay.js.map +1 -0
- package/lib/commonjs/api/cast/CastAPI.js +6 -0
- package/lib/commonjs/api/cast/CastAPI.js.map +1 -0
- package/lib/commonjs/api/cast/CastConfiguration.js +2 -0
- package/lib/commonjs/api/cast/CastConfiguration.js.map +1 -0
- package/lib/commonjs/api/cast/CastState.js +2 -0
- package/lib/commonjs/api/cast/CastState.js.map +1 -0
- package/lib/commonjs/api/cast/Chromecast.js +6 -0
- package/lib/commonjs/api/cast/Chromecast.js.map +1 -0
- package/lib/commonjs/api/cast/barrel.js +71 -0
- package/lib/commonjs/api/cast/barrel.js.map +1 -0
- package/lib/commonjs/api/config/PlayerConfiguration.js.map +1 -1
- package/lib/commonjs/api/error/ChromecastError.js +2 -0
- package/lib/commonjs/api/error/ChromecastError.js.map +1 -0
- package/lib/commonjs/api/error/barrel.js +13 -0
- package/lib/commonjs/api/error/barrel.js.map +1 -1
- package/lib/commonjs/api/event/CastEvent.js +21 -0
- package/lib/commonjs/api/event/CastEvent.js.map +1 -0
- package/lib/commonjs/api/event/barrel.js +25 -12
- package/lib/commonjs/api/event/barrel.js.map +1 -1
- package/lib/commonjs/api/source/SourceDescription.js.map +1 -1
- package/lib/commonjs/api/source/barrel.js +13 -0
- package/lib/commonjs/api/source/barrel.js.map +1 -1
- package/lib/commonjs/api/source/metadata/MetadataDescription.js +2 -0
- package/lib/commonjs/api/source/metadata/MetadataDescription.js.map +1 -0
- package/lib/commonjs/api/source/metadata/barrel.js +19 -0
- package/lib/commonjs/api/source/metadata/barrel.js.map +1 -0
- package/lib/commonjs/internal/THEOplayerView.js +16 -0
- package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js +9 -0
- package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
- package/lib/commonjs/internal/cast/THEOplayerNativeAirplay.js +34 -0
- package/lib/commonjs/internal/cast/THEOplayerNativeAirplay.js.map +1 -0
- package/lib/commonjs/internal/cast/THEOplayerNativeCastApi.js +46 -0
- package/lib/commonjs/internal/cast/THEOplayerNativeCastApi.js.map +1 -0
- package/lib/commonjs/internal/cast/THEOplayerNativeChromecast.js +42 -0
- package/lib/commonjs/internal/cast/THEOplayerNativeChromecast.js.map +1 -0
- package/lib/commonjs/internal/cast/THEOplayerWebCastApi.js +31 -0
- package/lib/commonjs/internal/cast/THEOplayerWebCastApi.js.map +1 -0
- package/lib/commonjs/internal/web/stub/CastButtonStub.js +16 -0
- package/lib/commonjs/internal/web/stub/CastButtonStub.js.map +1 -0
- package/lib/module/api/THEOplayerView.js.map +1 -1
- package/lib/module/api/barrel.js +1 -0
- package/lib/module/api/barrel.js.map +1 -1
- package/lib/module/api/cast/Airplay.js +2 -0
- package/lib/module/api/cast/Airplay.js.map +1 -0
- package/lib/module/api/cast/CastAPI.js +2 -0
- package/lib/module/api/cast/CastAPI.js.map +1 -0
- package/lib/module/api/cast/CastConfiguration.js +2 -0
- package/lib/module/api/cast/CastConfiguration.js.map +1 -0
- package/lib/module/api/cast/CastState.js +2 -0
- package/lib/module/api/cast/CastState.js.map +1 -0
- package/lib/module/api/cast/Chromecast.js +2 -0
- package/lib/module/api/cast/Chromecast.js.map +1 -0
- package/lib/module/api/cast/barrel.js +6 -0
- package/lib/module/api/cast/barrel.js.map +1 -0
- package/lib/module/api/config/PlayerConfiguration.js.map +1 -1
- package/lib/module/api/error/ChromecastError.js +2 -0
- package/lib/module/api/error/ChromecastError.js.map +1 -0
- package/lib/module/api/error/barrel.js +1 -0
- package/lib/module/api/error/barrel.js.map +1 -1
- package/lib/module/api/event/CastEvent.js +14 -0
- package/lib/module/api/event/CastEvent.js.map +1 -0
- package/lib/module/api/event/barrel.js +2 -1
- package/lib/module/api/event/barrel.js.map +1 -1
- package/lib/module/api/source/SourceDescription.js.map +1 -1
- package/lib/module/api/source/barrel.js +1 -0
- package/lib/module/api/source/barrel.js.map +1 -1
- package/lib/module/api/source/metadata/MetadataDescription.js +2 -0
- package/lib/module/api/source/metadata/MetadataDescription.js.map +1 -0
- package/lib/module/api/source/metadata/barrel.js +2 -0
- package/lib/module/api/source/metadata/barrel.js.map +1 -0
- package/lib/module/internal/THEOplayerView.js +15 -0
- package/lib/module/internal/THEOplayerView.js.map +1 -1
- package/lib/module/internal/THEOplayerView.web.js +8 -0
- package/lib/module/internal/THEOplayerView.web.js.map +1 -1
- package/lib/module/internal/cast/THEOplayerNativeAirplay.js +24 -0
- package/lib/module/internal/cast/THEOplayerNativeAirplay.js.map +1 -0
- package/lib/module/internal/cast/THEOplayerNativeCastApi.js +34 -0
- package/lib/module/internal/cast/THEOplayerNativeCastApi.js.map +1 -0
- package/lib/module/internal/cast/THEOplayerNativeChromecast.js +32 -0
- package/lib/module/internal/cast/THEOplayerNativeChromecast.js.map +1 -0
- package/lib/module/internal/cast/THEOplayerWebCastApi.js +22 -0
- package/lib/module/internal/cast/THEOplayerWebCastApi.js.map +1 -0
- package/lib/module/internal/web/stub/CastButtonStub.js +6 -0
- package/lib/module/internal/web/stub/CastButtonStub.js.map +1 -0
- package/lib/typescript/lib/commonjs/api/cast/Airplay.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/cast/CastAPI.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/cast/CastConfiguration.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/cast/CastState.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/cast/Chromecast.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/cast/barrel.d.ts +1 -0
- package/lib/typescript/lib/commonjs/api/error/ChromecastError.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/event/CastEvent.d.ts +2 -0
- package/lib/typescript/lib/commonjs/api/source/metadata/MetadataDescription.d.ts +0 -0
- package/lib/typescript/lib/commonjs/api/source/metadata/barrel.d.ts +1 -0
- package/lib/typescript/lib/commonjs/internal/THEOplayerView.d.ts +3 -0
- package/lib/typescript/lib/commonjs/internal/THEOplayerView.web.d.ts +3 -0
- package/lib/typescript/lib/commonjs/internal/cast/THEOplayerNativeAirplay.d.ts +9 -0
- package/lib/typescript/lib/commonjs/internal/cast/THEOplayerNativeCastApi.d.ts +12 -0
- package/lib/typescript/lib/commonjs/internal/cast/THEOplayerNativeChromecast.d.ts +11 -0
- package/lib/typescript/lib/commonjs/internal/cast/THEOplayerWebCastApi.d.ts +8 -0
- package/lib/typescript/lib/commonjs/internal/web/stub/CastButtonStub.d.ts +2 -0
- package/lib/typescript/lib/module/api/barrel.d.ts +1 -0
- package/lib/typescript/lib/module/api/cast/Airplay.d.ts +1 -0
- package/lib/typescript/lib/module/api/cast/CastAPI.d.ts +1 -0
- package/lib/typescript/lib/module/api/cast/CastConfiguration.d.ts +0 -0
- package/lib/typescript/lib/module/api/cast/CastState.d.ts +0 -0
- package/lib/typescript/lib/module/api/cast/Chromecast.d.ts +1 -0
- package/lib/typescript/lib/module/api/cast/barrel.d.ts +3 -0
- package/lib/typescript/lib/module/api/error/ChromecastError.d.ts +0 -0
- package/lib/typescript/lib/module/api/event/CastEvent.d.ts +1 -0
- package/lib/typescript/lib/module/api/event/barrel.d.ts +2 -1
- package/lib/typescript/lib/module/api/source/barrel.d.ts +1 -0
- package/lib/typescript/lib/module/api/source/metadata/MetadataDescription.d.ts +0 -0
- package/lib/typescript/lib/module/api/source/metadata/barrel.d.ts +1 -0
- package/lib/typescript/lib/module/internal/THEOplayerView.d.ts +3 -0
- package/lib/typescript/lib/module/internal/THEOplayerView.web.d.ts +3 -0
- package/lib/typescript/lib/module/internal/cast/THEOplayerNativeAirplay.d.ts +8 -0
- package/lib/typescript/lib/module/internal/cast/THEOplayerNativeCastApi.d.ts +11 -0
- package/lib/typescript/lib/module/internal/cast/THEOplayerNativeChromecast.d.ts +10 -0
- package/lib/typescript/lib/module/internal/cast/THEOplayerWebCastApi.d.ts +7 -0
- package/lib/typescript/lib/module/internal/web/stub/CastButtonStub.d.ts +2 -0
- package/lib/typescript/src/api/THEOplayerView.d.ts +10 -0
- package/lib/typescript/src/api/barrel.d.ts +1 -0
- package/lib/typescript/src/api/cast/Airplay.d.ts +27 -0
- package/lib/typescript/src/api/cast/CastAPI.d.ts +25 -0
- package/lib/typescript/src/api/cast/CastConfiguration.d.ts +41 -0
- package/lib/typescript/src/api/cast/CastState.d.ts +10 -0
- package/lib/typescript/src/api/cast/Chromecast.d.ts +39 -0
- package/lib/typescript/src/api/cast/barrel.d.ts +5 -0
- package/lib/typescript/src/api/config/PlayerConfiguration.d.ts +6 -1
- package/lib/typescript/src/api/error/ChromecastError.d.ts +34 -0
- package/lib/typescript/src/api/error/barrel.d.ts +1 -0
- package/lib/typescript/src/api/event/CastEvent.d.ts +21 -0
- package/lib/typescript/src/api/event/barrel.d.ts +2 -1
- package/lib/typescript/src/api/source/SourceDescription.d.ts +7 -0
- package/lib/typescript/src/api/source/barrel.d.ts +1 -0
- package/lib/typescript/src/api/source/metadata/MetadataDescription.d.ts +12 -0
- package/lib/typescript/src/api/source/metadata/barrel.d.ts +1 -0
- package/lib/typescript/src/internal/THEOplayerView.d.ts +5 -1
- package/lib/typescript/src/internal/THEOplayerView.web.d.ts +3 -1
- package/lib/typescript/src/internal/cast/THEOplayerNativeAirplay.d.ts +9 -0
- package/lib/typescript/src/internal/cast/THEOplayerNativeCastApi.d.ts +10 -0
- package/lib/typescript/src/internal/cast/THEOplayerNativeChromecast.d.ts +11 -0
- package/lib/typescript/src/internal/cast/THEOplayerWebCastApi.d.ts +9 -0
- package/lib/typescript/src/internal/web/stub/CastButtonStub.d.ts +3 -0
- package/package.json +2 -2
- package/react-native-theoplayer.podspec +2 -2
- package/src/api/THEOplayerView.ts +12 -0
- package/src/api/barrel.ts +1 -0
- package/src/api/cast/Airplay.ts +31 -0
- package/src/api/cast/CastAPI.ts +30 -0
- package/src/api/cast/CastConfiguration.ts +44 -0
- package/src/api/cast/CastState.ts +10 -0
- package/src/api/cast/Chromecast.ts +45 -0
- package/src/api/cast/barrel.ts +5 -0
- package/src/api/config/PlayerConfiguration.ts +7 -1
- package/src/api/error/ChromecastError.ts +46 -0
- package/src/api/error/barrel.ts +1 -0
- package/src/api/event/CastEvent.ts +45 -0
- package/src/api/event/barrel.ts +2 -1
- package/src/api/source/SourceDescription.ts +8 -0
- package/src/api/source/barrel.ts +1 -0
- package/src/api/source/metadata/MetadataDescription.ts +13 -0
- package/src/api/source/metadata/barrel.ts +1 -0
- package/src/internal/THEOplayerView.tsx +17 -0
- package/src/internal/THEOplayerView.web.tsx +8 -1
- package/src/internal/cast/THEOplayerNativeAirplay.ts +22 -0
- package/src/internal/cast/THEOplayerNativeCastApi.ts +28 -0
- package/src/internal/cast/THEOplayerNativeChromecast.ts +30 -0
- package/src/internal/cast/THEOplayerWebCastApi.ts +21 -0
- package/src/internal/web/stub/CastButtonStub.tsx +7 -0
- package/android/src/main/java/com/theoplayer/PlayerConfigHelper.java +0 -70
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerPackage.java +0 -32
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerView.java +0 -525
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerViewManager.java +0 -127
- package/android/src/main/java/com/theoplayer/SourceHelper.java +0 -362
- package/android/src/main/java/com/theoplayer/VideoEventEmitter.java +0 -578
- package/android/src/main/java/com/theoplayer/ads/AdEventAdapter.java +0 -92
- package/android/src/main/java/com/theoplayer/ads/AdInfo.java +0 -168
- package/android/src/main/java/com/theoplayer/ads/AdsModule.java +0 -152
- package/android/src/main/java/com/theoplayer/track/MediaTrackEventType.java +0 -11
- package/android/src/main/java/com/theoplayer/track/MediaTrackType.java +0 -11
- package/android/src/main/java/com/theoplayer/track/QualityListAdapter.java +0 -54
- package/android/src/main/java/com/theoplayer/track/QualityListFilter.java +0 -40
- package/android/src/main/java/com/theoplayer/track/TextTrackCueEventType.java +0 -11
- package/android/src/main/java/com/theoplayer/track/TrackEventType.java +0 -12
- package/android/src/main/java/com/theoplayer/track/TrackListInfo.java +0 -234
- package/android/src/main/java/com/theoplayer/util/ViewResolver.java +0 -42
- package/ios/custom/react-native-theoplayer_custom_ios.podspec +0 -36
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
package com.theoplayer.track
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.theoplayer.android.api.player.track.texttrack.TextTrackList
|
|
5
|
+
import com.facebook.react.bridge.WritableArray
|
|
6
|
+
import com.theoplayer.android.api.player.track.texttrack.TextTrack
|
|
7
|
+
import com.facebook.react.bridge.WritableMap
|
|
8
|
+
import com.theoplayer.android.api.player.track.mediatrack.MediaTrack
|
|
9
|
+
import com.theoplayer.android.api.player.track.texttrack.cue.TextTrackCue
|
|
10
|
+
import com.theoplayer.android.api.player.track.mediatrack.quality.Quality
|
|
11
|
+
import com.theoplayer.android.api.player.track.mediatrack.quality.AudioQuality
|
|
12
|
+
import com.theoplayer.android.api.player.track.mediatrack.quality.VideoQuality
|
|
13
|
+
import com.theoplayer.android.api.player.track.mediatrack.MediaTrackList
|
|
14
|
+
|
|
15
|
+
private const val PROP_ID = "id"
|
|
16
|
+
private const val PROP_UID = "uid"
|
|
17
|
+
private const val PROP_KIND = "kind"
|
|
18
|
+
private const val PROP_LANGUAGE = "language"
|
|
19
|
+
private const val PROP_MODE = "mode"
|
|
20
|
+
private const val PROP_LABEL = "label"
|
|
21
|
+
private const val PROP_TYPE = "type"
|
|
22
|
+
private const val PROP_CODECS = "codecs"
|
|
23
|
+
private const val PROP_NAME = "name"
|
|
24
|
+
private const val PROP_SRC = "src"
|
|
25
|
+
private const val PROP_FORCED = "forced"
|
|
26
|
+
private const val PROP_AUDIO_SAMPLING_RATE = "audioSamplingRate"
|
|
27
|
+
private const val PROP_BANDWIDTH = "bandwidth"
|
|
28
|
+
private const val PROP_QUALITIES = "qualities"
|
|
29
|
+
private const val PROP_ACTIVE_QUALITY = "activeQuality"
|
|
30
|
+
private const val PROP_TARGET_QUALITY = "targetQuality"
|
|
31
|
+
private const val PROP_WIDTH = "width"
|
|
32
|
+
private const val PROP_HEIGHT = "height"
|
|
33
|
+
private const val PROP_FRAMERATE = "framerate"
|
|
34
|
+
private const val PROP_STARTTIME = "startTime"
|
|
35
|
+
private const val PROP_ENDTIME = "endTime"
|
|
36
|
+
private const val PROP_CUES = "cues"
|
|
37
|
+
private const val PROP_CUE_CONTENT = "content"
|
|
38
|
+
|
|
39
|
+
class TrackListAdapter {
|
|
40
|
+
|
|
41
|
+
fun fromTextTrackList(textTrackList: TextTrackList): WritableArray {
|
|
42
|
+
val textTracks = Arguments.createArray()
|
|
43
|
+
for (i in 0 until textTrackList.length()) {
|
|
44
|
+
textTracks.pushMap(fromTextTrack(textTrackList.getItem(i)))
|
|
45
|
+
}
|
|
46
|
+
return textTracks
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
fun fromTextTrack(textTrack: TextTrack): WritableMap {
|
|
50
|
+
val textTrackPayload = Arguments.createMap()
|
|
51
|
+
textTrackPayload.putString(PROP_ID, textTrack.id)
|
|
52
|
+
textTrackPayload.putInt(PROP_UID, textTrack.uid)
|
|
53
|
+
textTrackPayload.putString(PROP_KIND, textTrack.kind)
|
|
54
|
+
textTrackPayload.putString(PROP_LANGUAGE, textTrack.language)
|
|
55
|
+
textTrackPayload.putString(PROP_MODE, textTrack.mode.mode)
|
|
56
|
+
textTrackPayload.putString(PROP_LABEL, textTrack.label)
|
|
57
|
+
textTrackPayload.putString(PROP_TYPE, textTrack.type.type)
|
|
58
|
+
|
|
59
|
+
// THEOplayer v3.5+
|
|
60
|
+
textTrackPayload.putString(PROP_SRC, textTrack.source)
|
|
61
|
+
textTrackPayload.putBoolean(PROP_FORCED, textTrack.isForced)
|
|
62
|
+
|
|
63
|
+
// Optionally pass cue list.
|
|
64
|
+
val cueList = textTrack.cues
|
|
65
|
+
if (cueList != null) {
|
|
66
|
+
val cueListPayload = Arguments.createArray()
|
|
67
|
+
for (cue in cueList) {
|
|
68
|
+
cueListPayload.pushMap(fromTextTrackCue(cue))
|
|
69
|
+
}
|
|
70
|
+
textTrackPayload.putArray(PROP_CUES, cueListPayload)
|
|
71
|
+
}
|
|
72
|
+
return textTrackPayload
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
fun fromTextTrackCue(cue: TextTrackCue): WritableMap {
|
|
76
|
+
val cuePayload = Arguments.createMap()
|
|
77
|
+
cuePayload.putString(PROP_ID, cue.id)
|
|
78
|
+
cuePayload.putDouble(PROP_UID, cue.uid.toDouble())
|
|
79
|
+
cuePayload.putDouble(PROP_STARTTIME, (1e03 * cue.startTime).toLong().toDouble())
|
|
80
|
+
cuePayload.putDouble(PROP_ENDTIME, (1e03 * cue.endTime).toLong().toDouble())
|
|
81
|
+
val content = cue.content
|
|
82
|
+
if (content != null) {
|
|
83
|
+
cuePayload.putString(PROP_CUE_CONTENT, content.optString("content"))
|
|
84
|
+
}
|
|
85
|
+
return cuePayload
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
fun fromQuality(quality: Quality): WritableMap {
|
|
89
|
+
return if (quality is AudioQuality) fromAudioQuality(quality) else fromVideoQuality(quality as VideoQuality)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private fun fromAudioQuality(quality: AudioQuality): WritableMap {
|
|
93
|
+
val audioQualityPayload = Arguments.createMap()
|
|
94
|
+
audioQualityPayload.putString(PROP_ID, quality.id)
|
|
95
|
+
audioQualityPayload.putInt(PROP_UID, quality.uid)
|
|
96
|
+
audioQualityPayload.putString(PROP_CODECS, quality.codecs)
|
|
97
|
+
audioQualityPayload.putString(PROP_NAME, quality.name)
|
|
98
|
+
audioQualityPayload.putDouble(PROP_BANDWIDTH, quality.bandwidth.toDouble())
|
|
99
|
+
audioQualityPayload.putDouble(
|
|
100
|
+
PROP_AUDIO_SAMPLING_RATE,
|
|
101
|
+
quality.audioSamplingRate.toDouble()
|
|
102
|
+
)
|
|
103
|
+
return audioQualityPayload
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
fun <Q : Quality?> fromMediaTrack(
|
|
107
|
+
track: MediaTrack<Q>,
|
|
108
|
+
trackType: MediaTrackType
|
|
109
|
+
): WritableMap {
|
|
110
|
+
return if (trackType === MediaTrackType.AUDIO) fromAudioTrack(track as MediaTrack<AudioQuality>)
|
|
111
|
+
else fromVideoTrack(track as MediaTrack<VideoQuality>)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private fun fromAudioTrack(audioTrack: MediaTrack<AudioQuality>): WritableMap {
|
|
115
|
+
val audioTrackPayload = Arguments.createMap()
|
|
116
|
+
audioTrackPayload.putString(PROP_ID, audioTrack.id)
|
|
117
|
+
audioTrackPayload.putInt(PROP_UID, audioTrack.uid)
|
|
118
|
+
audioTrackPayload.putString(PROP_KIND, audioTrack.kind)
|
|
119
|
+
audioTrackPayload.putString(PROP_LABEL, audioTrack.label)
|
|
120
|
+
audioTrackPayload.putString(PROP_LANGUAGE, audioTrack.language)
|
|
121
|
+
val qualityList = audioTrack.qualities
|
|
122
|
+
val qualities = Arguments.createArray()
|
|
123
|
+
if (qualityList != null) {
|
|
124
|
+
for (j in 0 until qualityList.length()) {
|
|
125
|
+
qualities.pushMap(fromAudioQuality(qualityList.getItem(j)))
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
audioTrackPayload.putArray(PROP_QUALITIES, qualities)
|
|
129
|
+
val targetQualityList = audioTrack.targetQualities
|
|
130
|
+
val targetQualities = Arguments.createArray()
|
|
131
|
+
if (targetQualityList != null) {
|
|
132
|
+
for (j in 0 until targetQualityList.length()) {
|
|
133
|
+
val quality = targetQualityList.getItem(j)
|
|
134
|
+
val audioQualityPayload = Arguments.createMap()
|
|
135
|
+
audioQualityPayload.putInt(PROP_UID, quality.uid)
|
|
136
|
+
targetQualities.pushMap(audioQualityPayload)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
val activeQuality = audioTrack.activeQuality
|
|
140
|
+
if (activeQuality != null) {
|
|
141
|
+
audioTrackPayload.putInt(PROP_ACTIVE_QUALITY, activeQuality.uid)
|
|
142
|
+
}
|
|
143
|
+
val targetQuality = audioTrack.targetQuality
|
|
144
|
+
if (targetQuality != null) {
|
|
145
|
+
audioTrackPayload.putInt(PROP_TARGET_QUALITY, targetQuality.uid)
|
|
146
|
+
}
|
|
147
|
+
return audioTrackPayload
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
fun fromAudioTrackList(audioTrackList: MediaTrackList<AudioQuality>): WritableArray {
|
|
151
|
+
val audioTracks = Arguments.createArray()
|
|
152
|
+
for (i in 0 until audioTrackList.length()) {
|
|
153
|
+
audioTracks.pushMap(fromAudioTrack(audioTrackList.getItem(i)))
|
|
154
|
+
}
|
|
155
|
+
return audioTracks
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
private fun fromVideoQuality(quality: VideoQuality): WritableMap {
|
|
159
|
+
val videoQualityPayload = Arguments.createMap()
|
|
160
|
+
videoQualityPayload.putString(PROP_ID, quality.id)
|
|
161
|
+
videoQualityPayload.putInt(PROP_UID, quality.uid)
|
|
162
|
+
videoQualityPayload.putString(PROP_CODECS, quality.codecs)
|
|
163
|
+
videoQualityPayload.putString(PROP_NAME, quality.name)
|
|
164
|
+
videoQualityPayload.putDouble(PROP_BANDWIDTH, quality.bandwidth.toDouble())
|
|
165
|
+
videoQualityPayload.putDouble(PROP_WIDTH, quality.width.toDouble())
|
|
166
|
+
videoQualityPayload.putDouble(PROP_HEIGHT, quality.height.toDouble())
|
|
167
|
+
videoQualityPayload.putDouble(PROP_FRAMERATE, quality.frameRate)
|
|
168
|
+
return videoQualityPayload
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
private fun fromVideoTrack(videoTrack: MediaTrack<VideoQuality>): WritableMap {
|
|
172
|
+
val videoTrackPayload = Arguments.createMap()
|
|
173
|
+
videoTrackPayload.putString(PROP_ID, videoTrack.id)
|
|
174
|
+
videoTrackPayload.putInt(PROP_UID, videoTrack.uid)
|
|
175
|
+
videoTrackPayload.putString(PROP_KIND, videoTrack.kind)
|
|
176
|
+
videoTrackPayload.putString(PROP_LABEL, videoTrack.label)
|
|
177
|
+
videoTrackPayload.putString(PROP_LANGUAGE, videoTrack.language)
|
|
178
|
+
val qualityList = videoTrack.qualities
|
|
179
|
+
val qualities = Arguments.createArray()
|
|
180
|
+
if (qualityList != null) {
|
|
181
|
+
// Sort qualities according to (height, bandwidth)
|
|
182
|
+
val sortedQualityList = QualityListAdapter(qualityList)
|
|
183
|
+
sortedQualityList.sort { o: VideoQuality, t1: VideoQuality ->
|
|
184
|
+
if (o.height == t1.height) t1.bandwidth.compareTo(o.bandwidth) else t1.height.compareTo(o.height)
|
|
185
|
+
}
|
|
186
|
+
for (quality in sortedQualityList) {
|
|
187
|
+
qualities.pushMap(fromVideoQuality(quality as VideoQuality))
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
videoTrackPayload.putArray(PROP_QUALITIES, qualities)
|
|
191
|
+
val targetQualityList = videoTrack.targetQualities
|
|
192
|
+
val targetQualities = Arguments.createArray()
|
|
193
|
+
if (targetQualityList != null) {
|
|
194
|
+
for (j in 0 until targetQualityList.length()) {
|
|
195
|
+
val quality = targetQualityList.getItem(j)
|
|
196
|
+
val videoQualityPayload = Arguments.createMap()
|
|
197
|
+
videoQualityPayload.putInt(PROP_UID, quality.uid)
|
|
198
|
+
targetQualities.pushMap(videoQualityPayload)
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
val activeQuality = videoTrack.activeQuality
|
|
202
|
+
if (activeQuality != null) {
|
|
203
|
+
videoTrackPayload.putInt(PROP_ACTIVE_QUALITY, activeQuality.uid)
|
|
204
|
+
}
|
|
205
|
+
val targetQuality = videoTrack.targetQuality
|
|
206
|
+
if (targetQuality != null) {
|
|
207
|
+
videoTrackPayload.putInt(PROP_TARGET_QUALITY, targetQuality.uid)
|
|
208
|
+
}
|
|
209
|
+
return videoTrackPayload
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
fun fromVideoTrackList(videoTrackList: MediaTrackList<VideoQuality>): WritableArray {
|
|
213
|
+
val videoTracks = Arguments.createArray()
|
|
214
|
+
for (i in 0 until videoTrackList.length()) {
|
|
215
|
+
videoTracks.pushMap(fromVideoTrack(videoTrackList.getItem(i)))
|
|
216
|
+
}
|
|
217
|
+
return videoTracks
|
|
218
|
+
}
|
|
219
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package com.theoplayer.util
|
|
2
|
+
|
|
3
|
+
import android.os.Handler
|
|
4
|
+
import android.os.Looper
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.uimanager.UIManagerModule
|
|
7
|
+
import com.theoplayer.ReactTHEOplayerView
|
|
8
|
+
|
|
9
|
+
class ViewResolver(private val reactContext: ReactApplicationContext) {
|
|
10
|
+
private var uiManager: UIManagerModule? = null
|
|
11
|
+
private val handler = Handler(Looper.getMainLooper())
|
|
12
|
+
|
|
13
|
+
fun resolveViewByTag(tag: Int, onResolved: (view: ReactTHEOplayerView?) -> Unit) {
|
|
14
|
+
if (uiManager == null) {
|
|
15
|
+
uiManager = reactContext.getNativeModule(UIManagerModule::class.java)
|
|
16
|
+
}
|
|
17
|
+
handler.post { onResolved(uiManager?.resolveView(tag) as ReactTHEOplayerView) }
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -23,9 +23,9 @@ let PROP_GOOGLE_AD_HEIGHT: String = "height"
|
|
|
23
23
|
let PROP_GOOGLE_AD_CONTENT_TYPE: String = "contentType"
|
|
24
24
|
let PROP_GOOGLE_AD_ID_REGISTRY: String = "adIdRegistry"
|
|
25
25
|
let PROP_GOOGLE_AD_ID_VALUE: String = "adIdValue"
|
|
26
|
-
let
|
|
27
|
-
let
|
|
28
|
-
let
|
|
26
|
+
let PROP_GOOGLE_AD_WRAPPER_AD_IDS: String = "wrapperAdIds"
|
|
27
|
+
let PROP_GOOGLE_AD_WRAPPER_AD_SYSTEMS: String = "wrapperAdSystems"
|
|
28
|
+
let PROP_GOOGLE_AD_WRAPPER_CREATIVE_IDS: String = "wrapperCreativeIds"
|
|
29
29
|
let PROP_ADBREAK_MAX_DURATION: String = "maxDuration"
|
|
30
30
|
let PROP_ADBREAK_TIME_OFFSET: String = "timeOffset"
|
|
31
31
|
let PROP_ADBREAK_MAX_REMAINING_DURATION: String = "maxRemainingDuration"
|
|
@@ -58,7 +58,11 @@ class THEOplayerRCTAdAggregator {
|
|
|
58
58
|
let adBreak = ad.adBreak {
|
|
59
59
|
adData[PROP_AD_BREAK] = THEOplayerRCTAdAggregator.aggregateAdBreak(adBreak: adBreak)
|
|
60
60
|
}
|
|
61
|
+
|
|
62
|
+
#if os(iOS)
|
|
61
63
|
adData[PROP_AD_COMPANIONS] = THEOplayerRCTAdAggregator.aggregateCompanionAds(companionAds: ad.companions)
|
|
64
|
+
#endif
|
|
65
|
+
|
|
62
66
|
adData[PROP_AD_UNIVERSAL_AD_IDS] = []
|
|
63
67
|
|
|
64
68
|
// Add additional properties for Linear Ads
|
|
@@ -69,11 +73,13 @@ class THEOplayerRCTAdAggregator {
|
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
// Add additional properties for NonLinear Ads
|
|
76
|
+
#if os(iOS)
|
|
72
77
|
if let nonLinearAd = ad as? NonLinearAd {
|
|
73
78
|
if let adClickThrough = nonLinearAd.clickThrough {
|
|
74
79
|
adData[PROP_AD_CLICK_THROUGH] = adClickThrough
|
|
75
80
|
}
|
|
76
81
|
}
|
|
82
|
+
#endif
|
|
77
83
|
|
|
78
84
|
// Add additional properties for GoogleIma Ads
|
|
79
85
|
if let googleImaAd = ad as? GoogleImaAd {
|
|
@@ -105,9 +111,9 @@ class THEOplayerRCTAdAggregator {
|
|
|
105
111
|
}
|
|
106
112
|
adData[PROP_AD_UNIVERSAL_AD_IDS] = adIdList
|
|
107
113
|
}
|
|
108
|
-
adData[
|
|
109
|
-
adData[
|
|
110
|
-
adData[
|
|
114
|
+
adData[PROP_GOOGLE_AD_WRAPPER_AD_IDS] = googleImaAd.wrapperAdIds
|
|
115
|
+
adData[PROP_GOOGLE_AD_WRAPPER_AD_SYSTEMS] = googleImaAd.wrapperAdSystems
|
|
116
|
+
adData[PROP_GOOGLE_AD_WRAPPER_CREATIVE_IDS] = googleImaAd.wrapperCreativeIds
|
|
111
117
|
}
|
|
112
118
|
|
|
113
119
|
return adData
|
|
@@ -165,7 +165,46 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
+
#else
|
|
169
|
+
@objc(skip:)
|
|
170
|
+
func skip(_ node: NSNumber) -> Void {
|
|
171
|
+
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
172
|
+
return
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
@objc(playing:resolver:rejecter:)
|
|
176
|
+
func playing(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
177
|
+
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
178
|
+
resolve(false)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
@objc(currentAdBreak:resolver:rejecter:)
|
|
182
|
+
func currentAdBreak(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
183
|
+
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
184
|
+
resolve([:])
|
|
185
|
+
}
|
|
168
186
|
|
|
187
|
+
@objc(currentAds:resolver:rejecter:)
|
|
188
|
+
func currentAds(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
189
|
+
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
190
|
+
resolve([])
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@objc(scheduledAdBreaks:resolver:rejecter:)
|
|
194
|
+
func scheduledAdBreaks(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
195
|
+
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
196
|
+
resolve([])
|
|
197
|
+
// TODO: handle request for scheduled adbreaks. Awaiting iOS SDK implementation
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@objc(schedule:ad:)
|
|
201
|
+
func schedule(_ node: NSNumber, adDict: NSDictionary) -> Void {
|
|
202
|
+
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
203
|
+
return
|
|
204
|
+
}
|
|
205
|
+
#endif
|
|
206
|
+
|
|
207
|
+
#if os(iOS) && ADS && GOOGLE_DAI
|
|
169
208
|
@objc(daiSnapback:resolver:rejecter:)
|
|
170
209
|
func daiSnapback(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
171
210
|
DispatchQueue.main.async {
|
|
@@ -234,46 +273,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
234
273
|
}
|
|
235
274
|
}
|
|
236
275
|
}
|
|
237
|
-
|
|
238
276
|
#else
|
|
239
|
-
|
|
240
|
-
@objc(skip:)
|
|
241
|
-
func skip(_ node: NSNumber) -> Void {
|
|
242
|
-
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
243
|
-
return
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
@objc(playing:resolver:rejecter:)
|
|
247
|
-
func playing(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
248
|
-
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
249
|
-
resolve(false)
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
@objc(currentAdBreak:resolver:rejecter:)
|
|
253
|
-
func currentAdBreak(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
254
|
-
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
255
|
-
resolve([:])
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
@objc(currentAds:resolver:rejecter:)
|
|
259
|
-
func currentAds(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
260
|
-
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
261
|
-
resolve([])
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
@objc(scheduledAdBreaks:resolver:rejecter:)
|
|
265
|
-
func scheduledAdBreaks(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
266
|
-
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
267
|
-
resolve([])
|
|
268
|
-
// TODO: handle request for scheduled adbreaks. Awaiting iOS SDK implementation
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
@objc(schedule:ad:)
|
|
272
|
-
func schedule(_ node: NSNumber, adDict: NSDictionary) -> Void {
|
|
273
|
-
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
274
|
-
return
|
|
275
|
-
}
|
|
276
|
-
|
|
277
277
|
@objc(daiSnapback:resolver:rejecter:)
|
|
278
278
|
func daiSnapback(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
279
279
|
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
@@ -291,6 +291,5 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
|
|
|
291
291
|
if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
|
|
292
292
|
resolve(timeValue.doubleValue)
|
|
293
293
|
}
|
|
294
|
-
|
|
295
294
|
#endif
|
|
296
295
|
}
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
#import <React/RCTBridgeModule.h>
|
|
11
11
|
#import <React/RCTEventEmitter.h>
|
|
12
12
|
|
|
13
|
+
// ----------------------------------------------------------------------------
|
|
13
14
|
// View Manager
|
|
15
|
+
// ----------------------------------------------------------------------------
|
|
14
16
|
@interface RCT_EXTERN_MODULE(THEOplayerRCTViewManager, RCTViewManager)
|
|
15
17
|
|
|
16
18
|
RCT_EXPORT_VIEW_PROPERTY(src, NSDictionary);
|
|
@@ -51,11 +53,16 @@ RCT_EXPORT_VIEW_PROPERTY(onNativeMediaTrackEvent, RCTDirectEventBlock);
|
|
|
51
53
|
|
|
52
54
|
RCT_EXPORT_VIEW_PROPERTY(onNativeAdEvent, RCTDirectEventBlock);
|
|
53
55
|
|
|
56
|
+
RCT_EXPORT_VIEW_PROPERTY(onNativeCastEvent, RCTDirectEventBlock);
|
|
57
|
+
|
|
54
58
|
RCT_EXTERN_METHOD(destroy:(nonnull NSNumber *)node);
|
|
55
59
|
|
|
56
60
|
@end
|
|
57
61
|
|
|
62
|
+
// ----------------------------------------------------------------------------
|
|
58
63
|
// Ads Module
|
|
64
|
+
// ----------------------------------------------------------------------------
|
|
65
|
+
|
|
59
66
|
@interface RCT_EXTERN_REMAP_MODULE(AdsModule, THEOplayerRCTAdsAPI, NSObject)
|
|
60
67
|
|
|
61
68
|
RCT_EXTERN_METHOD(skip:(nonnull NSNumber *)node)
|
|
@@ -98,7 +105,9 @@ RCT_EXTERN_METHOD(daiStreamTimeForContentTime:(nonnull NSNumber *)node
|
|
|
98
105
|
|
|
99
106
|
@end
|
|
100
107
|
|
|
101
|
-
//
|
|
108
|
+
// ----------------------------------------------------------------------------
|
|
109
|
+
// ContentProtection Module
|
|
110
|
+
// ----------------------------------------------------------------------------
|
|
102
111
|
@interface RCT_EXTERN_REMAP_MODULE(ContentProtectionModule, THEOplayerRCTContentProtectionAPI, RCTEventEmitter)
|
|
103
112
|
|
|
104
113
|
RCT_EXTERN_METHOD(onBuildProcessed:(NSDictionary)result)
|
|
@@ -113,3 +122,45 @@ RCT_EXTERN_METHOD(registerContentProtectionIntegration:(nonnull NSString *)integ
|
|
|
113
122
|
keySystemId:(nonnull NSString *)keySystemId)
|
|
114
123
|
|
|
115
124
|
@end
|
|
125
|
+
|
|
126
|
+
// ----------------------------------------------------------------------------
|
|
127
|
+
// Cast Module
|
|
128
|
+
// ----------------------------------------------------------------------------
|
|
129
|
+
|
|
130
|
+
@interface RCT_EXTERN_REMAP_MODULE(CastModule, THEOplayerRCTCastAPI, NSObject)
|
|
131
|
+
|
|
132
|
+
RCT_EXTERN_METHOD(casting:(nonnull NSNumber *)node
|
|
133
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
134
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
135
|
+
|
|
136
|
+
// chromecast specific
|
|
137
|
+
RCT_EXTERN_METHOD(chromecastCasting:(nonnull NSNumber *)node
|
|
138
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
139
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
140
|
+
|
|
141
|
+
RCT_EXTERN_METHOD(chromecastState:(nonnull NSNumber *)node
|
|
142
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
143
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
144
|
+
|
|
145
|
+
RCT_EXTERN_METHOD(chromecastStart:(nonnull NSNumber *)node)
|
|
146
|
+
|
|
147
|
+
RCT_EXTERN_METHOD(chromecastStop:(nonnull NSNumber *)node)
|
|
148
|
+
|
|
149
|
+
RCT_EXTERN_METHOD(chromecastJoin:(nonnull NSNumber *)node)
|
|
150
|
+
|
|
151
|
+
RCT_EXTERN_METHOD(chromecastLeave:(nonnull NSNumber *)node)
|
|
152
|
+
|
|
153
|
+
// airplay specific
|
|
154
|
+
RCT_EXTERN_METHOD(airplayCasting:(nonnull NSNumber *)node
|
|
155
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
156
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
157
|
+
|
|
158
|
+
RCT_EXTERN_METHOD(airplayState:(nonnull NSNumber *)node
|
|
159
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
160
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
161
|
+
|
|
162
|
+
RCT_EXTERN_METHOD(airplayStart:(nonnull NSNumber *)node)
|
|
163
|
+
|
|
164
|
+
RCT_EXTERN_METHOD(airplayStop:(nonnull NSNumber *)node)
|
|
165
|
+
|
|
166
|
+
@end
|