From 6d9a2b2dd6509d14e3ec92b66507f88b9acc1a21 Mon Sep 17 00:00:00 2001 From: romain petit Date: Wed, 3 Nov 2021 16:08:41 +0100 Subject: [PATCH 1/7] feat(*) add events stream callback --- .../ReactNativeLivestreamViewManager.kt | 48 +++++++++++++++++++ example/ios/Podfile.lock | 4 +- .../project.pbxproj | 5 +- .../project.pbxproj | 27 ++--------- ios/ReactNativeLivestreamView.swift | 23 +++++++-- ios/ReactNativeLivestreamViewManager.m | 3 ++ src/index.tsx | 37 ++++++++++++-- 7 files changed, 114 insertions(+), 33 deletions(-) diff --git a/android/src/main/java/com/apivideoreactnativelivestream/ReactNativeLivestreamViewManager.kt b/android/src/main/java/com/apivideoreactnativelivestream/ReactNativeLivestreamViewManager.kt index aef0139..2b86501 100644 --- a/android/src/main/java/com/apivideoreactnativelivestream/ReactNativeLivestreamViewManager.kt +++ b/android/src/main/java/com/apivideoreactnativelivestream/ReactNativeLivestreamViewManager.kt @@ -11,6 +11,11 @@ import com.pedro.encoder.input.video.CameraHelper import net.ossrs.rtmp.ConnectCheckerRtmp import video.api.livestream_module.ApiVideoLiveStream import video.api.livestream_module.Resolution +import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter +import com.facebook.react.bridge.Arguments +import com.facebook.react.bridge.ReactContext +import com.facebook.react.uimanager.events.RCTEventEmitter + private fun getResolutionFromResolutionString(resolutionString: String?): Resolution { return when (resolutionString) { @@ -32,6 +37,17 @@ private fun getFacingFromCameraString(resolutionString: String?): CameraHelper.F } } +enum class Events(private val mName: String) { + CONNECTION_SUCCESS("onConnectionSuccess"), + CONNECTION_FAILED("onConnectionFailed"), + DISCONNECT("onDisconnect"); + + override fun toString(): String { + return mName + } +} + + class ReactNativeLivestreamViewManager : SimpleViewManager(), ConnectCheckerRtmp { override fun getName() = "ReactNativeLivestreamView" @@ -48,6 +64,16 @@ class ReactNativeLivestreamViewManager : SimpleViewManager(), ConnectCheck private lateinit var apiVideo: ApiVideoLiveStream + private var code: String? = null + + override fun getExportedCustomDirectEventTypeConstants(): MutableMap>? { + val builder: MapBuilder.Builder> = MapBuilder.builder>() + for (event in Events.values()) { + builder.put(event.toString(), MapBuilder.of("registrationName", event.toString())) + } + return builder.build() + } + override fun createViewInstance(reactContext: ThemedReactContext): View { context = reactContext view = ReactNativeLivestreamView(reactContext) @@ -78,6 +104,25 @@ class ReactNativeLivestreamViewManager : SimpleViewManager(), ConnectCheck ) } + private fun sendConnectionSuccessEvent() { + val reactContext = context as ReactContext + val payload = Arguments.createMap() + reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(view.id, Events.CONNECTION_SUCCESS.toString(), payload) + } + + private fun sendConnectionFailedEvent(reason: String?) { + val reactContext = context as ReactContext + val payload = Arguments.createMap() + payload.putString("reason", reason) + reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(view.id, Events.CONNECTION_FAILED.toString(), payload) + } + + private fun sendDisconnectEvent() { + val reactContext = context as ReactContext + val payload = Arguments.createMap() + reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(view.id, Events.DISCONNECT.toString(), payload) + } + @ReactProp(name = "liveStreamKey") fun setLiveStreamKey(view: View, newLiveStreamKey: String) { if (newLiveStreamKey == liveStreamKey) return @@ -146,10 +191,12 @@ class ReactNativeLivestreamViewManager : SimpleViewManager(), ConnectCheck override fun onConnectionSuccessRtmp() { Log.e("connection rtmp", "success") + sendConnectionSuccessEvent() } override fun onConnectionFailedRtmp(reason: String) { Log.e("connection rtmp", "error") + sendConnectionFailedEvent(reason) } override fun onNewBitrateRtmp(bitrate: Long) { @@ -158,6 +205,7 @@ class ReactNativeLivestreamViewManager : SimpleViewManager(), ConnectCheck override fun onDisconnectRtmp() { Log.e("disconnect rtmp", "success") + sendDisconnectEvent() } override fun onAuthErrorRtmp() { diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 06b8067..92646c9 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -442,7 +442,7 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - api-video-react-native-livestream: caad2230ceac5eb371df19dbdd530334abc0c8b9 + api-video-react-native-livestream: c39168b03e97951aced83bcf3818688b2e32f0ca boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: cde416483dac037923206447da6e1454df403714 @@ -487,4 +487,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 3203bd2aee4bd5eb29a8aedac7fe8e213a8b774d -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.2 diff --git a/example/ios/ReactNativeLivestreamExample.xcodeproj/project.pbxproj b/example/ios/ReactNativeLivestreamExample.xcodeproj/project.pbxproj index 4a91007..46b0a15 100644 --- a/example/ios/ReactNativeLivestreamExample.xcodeproj/project.pbxproj +++ b/example/ios/ReactNativeLivestreamExample.xcodeproj/project.pbxproj @@ -276,6 +276,7 @@ }; 2D02E47A1E0B4A5D006451C7 = { CreatedOnToolsVersion = 8.2.1; + DevelopmentTeam = VY3VXRC7P4; ProvisioningStyle = Automatic; }; 2D02E48F1E0B4A5D006451C7 = { @@ -398,7 +399,7 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-ReactNativeLivestreamExample/Pods-ReactNativeLivestreamExample-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -620,6 +621,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = VY3VXRC7P4; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "ReactNativeLivestreamExample-tvOS/Info.plist"; @@ -648,6 +650,7 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = VY3VXRC7P4; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "ReactNativeLivestreamExample-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; diff --git a/ios/ReactNativeLivestream.xcodeproj/project.pbxproj b/ios/ReactNativeLivestream.xcodeproj/project.pbxproj index 7443bcb..bf8b9d7 100644 --- a/ios/ReactNativeLivestream.xcodeproj/project.pbxproj +++ b/ios/ReactNativeLivestream.xcodeproj/project.pbxproj @@ -6,13 +6,6 @@ objectVersion = 46; objects = { -/* Begin PBXBuildFile section */ - - 5E555C0D2413F4C50049A1A2 /* ReactNativeLivestream.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* ReactNativeLivestream.m */; }; - F4FF95D7245B92E800C19C63 /* ReactNativeLivestream.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FF95D6245B92E800C19C63 /* ReactNativeLivestream.swift */; }; - -/* End PBXBuildFile section */ - /* Begin PBXCopyFilesBuildPhase section */ 58B511D91A9E6C8500147676 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -27,11 +20,9 @@ /* Begin PBXFileReference section */ 134814201AA4EA6300B7C361 /* libReactNativeLivestream.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libReactNativeLivestream.a; sourceTree = BUILT_PRODUCTS_DIR; }; - - B3E7B5891CC2AC0600A0062D /* ReactNativeLivestream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReactNativeLivestream.m; sourceTree = ""; }; + C7B0344B270E645E004FB4FA /* ReactNativeLivestreamView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactNativeLivestreamView.swift; sourceTree = ""; }; + C7B0344C270E6480004FB4FA /* ReactNativeLivestreamViewManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactNativeLivestreamViewManager.swift; sourceTree = ""; }; F4FF95D5245B92E700C19C63 /* ReactNativeLivestream-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ReactNativeLivestream-Bridging-Header.h"; sourceTree = ""; }; - F4FF95D6245B92E800C19C63 /* ReactNativeLivestream.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactNativeLivestream.swift; sourceTree = ""; }; - /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -56,11 +47,9 @@ 58B511D21A9E6C8500147676 = { isa = PBXGroup; children = ( - - F4FF95D6245B92E800C19C63 /* ReactNativeLivestream.swift */, - B3E7B5891CC2AC0600A0062D /* ReactNativeLivestream.m */, + C7B0344B270E645E004FB4FA /* ReactNativeLivestreamView.swift */, + C7B0344C270E6480004FB4FA /* ReactNativeLivestreamViewManager.swift */, F4FF95D5245B92E700C19C63 /* ReactNativeLivestream-Bridging-Header.h */, - 134814211AA4EA7D00B7C361 /* Products */, ); sourceTree = ""; @@ -122,10 +111,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - - F4FF95D7245B92E800C19C63 /* ReactNativeLivestream.swift in Sources */, - B3E7B58A1CC2AC0600A0062D /* ReactNativeLivestream.m in Sources */, - ); runOnlyForDeploymentPostprocessing = 0; }; @@ -238,11 +223,9 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = ReactNativeLivestream; SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "ReactNativeLivestream-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - }; name = Debug; }; @@ -259,10 +242,8 @@ OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = ReactNativeLivestream; SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "ReactNativeLivestream-Bridging-Header.h"; SWIFT_VERSION = 5.0; - }; name = Release; }; diff --git a/ios/ReactNativeLivestreamView.swift b/ios/ReactNativeLivestreamView.swift index c0280e4..4aa5b5a 100644 --- a/ios/ReactNativeLivestreamView.swift +++ b/ios/ReactNativeLivestreamView.swift @@ -40,15 +40,32 @@ class ReactNativeLivestreamView : UIView { } } - @objc var onStatusChange: RCTDirectEventBlock? = nil { + + @objc var onConnectionSuccess: RCTDirectEventBlock? = nil { didSet { - apiVideo?.onStatusChange = {(code) in - self.onStatusChange?([ + apiVideo?.onConnectionSuccess = {() in + self.onConnectionSuccess?([:]) + } + } + } + + @objc var onConnectionFailed: RCTDirectEventBlock? = nil { + didSet { + apiVideo?.onConnectionFailed = {(code) in + self.onConnectionFailed?([ "code": code ]) } } } + + @objc var onDisconnect: RCTDirectEventBlock? = nil { + didSet { + apiVideo?.onDisconnect = {() in + self.onDisconnect?([:]) + } + } + } @objc override func didMoveToWindow() { super.didMoveToWindow() diff --git a/ios/ReactNativeLivestreamViewManager.m b/ios/ReactNativeLivestreamViewManager.m index c76c768..7efdbf3 100644 --- a/ios/ReactNativeLivestreamViewManager.m +++ b/ios/ReactNativeLivestreamViewManager.m @@ -4,6 +4,9 @@ @interface RCT_EXTERN_MODULE(ReactNativeLivestreamViewManager, RCTViewManager) RCT_EXPORT_VIEW_PROPERTY(liveStreamKey, NSString) RCT_EXPORT_VIEW_PROPERTY(onStatusChange, RCTDirectEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onConnectionSuccess, RCTDirectEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onConnectionFailed, RCTDirectEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onDisconnect, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(rtmpServerUrl, NSString) RCT_EXPORT_VIEW_PROPERTY(videoFps, double) RCT_EXPORT_VIEW_PROPERTY(videoResolution, NSString) diff --git a/src/index.tsx b/src/index.tsx index 89661d2..a1a53ce 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -7,6 +7,7 @@ import { NativeSyntheticEvent, } from 'react-native'; + type ReactNativeLivestreamProps = { style: ViewStyle; liveStreamKey: string; @@ -22,7 +23,9 @@ type ReactNativeLivestreamProps = { muted?: boolean; bitrate?: number; }; - onStatusChange?: (event: NativeSyntheticEvent<{ code: string }>) => void; + onConnectionSuccess?: () => void; + onConnectionFailed?: (code: string) => void; + onDisconnect?: () => void; }; type ReactNativeLivestreamNativeProps = { @@ -36,7 +39,9 @@ type ReactNativeLivestreamNativeProps = { videoOrientation?: 'landscape' | 'portrait'; audioMuted?: boolean; audioBitrate?: number; - onStatusChange?: (event: NativeSyntheticEvent<{ code: string }>) => void; + onConnectionSuccess?: (event: NativeSyntheticEvent<{ }>) => void; + onConnectionFailed?: (event: NativeSyntheticEvent<{ code: string }>) => void; + onDisconnect?: (event: NativeSyntheticEvent<{ }>) => void; }; export type ReactNativeLivestreamMethods = { @@ -57,9 +62,31 @@ const LivestreamView = forwardRef< ReactNativeLivestreamProps >( ( - { style, video, rtmpServerUrl, liveStreamKey, audio, onStatusChange }, + { style, video, rtmpServerUrl, liveStreamKey, audio, onConnectionSuccess, onConnectionFailed, onDisconnect }, forwardedRef ) => { + + const onConnectionSuccessHandler = ( + event: NativeSyntheticEvent<{}> + ) => { + const { } = event.nativeEvent; + onConnectionSuccess?.(); + }; + + const onConnectionFailedHandler = ( + event: NativeSyntheticEvent<{ code: string }> + ) => { + const { code } = event.nativeEvent; + onConnectionFailed?.(code); + }; + + const onDisconnectHandler = ( + event: NativeSyntheticEvent<{}> + ) => { + const { } = event.nativeEvent; + onDisconnect?.(); + }; + const nativeRef = useRef( null ); @@ -112,7 +139,9 @@ const LivestreamView = forwardRef< liveStreamKey={liveStreamKey} rtmpServerUrl={rtmpServerUrl} ref={nativeRef as any} - onStatusChange={onStatusChange} + onConnectionSuccess={onConnectionSuccessHandler} + onConnectionFailed={onConnectionFailedHandler} + onDisconnect={onDisconnectHandler} /> ); } From 5fe035ceee8751040de21cb4f69bd5b1c422cee2 Mon Sep 17 00:00:00 2001 From: romain petit Date: Wed, 3 Nov 2021 16:09:42 +0100 Subject: [PATCH 2/7] feat(sample) add new feature --- example/src/App.tsx | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/example/src/App.tsx b/example/src/App.tsx index f0c4f76..a98c327 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -6,7 +6,6 @@ import { View, TouchableOpacity, Platform, - // PermissionsAndroid, Text, } from 'react-native'; import { @@ -24,34 +23,6 @@ export default function App() { 'landscape' | 'portrait' >('landscape'); - // const requestPermissions = async () => { - // try { - // PermissionsAndroid.request; - // const granted = await PermissionsAndroid.requestMultiple([ - // PermissionsAndroid.PERMISSIONS.CAMERA, - // PermissionsAndroid.PERMISSIONS.RECORD_AUDIO, - // ]); - // if ( - // granted['android.permission.CAMERA'] === - // PermissionsAndroid.RESULTS.GRANTED - // ) { - // console.log('You can use the camera'); - // } else { - // console.log('Camera permission denied'); - // } - // if ( - // granted['android.permission.RECORD_AUDIO'] === - // PermissionsAndroid.RESULTS.GRANTED - // ) { - // console.log('You can use the microphone'); - // } else { - // console.log('Microphone permission denied'); - // } - // } catch (err) { - // console.warn(err); - // } - // }; - return ( { - console.log('Received onStatusChange', e.nativeEvent); + onConnectionSuccess={() => { + console.log('Received onConnectionSuccess'); + }} + onConnectionFailed={(e) => { + console.log('Received onConnectionFailed', e); + }} + onDisconnect={() => { + console.log('Received onDisconnect'); }} /> @@ -84,7 +61,6 @@ export default function App() { height: 50, }} onPress={() => { - //requestPermissions() if (streaming) { ref.current?.stopStreaming(); setStreaming(false); From 3cdede7f9a58eae2caa56c88a402627438c5b060 Mon Sep 17 00:00:00 2001 From: romain petit Date: Wed, 3 Nov 2021 16:10:17 +0100 Subject: [PATCH 3/7] chore(podspec) update LivestreamIos version --- api-video-react-native-livestream.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-video-react-native-livestream.podspec b/api-video-react-native-livestream.podspec index 940b002..53428a9 100644 --- a/api-video-react-native-livestream.podspec +++ b/api-video-react-native-livestream.podspec @@ -16,5 +16,5 @@ Pod::Spec.new do |s| s.source_files = "ios/**/*.{h,m,mm,swift}" s.dependency "React-Core" - s.dependency "LiveStreamIos", '~> 0.0.2' + s.dependency "LiveStreamIos", '0.0.3' end From d1b6faa03c69135f77dbae26933d1b33b061f295 Mon Sep 17 00:00:00 2001 From: romain petit Date: Wed, 3 Nov 2021 17:27:26 +0100 Subject: [PATCH 4/7] fix(podspec) update repo url --- api-video-react-native-livestream.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-video-react-native-livestream.podspec b/api-video-react-native-livestream.podspec index 53428a9..e5746d2 100644 --- a/api-video-react-native-livestream.podspec +++ b/api-video-react-native-livestream.podspec @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.authors = package["author"] s.platforms = { :ios => "10.0" } - s.source = { :git => "https://github.com/apivideo/RN-LiveStream.git", :tag => "#{s.version}" } + s.source = { :git => "https://github.com/apivideo/react-native-livestream.git", :tag => "#{s.version}" } s.source_files = "ios/**/*.{h,m,mm,swift}" From 8cf4772d2176581afc321035138056945037e746 Mon Sep 17 00:00:00 2001 From: romain petit Date: Mon, 15 Nov 2021 09:56:03 +0100 Subject: [PATCH 5/7] chore(readme) add new events documentation --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 1b55472..0a85391 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,15 @@ const App = () => { orientation: 'portrait', }} liveStreamKey="your-livestrem-key" + onConnectionSuccess={() => { + //do what you want + }} + onConnectionFailed={(e) => { + //do what you want + }} + onDisconnect={() => { + //do what you want + }} /> ) => void; + // will be called on connection's error + onConnectionFailed?: (event: NativeSyntheticEvent<{ code: string }>) => void; + // will be called when the live-stream is stopped + onDisconnect?: (event: NativeSyntheticEvent<{ }>) => void; + }; type ReactNativeLivestreamMethods = { From b0ddc6e7f1d396aeea0e57580f2a8480d68705d9 Mon Sep 17 00:00:00 2001 From: romain petit Date: Mon, 15 Nov 2021 09:57:02 +0100 Subject: [PATCH 6/7] chore(podspec) update ios lib to handle new events --- api-video-react-native-livestream.podspec | 2 +- example/ios/Podfile.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/api-video-react-native-livestream.podspec b/api-video-react-native-livestream.podspec index e5746d2..440a33d 100644 --- a/api-video-react-native-livestream.podspec +++ b/api-video-react-native-livestream.podspec @@ -16,5 +16,5 @@ Pod::Spec.new do |s| s.source_files = "ios/**/*.{h,m,mm,swift}" s.dependency "React-Core" - s.dependency "LiveStreamIos", '0.0.3' + s.dependency "LiveStreamIos", '0.0.4' end diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 92646c9..4773149 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,6 +1,6 @@ PODS: - api-video-react-native-livestream (0.1.0): - - LiveStreamIos (~> 0.0.2) + - LiveStreamIos (= 0.0.4) - React-Core - boost-for-react-native (1.63.0) - CocoaAsyncSocket (7.6.5) @@ -80,11 +80,11 @@ PODS: - DoubleConversion - glog - glog (0.3.5) - - HaishinKit (1.1.5): - - Logboard (~> 2.2.1) + - HaishinKit (1.2.1): + - Logboard (~> 2.2.2) - libevent (2.1.12) - - LiveStreamIos (0.0.2): - - HaishinKit (~> 1.1.0) + - LiveStreamIos (0.0.4): + - HaishinKit (= 1.2.1) - Logboard (2.2.2) - OpenSSL-Universal (1.1.180) - RCTRequired (0.63.4) @@ -442,7 +442,7 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - api-video-react-native-livestream: c39168b03e97951aced83bcf3818688b2e32f0ca + api-video-react-native-livestream: 8afd2fef9d12a42fb1b4899e46bb10bcc9a5e2f7 boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: cde416483dac037923206447da6e1454df403714 @@ -457,9 +457,9 @@ SPEC CHECKSUMS: FlipperKit: 651f50a42eb95c01b3e89a60996dd6aded529eeb Folly: b73c3869541e86821df3c387eb0af5f65addfab4 glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 - HaishinKit: 5cf385a823dee6b299404877edf418974422bf9f + HaishinKit: 2b924f6ce90483e373f7079de90b2496fea30241 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - LiveStreamIos: dffd0e5d6f9fb712f72ac87eb018e0396bc1284e + LiveStreamIos: 6bd9055c6eebfd91f5df0fbd2eb334a9cc5bdb68 Logboard: 0ab6bbd984ed032b3f0b615cef06779a73445c80 OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e From b3cbd9b31f96d705bb998ff20284e0ce509d6ee5 Mon Sep 17 00:00:00 2001 From: Olivier Lando Date: Thu, 18 Nov 2021 11:18:48 +0100 Subject: [PATCH 7/7] Fix github repo name in podspec --- api-video-react-native-livestream.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-video-react-native-livestream.podspec b/api-video-react-native-livestream.podspec index 440a33d..4cdc924 100644 --- a/api-video-react-native-livestream.podspec +++ b/api-video-react-native-livestream.podspec @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.authors = package["author"] s.platforms = { :ios => "10.0" } - s.source = { :git => "https://github.com/apivideo/react-native-livestream.git", :tag => "#{s.version}" } + s.source = { :git => "https://github.com/apivideo/api.video-reactnative-live-stream.git", :tag => "#{s.version}" } s.source_files = "ios/**/*.{h,m,mm,swift}"