@100mslive/react-native-hms 1.2.0 → 1.4.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.
Files changed (279) hide show
  1. package/README.md +61 -7
  2. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +121 -53
  3. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +21 -0
  4. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +177 -31
  5. package/ios/HMSDecoder.swift +113 -50
  6. package/ios/HMSManager.m +5 -0
  7. package/ios/HMSManager.swift +22 -1
  8. package/ios/HMSRNSDK.swift +157 -26
  9. package/ios/HMSView.swift +1 -1
  10. package/lib/commonjs/classes/HMSAudioCodec.js +4 -4
  11. package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
  12. package/lib/commonjs/classes/HMSAudioDevice.js +4 -4
  13. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
  14. package/lib/commonjs/classes/HMSAudioFilePlayerNode.js.map +1 -1
  15. package/lib/commonjs/classes/HMSAudioMixerSource.js.map +1 -1
  16. package/lib/commonjs/classes/HMSAudioMixingMode.js +4 -4
  17. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
  18. package/lib/commonjs/classes/HMSAudioMode.js +4 -4
  19. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
  20. package/lib/commonjs/classes/HMSAudioNode.js +2 -1
  21. package/lib/commonjs/classes/HMSAudioNode.js.map +1 -1
  22. package/lib/commonjs/classes/HMSAudioSettings.js.map +1 -1
  23. package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
  24. package/lib/commonjs/classes/HMSAudioTrackSettings.js +1 -1
  25. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  26. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  27. package/lib/commonjs/classes/HMSCameraFacing.js +4 -4
  28. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
  29. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
  30. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  31. package/lib/commonjs/classes/HMSConstants.js +11 -0
  32. package/lib/commonjs/classes/HMSConstants.js.map +1 -0
  33. package/lib/commonjs/classes/HMSEncoder.js +21 -43
  34. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  35. package/lib/commonjs/classes/HMSException.js +3 -4
  36. package/lib/commonjs/classes/HMSException.js.map +1 -1
  37. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  38. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  39. package/lib/commonjs/classes/HMSHLSRecordingConfig.js.map +1 -1
  40. package/lib/commonjs/classes/HMSHLSRecordingState.js.map +1 -1
  41. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -1
  42. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
  43. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  44. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -1
  45. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  46. package/lib/commonjs/classes/HMSLocalPeer.js +0 -1
  47. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  48. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -1
  49. package/lib/commonjs/classes/HMSLocalVideoTrack.js +5 -6
  50. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  51. package/lib/commonjs/classes/HMSLogAlarmManager.js +4 -4
  52. package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
  53. package/lib/commonjs/classes/HMSLogLevel.js +4 -4
  54. package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
  55. package/lib/commonjs/classes/HMSLogSettings.js.map +1 -1
  56. package/lib/commonjs/classes/HMSLogger.js +17 -25
  57. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  58. package/lib/commonjs/classes/HMSMessage.js +1 -2
  59. package/lib/commonjs/classes/HMSMessage.js.map +1 -1
  60. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -1
  61. package/lib/commonjs/classes/HMSMessageRecipientType.js +4 -4
  62. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
  63. package/lib/commonjs/classes/HMSMessageType.js +4 -4
  64. package/lib/commonjs/classes/HMSMessageType.js.map +1 -1
  65. package/lib/commonjs/classes/HMSMicNode.js.map +1 -1
  66. package/lib/commonjs/classes/HMSNativeEventEmitter.js +0 -5
  67. package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -1
  68. package/lib/commonjs/classes/HMSNetworkQuality.js.map +1 -1
  69. package/lib/commonjs/classes/HMSPIPListenerActions.js +4 -4
  70. package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
  71. package/lib/commonjs/classes/HMSPeer.js +68 -22
  72. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  73. package/lib/commonjs/classes/HMSPeerUpdate.js +7 -5
  74. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  75. package/lib/commonjs/classes/HMSPeersCache.js +229 -0
  76. package/lib/commonjs/classes/HMSPeersCache.js.map +1 -0
  77. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  78. package/lib/commonjs/classes/HMSPublishSettings.js.map +1 -1
  79. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -1
  80. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -1
  81. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
  82. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -1
  83. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  84. package/lib/commonjs/classes/HMSRemotePeer.js +0 -1
  85. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  86. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -1
  87. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +0 -1
  88. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  89. package/lib/commonjs/classes/HMSRole.js.map +1 -1
  90. package/lib/commonjs/classes/HMSRoleChangeRequest.js.map +1 -1
  91. package/lib/commonjs/classes/HMSRoom.js +79 -22
  92. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  93. package/lib/commonjs/classes/HMSRoomCache.js +128 -0
  94. package/lib/commonjs/classes/HMSRoomCache.js.map +1 -0
  95. package/lib/commonjs/classes/HMSRoomUpdate.js +4 -4
  96. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  97. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  98. package/lib/commonjs/classes/HMSRtmpVideoResolution.js.map +1 -1
  99. package/lib/commonjs/classes/HMSSDK.js +501 -33
  100. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  101. package/lib/commonjs/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -1
  102. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  103. package/lib/commonjs/classes/HMSSimulcastLayerSettings.js.map +1 -1
  104. package/lib/commonjs/classes/HMSSimulcastSettings.js.map +1 -1
  105. package/lib/commonjs/classes/HMSSpeaker.js.map +1 -1
  106. package/lib/commonjs/classes/HMSSubscribeSettings.js.map +1 -1
  107. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  108. package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
  109. package/lib/commonjs/classes/HMSTrackSettingsInitState.js +4 -4
  110. package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
  111. package/lib/commonjs/classes/HMSTrackSource.js +4 -4
  112. package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
  113. package/lib/commonjs/classes/HMSTrackType.js +4 -4
  114. package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
  115. package/lib/commonjs/classes/HMSTrackUpdate.js +4 -4
  116. package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
  117. package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -5
  118. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  119. package/lib/commonjs/classes/HMSVideoCodec.js +4 -4
  120. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  121. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -1
  122. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  123. package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
  124. package/lib/commonjs/classes/HMSVideoTrackSettings.js +1 -1
  125. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  126. package/lib/commonjs/classes/HMSVideoViewMode.js +4 -4
  127. package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
  128. package/lib/commonjs/classes/HmsView.js +2 -1
  129. package/lib/commonjs/classes/HmsView.js.map +1 -1
  130. package/lib/commonjs/index.js.map +1 -1
  131. package/lib/module/classes/HMSAudioCodec.js +3 -3
  132. package/lib/module/classes/HMSAudioCodec.js.map +1 -1
  133. package/lib/module/classes/HMSAudioDevice.js +3 -3
  134. package/lib/module/classes/HMSAudioDevice.js.map +1 -1
  135. package/lib/module/classes/HMSAudioFilePlayerNode.js.map +1 -1
  136. package/lib/module/classes/HMSAudioMixerSource.js.map +1 -1
  137. package/lib/module/classes/HMSAudioMixingMode.js +3 -3
  138. package/lib/module/classes/HMSAudioMixingMode.js.map +1 -1
  139. package/lib/module/classes/HMSAudioMode.js +3 -3
  140. package/lib/module/classes/HMSAudioMode.js.map +1 -1
  141. package/lib/module/classes/HMSAudioNode.js +2 -1
  142. package/lib/module/classes/HMSAudioNode.js.map +1 -1
  143. package/lib/module/classes/HMSAudioSettings.js.map +1 -1
  144. package/lib/module/classes/HMSAudioTrack.js.map +1 -1
  145. package/lib/module/classes/HMSAudioTrackSettings.js +1 -1
  146. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  147. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  148. package/lib/module/classes/HMSCameraFacing.js +3 -3
  149. package/lib/module/classes/HMSCameraFacing.js.map +1 -1
  150. package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
  151. package/lib/module/classes/HMSConfig.js.map +1 -1
  152. package/lib/module/classes/HMSConstants.js +4 -0
  153. package/lib/module/classes/HMSConstants.js.map +1 -0
  154. package/lib/module/classes/HMSEncoder.js +21 -43
  155. package/lib/module/classes/HMSEncoder.js.map +1 -1
  156. package/lib/module/classes/HMSException.js +3 -4
  157. package/lib/module/classes/HMSException.js.map +1 -1
  158. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  159. package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  160. package/lib/module/classes/HMSHLSRecordingConfig.js.map +1 -1
  161. package/lib/module/classes/HMSHLSRecordingState.js.map +1 -1
  162. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -1
  163. package/lib/module/classes/HMSHLSVariant.js.map +1 -1
  164. package/lib/module/classes/HMSHelper.js.map +1 -1
  165. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -1
  166. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  167. package/lib/module/classes/HMSLocalPeer.js +0 -1
  168. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  169. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -1
  170. package/lib/module/classes/HMSLocalVideoTrack.js +5 -6
  171. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  172. package/lib/module/classes/HMSLogAlarmManager.js +3 -3
  173. package/lib/module/classes/HMSLogAlarmManager.js.map +1 -1
  174. package/lib/module/classes/HMSLogLevel.js +3 -3
  175. package/lib/module/classes/HMSLogLevel.js.map +1 -1
  176. package/lib/module/classes/HMSLogSettings.js.map +1 -1
  177. package/lib/module/classes/HMSLogger.js +17 -25
  178. package/lib/module/classes/HMSLogger.js.map +1 -1
  179. package/lib/module/classes/HMSMessage.js +1 -2
  180. package/lib/module/classes/HMSMessage.js.map +1 -1
  181. package/lib/module/classes/HMSMessageRecipient.js.map +1 -1
  182. package/lib/module/classes/HMSMessageRecipientType.js +3 -3
  183. package/lib/module/classes/HMSMessageRecipientType.js.map +1 -1
  184. package/lib/module/classes/HMSMessageType.js +3 -3
  185. package/lib/module/classes/HMSMessageType.js.map +1 -1
  186. package/lib/module/classes/HMSMicNode.js.map +1 -1
  187. package/lib/module/classes/HMSNativeEventEmitter.js +1 -6
  188. package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -1
  189. package/lib/module/classes/HMSNetworkQuality.js.map +1 -1
  190. package/lib/module/classes/HMSPIPListenerActions.js +3 -3
  191. package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
  192. package/lib/module/classes/HMSPeer.js +68 -22
  193. package/lib/module/classes/HMSPeer.js.map +1 -1
  194. package/lib/module/classes/HMSPeerUpdate.js +4 -3
  195. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  196. package/lib/module/classes/HMSPeersCache.js +216 -0
  197. package/lib/module/classes/HMSPeersCache.js.map +1 -0
  198. package/lib/module/classes/HMSPermissions.js.map +1 -1
  199. package/lib/module/classes/HMSPublishSettings.js.map +1 -1
  200. package/lib/module/classes/HMSRTCStats.js.map +1 -1
  201. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -1
  202. package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
  203. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -1
  204. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  205. package/lib/module/classes/HMSRemotePeer.js +0 -1
  206. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  207. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -1
  208. package/lib/module/classes/HMSRemoteVideoTrack.js +0 -1
  209. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  210. package/lib/module/classes/HMSRole.js.map +1 -1
  211. package/lib/module/classes/HMSRoleChangeRequest.js.map +1 -1
  212. package/lib/module/classes/HMSRoom.js +79 -22
  213. package/lib/module/classes/HMSRoom.js.map +1 -1
  214. package/lib/module/classes/HMSRoomCache.js +115 -0
  215. package/lib/module/classes/HMSRoomCache.js.map +1 -0
  216. package/lib/module/classes/HMSRoomUpdate.js +3 -3
  217. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  218. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  219. package/lib/module/classes/HMSRtmpVideoResolution.js.map +1 -1
  220. package/lib/module/classes/HMSSDK.js +501 -33
  221. package/lib/module/classes/HMSSDK.js.map +1 -1
  222. package/lib/module/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -1
  223. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  224. package/lib/module/classes/HMSSimulcastLayerSettings.js.map +1 -1
  225. package/lib/module/classes/HMSSimulcastSettings.js.map +1 -1
  226. package/lib/module/classes/HMSSpeaker.js.map +1 -1
  227. package/lib/module/classes/HMSSubscribeSettings.js.map +1 -1
  228. package/lib/module/classes/HMSTrack.js.map +1 -1
  229. package/lib/module/classes/HMSTrackSettings.js.map +1 -1
  230. package/lib/module/classes/HMSTrackSettingsInitState.js +3 -3
  231. package/lib/module/classes/HMSTrackSettingsInitState.js.map +1 -1
  232. package/lib/module/classes/HMSTrackSource.js +3 -3
  233. package/lib/module/classes/HMSTrackSource.js.map +1 -1
  234. package/lib/module/classes/HMSTrackType.js +3 -3
  235. package/lib/module/classes/HMSTrackType.js.map +1 -1
  236. package/lib/module/classes/HMSTrackUpdate.js +3 -3
  237. package/lib/module/classes/HMSTrackUpdate.js.map +1 -1
  238. package/lib/module/classes/HMSUpdateListenerActions.js +4 -4
  239. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  240. package/lib/module/classes/HMSVideoCodec.js +3 -3
  241. package/lib/module/classes/HMSVideoCodec.js.map +1 -1
  242. package/lib/module/classes/HMSVideoResolution.js.map +1 -1
  243. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  244. package/lib/module/classes/HMSVideoTrack.js.map +1 -1
  245. package/lib/module/classes/HMSVideoTrackSettings.js +1 -1
  246. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  247. package/lib/module/classes/HMSVideoViewMode.js +3 -3
  248. package/lib/module/classes/HMSVideoViewMode.js.map +1 -1
  249. package/lib/module/classes/HmsView.js +2 -1
  250. package/lib/module/classes/HmsView.js.map +1 -1
  251. package/lib/typescript/classes/HMSConstants.d.ts +3 -0
  252. package/lib/typescript/classes/HMSEncoder.d.ts +7 -6
  253. package/lib/typescript/classes/HMSLocalPeer.d.ts +0 -14
  254. package/lib/typescript/classes/HMSLogger.d.ts +1 -7
  255. package/lib/typescript/classes/HMSPeer.d.ts +12 -18
  256. package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
  257. package/lib/typescript/classes/HMSPeersCache.d.ts +17 -0
  258. package/lib/typescript/classes/HMSRemotePeer.d.ts +0 -14
  259. package/lib/typescript/classes/HMSRoom.d.ts +11 -22
  260. package/lib/typescript/classes/HMSRoomCache.d.ts +16 -0
  261. package/lib/typescript/classes/HMSSDK.d.ts +20 -12
  262. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +1 -1
  263. package/package.json +2 -2
  264. package/sdk-versions.json +3 -3
  265. package/src/classes/HMSAudioNode.ts +3 -1
  266. package/src/classes/HMSConstants.ts +3 -0
  267. package/src/classes/HMSEncoder.ts +24 -69
  268. package/src/classes/HMSLocalPeer.ts +0 -15
  269. package/src/classes/HMSLogger.ts +20 -19
  270. package/src/classes/HMSNativeEventEmitter.ts +35 -12
  271. package/src/classes/HMSPeer.ts +133 -34
  272. package/src/classes/HMSPeerUpdate.ts +9 -0
  273. package/src/classes/HMSPeersCache.ts +252 -0
  274. package/src/classes/HMSRemotePeer.ts +0 -16
  275. package/src/classes/HMSRoom.ts +141 -37
  276. package/src/classes/HMSRoomCache.ts +157 -0
  277. package/src/classes/HMSSDK.tsx +102 -43
  278. package/src/classes/HMSUpdateListenerActions.ts +1 -1
  279. package/src/classes/HmsView.tsx +2 -1
package/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  <a href="https://100ms.live/">
2
- <img src="https://github.com/100mslive/100ms-react-native/blob/main/100ms.gif" height=256/>
3
- <img src="https://github.com/100mslive/100ms-react-native/blob/main/100ms.svg" title="100ms logo" float=center height=256>
2
+ <img src="https://raw.githubusercontent.com/100mslive/react-native-hms/main/100ms.svg" title="100ms logo" float=center height=256>
4
3
  </a>
5
4
 
6
5
  [![npm](https://img.shields.io/npm/v/@100mslive/react-native-hms)](https://www.npmjs.com/package/@100mslive/react-native-hms)
@@ -17,6 +16,11 @@
17
16
 
18
17
  # 100ms React Native SDK
19
18
 
19
+ Integrate Real Time Audio and Video conferencing, Interactive Live Streaming, and Chat in your apps with 100ms React Native SDK.
20
+
21
+ With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture (PiP), one-to-one Video Call Modes, Audio Rooms, Video Player and much more, add immersive real-time communications to your apps.
22
+
23
+
20
24
  📖 Read the Complete Documentation here: https://www.100ms.live/docs/react-native/v2/foundation/basics
21
25
 
22
26
  ## 🏃 Example App
@@ -41,9 +45,9 @@ Troubleshooting Guide for resolving issues in running the Example app is [availa
41
45
 
42
46
  ## ☝️ Minimum Configuration
43
47
 
44
- - Support for React Native 0.63.4 or above
48
+ - Support for React Native 0.64.4 or above
45
49
  - Support for Java 8 or above
46
- - Support for Android API level 21 or above
50
+ - Support for Android API level 24 or above
47
51
  - Xcode 13 or above
48
52
  - Support for iOS 12 or above
49
53
 
@@ -120,17 +124,65 @@ More information about Audio Video Permission on iOS & Android is [available her
120
124
 
121
125
  The package exports all the classes and a HMSSDK class that manages everything.
122
126
 
123
- ## Setting up the HMS Instance
127
+ ## [Setting up the HMS Instance](https://www.100ms.live/docs/react-native/v2/how--to-guides/install-the-sdk/hmssdk)
124
128
 
125
129
  First invoke the `build` method which returns an instance of `HMSSDK`. Save this instance to perform all actions related to 100ms.
126
130
 
127
131
  ```ts
128
132
  import { HMSSDK } from '@100mslive/react-native-hms';
129
133
 
130
- // create HMSSDK instance using the build method & save it for further usage
134
+ /**
135
+ * create HMSSDK instance using the build method & save it for further usage
136
+ *
137
+ * Important Note: Don't build new `HMSSDK` instance before destroying the previous one.
138
+ * for more info checkout {@link https://www.100ms.live/docs/react-native/v2/how--to-guides/install-the-sdk/hmssdk#what-does-destroy-method-do}
139
+ */
131
140
  const hmsInstance = await HMSSDK.build();
132
141
  ```
133
142
 
143
+ ## [Get Authentication Token](https://www.100ms.live/docs/react-native/v2/get-started/quickstart#fetch-token-to-join-the-room)
144
+
145
+ ### Fetch token using room-code method (Recommended)
146
+
147
+ We can get the authentication token using room-code from meeting URL.
148
+
149
+ Let's understand the subdomain and code from the sample URL
150
+
151
+ In this sample url: `http://100ms-rocks.app.100ms.live/meeting/abc-defg-hij`
152
+ - Subdomain is `100ms-rocks`
153
+ - Room code is `abc-defg-hij`
154
+
155
+ Now to get the room-code from meeting URL, we can write our own logic or use the `getCode` method from [here](https://github.com/100mslive/react-native-hms/blob/main/example/src/utils/getRoomLinkDetails.ts)
156
+
157
+ To generate token we will be using `getAuthTokenByRoomCode` method available on `HMSSDK` instance. This method has `roomCode` as a required
158
+ parameter and `userId` & `endpoint` as optional parameter.
159
+
160
+ Let's checkout the implementation:
161
+
162
+ ```js
163
+ /**
164
+ * `getAuthTokenByRoomCode` returns a promise which is resolved with "auth token"
165
+ * checkout {@link https://www.100ms.live/docs/react-native/v2/how--to-guides/install-the-sdk/hmssdk#what-does-destroy-method-do}
166
+ */
167
+ const token = await hmsInstance.getAuthTokenByRoomCode('YOUR_ROOM_CODE');
168
+
169
+ /**
170
+ * Create `HMSConfig` with the above auth token and username
171
+ */
172
+ const hmsConfig = new HMSConfig({ authToken: token, username: 'John Appleseed' });
173
+ ```
174
+
175
+ ### Get temporary token from dashboard
176
+
177
+ To test audio/video functionality, you need to connect to a 100ms Room. Please check the following steps for the same -
178
+
179
+ 1. Navigate to your [100ms dashboard](https://dashboard.100ms.live/dashboard) or [create an account](https://dashboard.100ms.live/register) if you don't have one.
180
+ 2. Use the `Video Conferencing Starter Kit` to create a room with a default template assigned to it to test this app quickly.
181
+ 3. Go to the [Rooms page](https://dashboard.100ms.live/rooms) in your dashboard, click on the `Room Id` of the room you created above, and click on the `Join Room` button on the top right.
182
+ 4. You will see 100ms demo URLs for the roles created when you deployed the starter kit; you can click on the 'key' icon to copy the token and update the `AUTH_TOKEN` variable in "App.js" file.
183
+ > Token from 100ms dashboard is for testing purposes only, For production applications you must generate tokens on your own server. Refer to the [Management Token section](/concepts/v2/concepts/security-and-tokens#management-token) in Authentication and Tokens guide for more information.
184
+
185
+
134
186
  ## [Add Event Listeners](https://www.100ms.live/docs/react-native/v2/features/event-listeners)
135
187
 
136
188
  Add Event Listeners to get notified about actions happening in the 100ms Room.
@@ -175,6 +227,8 @@ NOTE: `ON_JOIN` Event Listener must be **attached** before calling `join` functi
175
227
  // create HMSSDK instance using the build function
176
228
  const hmsInstance = await HMSSDK.build();
177
229
 
230
+ // Generate 100ms Auth Token by Room Code
231
+ const token = await hmsInstance.getAuthTokenByRoomCode('abc-defg-hij'); // Sample Room Code
178
232
 
179
233
  // You'll need to add Event Listeners for HMSUpdateListenerActions, which are invoked to notify about updates happening in the room like a peer joins/leaves, a track got muted/unmuted, any errors that occur, etc.
180
234
  hmsInstance.addEventListener(HMSUpdateListenerActions.ON_JOIN, onJoinSuccess);
@@ -185,7 +239,7 @@ hmsInstance.addEventListener(HMSUpdateListenerActions.ON_ERROR, onError);
185
239
 
186
240
  // Next, create an object of HMSConfig class using the available joining configurations.
187
241
  let config = new HMSConfig({
188
- authToken: 'eyJH5c...', // client-side token generated from your token service
242
+ authToken: token, // client-side token generated by `getAuthTokenByRoomCode` method
189
243
  username: 'John Appleseed',
190
244
  });
191
245
 
@@ -9,6 +9,8 @@ import live.hms.video.media.settings.HMSVideoResolution
9
9
  import live.hms.video.media.settings.HMSVideoTrackSettings
10
10
  import live.hms.video.media.tracks.*
11
11
  import live.hms.video.sdk.models.*
12
+ import live.hms.video.sdk.models.enums.HMSPeerUpdate
13
+ import live.hms.video.sdk.models.enums.HMSRoomUpdate
12
14
  import live.hms.video.sdk.models.role.*
13
15
  import live.hms.video.sdk.models.trackchangerequest.HMSChangeTrackStateRequest
14
16
 
@@ -23,6 +25,54 @@ object HMSDecoder {
23
25
  this.restrictRoleData.clear()
24
26
  }
25
27
 
28
+ fun getHmsRoomSubset(hmsRoom: HMSRoom?, hmsRoomUpdateType: HMSRoomUpdate? = null): WritableMap {
29
+ val room: WritableMap = Arguments.createMap()
30
+ if (hmsRoom != null) {
31
+ room.putString("id", hmsRoom.roomId)
32
+
33
+ when (hmsRoomUpdateType) {
34
+ HMSRoomUpdate.ROOM_PEER_COUNT_UPDATED -> {
35
+ room.putInt("peerCount", hmsRoom.peerCount)
36
+ }
37
+ HMSRoomUpdate.HLS_RECORDING_STATE_UPDATED -> {
38
+ hmsRoom.hlsRecordingState?.let {
39
+ room.putMap("hlsRecordingState", this.getHMSHlsRecordingState(it))
40
+ }
41
+ }
42
+ HMSRoomUpdate.BROWSER_RECORDING_STATE_UPDATED -> {
43
+ hmsRoom.browserRecordingState?.let {
44
+ room.putMap(
45
+ "browserRecordingState",
46
+ this.getHMSBrowserRecordingState(it)
47
+ )
48
+ }
49
+ }
50
+ HMSRoomUpdate.HLS_STREAMING_STATE_UPDATED -> {
51
+ hmsRoom.hlsStreamingState?.let {
52
+ room.putMap("hlsStreamingState", this.getHMSHlsStreamingState(it))
53
+ }
54
+ }
55
+ HMSRoomUpdate.RTMP_STREAMING_STATE_UPDATED -> {
56
+ hmsRoom.rtmpHMSRtmpStreamingState?.let {
57
+ room.putMap(
58
+ "rtmpHMSRtmpStreamingState",
59
+ this.getHMSRtmpStreamingState(it)
60
+ )
61
+ }
62
+ }
63
+ HMSRoomUpdate.SERVER_RECORDING_STATE_UPDATED -> {
64
+ hmsRoom.serverRecordingState?.let {
65
+ room.putMap(
66
+ "serverRecordingState",
67
+ this.getHMSServerRecordingState(it)
68
+ )
69
+ }
70
+ }
71
+ }
72
+ }
73
+ return room
74
+ }
75
+
26
76
  fun getHmsRoom(hmsRoom: HMSRoom?): WritableMap {
27
77
  val room: WritableMap = Arguments.createMap()
28
78
  if (hmsRoom != null) {
@@ -64,12 +114,68 @@ object HMSDecoder {
64
114
  }
65
115
 
66
116
  room.putMap("localPeer", this.getHmsLocalPeer(hmsRoom.localPeer))
117
+
67
118
  room.putArray("peers", this.getAllPeers(hmsRoom.peerList))
119
+
68
120
  room.putInt("peerCount", hmsRoom.peerCount)
69
121
  }
70
122
  return room
71
123
  }
72
124
 
125
+ fun getHmsPeerSubsetForPeerUpdateEvent(hmsPeer: HMSPeer?, peerUpdateType: HMSPeerUpdate): WritableMap {
126
+ val peer: WritableMap = Arguments.createMap()
127
+ if (hmsPeer != null) {
128
+ peer.putString(peerUpdateType.ordinal.toString(), hmsPeer.peerID)
129
+
130
+ if (peerUpdateType !== null) {
131
+ when (peerUpdateType) {
132
+ HMSPeerUpdate.NAME_CHANGED -> {
133
+ peer.putString("name", hmsPeer.name)
134
+ }
135
+ HMSPeerUpdate.METADATA_CHANGED -> {
136
+ peer.putString("metadata", hmsPeer.metadata)
137
+ }
138
+ HMSPeerUpdate.ROLE_CHANGED -> {
139
+ peer.putMap("role", this.getHmsRole(hmsPeer.hmsRole))
140
+ }
141
+ HMSPeerUpdate.NETWORK_QUALITY_UPDATED -> {
142
+ hmsPeer.networkQuality?.let {
143
+ peer.putMap("networkQuality", this.getHmsNetworkQuality(it))
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ return peer
150
+ }
151
+
152
+ fun getHmsPeerSubset(hmsPeer: HMSPeer?, peerUpdateType: HMSPeerUpdate? = null): WritableMap {
153
+ val peer: WritableMap = Arguments.createMap()
154
+ if (hmsPeer != null) {
155
+ peer.putString("peerID", hmsPeer.peerID)
156
+
157
+ if (peerUpdateType !== null) {
158
+ when (peerUpdateType) {
159
+ HMSPeerUpdate.NAME_CHANGED -> {
160
+ peer.putString("name", hmsPeer.name)
161
+ }
162
+ HMSPeerUpdate.METADATA_CHANGED -> {
163
+ peer.putString("metadata", hmsPeer.metadata)
164
+ }
165
+ HMSPeerUpdate.ROLE_CHANGED -> {
166
+ peer.putMap("role", this.getHmsRole(hmsPeer.hmsRole))
167
+ }
168
+ HMSPeerUpdate.NETWORK_QUALITY_UPDATED -> {
169
+ hmsPeer.networkQuality?.let {
170
+ peer.putMap("networkQuality", this.getHmsNetworkQuality(it))
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ return peer
177
+ }
178
+
73
179
  fun getHmsPeer(hmsPeer: HMSPeer?): WritableMap {
74
180
  val peer: WritableMap = Arguments.createMap()
75
181
  if (hmsPeer != null) {
@@ -106,7 +212,7 @@ object HMSDecoder {
106
212
  return peer
107
213
  }
108
214
 
109
- private fun getHmsAudioTrack(hmsAudioTrack: HMSAudioTrack?): WritableMap {
215
+ fun getHmsAudioTrack(hmsAudioTrack: HMSAudioTrack?): WritableMap {
110
216
  val hmsTrack: WritableMap = Arguments.createMap()
111
217
  if (hmsAudioTrack != null) {
112
218
  hmsTrack.putString("type", hmsAudioTrack.type.name)
@@ -118,7 +224,7 @@ object HMSDecoder {
118
224
  return hmsTrack
119
225
  }
120
226
 
121
- private fun getHmsVideoTrack(hmsVideoTrack: HMSVideoTrack?): WritableMap {
227
+ fun getHmsVideoTrack(hmsVideoTrack: HMSVideoTrack?): WritableMap {
122
228
  val hmsTrack: WritableMap = Arguments.createMap()
123
229
  if (hmsVideoTrack != null) {
124
230
  hmsTrack.putString("type", hmsVideoTrack.type.name)
@@ -154,7 +260,7 @@ object HMSDecoder {
154
260
  return decodedRoles
155
261
  }
156
262
 
157
- private fun getHmsRole(hmsRole: HMSRole?): WritableMap {
263
+ fun getHmsRole(hmsRole: HMSRole?): WritableMap {
158
264
  val role: WritableMap = Arguments.createMap()
159
265
  if (hmsRole != null) {
160
266
  role.putString("name", hmsRole.name)
@@ -243,34 +349,14 @@ object HMSDecoder {
243
349
  val peer: WritableMap = Arguments.createMap()
244
350
  if (hmsLocalPeer != null) {
245
351
  peer.putString("peerID", hmsLocalPeer.peerID)
246
- peer.putString("name", hmsLocalPeer.name)
247
- peer.putBoolean("isLocal", hmsLocalPeer.isLocal)
248
-
249
- peer.putMap("role", this.getHmsRole(hmsLocalPeer.hmsRole))
250
-
251
- peer.putString("metadata", hmsLocalPeer.metadata)
252
-
253
- hmsLocalPeer.customerUserID?.let {
254
- peer.putString("customerUserID", it)
255
- }
256
-
257
- hmsLocalPeer.networkQuality?.let {
258
- peer.putMap("networkQuality", this.getHmsNetworkQuality(it))
259
- }
260
352
 
261
353
  hmsLocalPeer.audioTrack?.let {
262
- peer.putMap("audioTrack", this.getHmsAudioTrack(it))
263
354
  peer.putMap("localAudioTrackData", this.getHmsLocalAudioTrack(it))
264
355
  }
265
356
 
266
357
  hmsLocalPeer.videoTrack?.let {
267
- peer.putMap("videoTrack", this.getHmsVideoTrack(it))
268
358
  peer.putMap("localVideoTrackData", this.getHmsLocalVideoTrack(it))
269
359
  }
270
-
271
- hmsLocalPeer.auxiliaryTracks.let {
272
- peer.putArray("auxiliaryTracks", this.getAllTracks(it))
273
- }
274
360
  }
275
361
  return peer
276
362
  }
@@ -347,32 +433,14 @@ object HMSDecoder {
347
433
  val peer: WritableMap = Arguments.createMap()
348
434
  if (hmsRemotePeer != null) {
349
435
  peer.putString("peerID", hmsRemotePeer.peerID)
350
- peer.putString("name", hmsRemotePeer.name)
351
- peer.putBoolean("isLocal", hmsRemotePeer.isLocal)
352
- peer.putString("metadata", hmsRemotePeer.metadata)
353
- peer.putMap("role", this.getHmsRole(hmsRemotePeer.hmsRole))
354
-
355
- hmsRemotePeer.customerUserID?.let {
356
- peer.putString("customerUserID", it)
357
- }
358
-
359
- hmsRemotePeer.networkQuality?.let {
360
- peer.putMap("networkQuality", this.getHmsNetworkQuality(it))
361
- }
362
436
 
363
437
  hmsRemotePeer.audioTrack?.let {
364
- peer.putMap("audioTrack", this.getHmsAudioTrack(it))
365
438
  peer.putMap("remoteAudioTrackData", this.getHmsRemoteAudioTrack(it))
366
439
  }
367
440
 
368
441
  hmsRemotePeer.videoTrack?.let {
369
- peer.putMap("videoTrack", this.getHmsVideoTrack(hmsRemotePeer.videoTrack))
370
442
  peer.putMap("remoteVideoTrackData", this.getHmsRemoteVideoTrack(hmsRemotePeer.videoTrack))
371
443
  }
372
-
373
- hmsRemotePeer.auxiliaryTracks.let {
374
- peer.putArray("auxiliaryTracks", this.getAllTracks(it))
375
- }
376
444
  }
377
445
  return peer
378
446
  }
@@ -423,7 +491,7 @@ object HMSDecoder {
423
491
  val roleChangeRequest: WritableMap = Arguments.createMap()
424
492
  if (id != null) {
425
493
  request.requestedBy?.let {
426
- roleChangeRequest.putMap("requestedBy", this.getHmsPeer(it))
494
+ roleChangeRequest.putMap("requestedBy", this.getHmsPeerSubset(it))
427
495
  }
428
496
  roleChangeRequest.putMap("suggestedRole", this.getHmsRole(request.suggestedRole))
429
497
  roleChangeRequest.putString("id", id)
@@ -436,7 +504,7 @@ object HMSDecoder {
436
504
  val changeTrackStateRequest: WritableMap = Arguments.createMap()
437
505
 
438
506
  request.requestedBy?.let {
439
- changeTrackStateRequest.putMap("requestedBy", this.getHmsPeer(it))
507
+ changeTrackStateRequest.putMap("requestedBy", this.getHmsPeerSubset(it))
440
508
  }
441
509
  changeTrackStateRequest.putString("trackType", request.track.type.name)
442
510
  changeTrackStateRequest.putBoolean("mute", request.mute)
@@ -459,7 +527,7 @@ object HMSDecoder {
459
527
  return null
460
528
  }
461
529
 
462
- private fun getHMSBrowserRecordingState(data: HMSBrowserRecordingState?): ReadableMap {
530
+ fun getHMSBrowserRecordingState(data: HMSBrowserRecordingState?): ReadableMap {
463
531
  val input = Arguments.createMap()
464
532
  if (data !== null) {
465
533
  input.putBoolean("running", data.running)
@@ -479,7 +547,7 @@ object HMSDecoder {
479
547
  return input
480
548
  }
481
549
 
482
- private fun getHMSRtmpStreamingState(data: HMSRtmpStreamingState?): ReadableMap {
550
+ fun getHMSRtmpStreamingState(data: HMSRtmpStreamingState?): ReadableMap {
483
551
  val input = Arguments.createMap()
484
552
  if (data !== null) {
485
553
  input.putBoolean("running", data.running)
@@ -499,7 +567,7 @@ object HMSDecoder {
499
567
  return input
500
568
  }
501
569
 
502
- private fun getHMSServerRecordingState(data: HMSServerRecordingState?): ReadableMap {
570
+ fun getHMSServerRecordingState(data: HMSServerRecordingState?): ReadableMap {
503
571
  val input = Arguments.createMap()
504
572
  if (data !== null) {
505
573
  input.putBoolean("running", data.running)
@@ -515,7 +583,7 @@ object HMSDecoder {
515
583
  return input
516
584
  }
517
585
 
518
- private fun getHMSHlsStreamingState(data: HMSHLSStreamingState?): ReadableMap {
586
+ fun getHMSHlsStreamingState(data: HMSHLSStreamingState?): ReadableMap {
519
587
  val input = Arguments.createMap()
520
588
  if (data !== null) {
521
589
  input.putBoolean("running", data.running)
@@ -526,7 +594,7 @@ object HMSDecoder {
526
594
  return input
527
595
  }
528
596
 
529
- private fun getHMSHlsRecordingState(data: HmsHlsRecordingState?): ReadableMap {
597
+ fun getHMSHlsRecordingState(data: HmsHlsRecordingState?): ReadableMap {
530
598
  val input = Arguments.createMap()
531
599
  if (data !== null) {
532
600
  data.running?.let { input.putBoolean("running", it) }
@@ -591,18 +659,18 @@ object HMSDecoder {
591
659
  return subscribeDegradationParams
592
660
  }
593
661
 
594
- private fun getAllPeers(peers: List<HMSPeer>?): WritableArray {
662
+ fun getAllPeers(peers: List<HMSPeer>?): WritableArray {
595
663
  val decodedPeers: WritableArray = Arguments.createArray()
596
664
  if (peers != null) {
597
665
  for (peer in peers) {
598
- val decodedPeer = this.getHmsPeer(peer)
666
+ val decodedPeer = this.getHmsPeerSubset(peer)
599
667
  decodedPeers.pushMap(decodedPeer)
600
668
  }
601
669
  }
602
670
  return decodedPeers
603
671
  }
604
672
 
605
- private fun getAllTracks(tracks: MutableList<HMSTrack>?): WritableArray {
673
+ fun getAllTracks(tracks: MutableList<HMSTrack>?): WritableArray {
606
674
  val decodedTracks: WritableArray = Arguments.createArray()
607
675
  if (tracks != null) {
608
676
  for (track in tracks) {
@@ -617,7 +685,7 @@ object HMSDecoder {
617
685
  val hmsRecipient: WritableMap = Arguments.createMap()
618
686
  if (recipient != null) {
619
687
  recipient.recipientPeer?.let {
620
- hmsRecipient.putMap("recipientPeer", this.getHmsPeer(it))
688
+ hmsRecipient.putMap("recipientPeer", this.getHmsPeerSubset(it))
621
689
  }
622
690
 
623
691
  hmsRecipient.putArray("recipientRoles", this.getAllRoles(recipient.recipientRoles))
@@ -626,7 +694,7 @@ object HMSDecoder {
626
694
  return hmsRecipient
627
695
  }
628
696
 
629
- private fun getHmsNetworkQuality(networkQuality: HMSNetworkQuality?): WritableMap {
697
+ fun getHmsNetworkQuality(networkQuality: HMSNetworkQuality?): WritableMap {
630
698
  val hmsNetworkQuality: WritableMap = Arguments.createMap()
631
699
  if (networkQuality != null) {
632
700
  hmsNetworkQuality.putInt("downlinkQuality", networkQuality.downlinkQuality)
@@ -447,6 +447,20 @@ class HMSManager(reactContext: ReactApplicationContext) :
447
447
  hms?.getSessionMetaData(callback)
448
448
  }
449
449
 
450
+ @ReactMethod(isBlockingSynchronousMethod = true)
451
+ fun getPeerProperty(data: ReadableMap): WritableMap? {
452
+ val hms = HMSHelper.getHms(data, hmsCollection) ?: return null
453
+
454
+ return hms.getPeerProperty(data)
455
+ }
456
+
457
+ @ReactMethod(isBlockingSynchronousMethod = true)
458
+ fun getRoomProperty(data: ReadableMap): WritableMap? {
459
+ val hms = HMSHelper.getHms(data, hmsCollection) ?: return null
460
+
461
+ return hms.getRoomProperty(data)
462
+ }
463
+
450
464
  @ReactMethod
451
465
  fun enableEvent(data: ReadableMap, promise: Promise?) {
452
466
  val hms = HMSHelper.getHms(data, hmsCollection)
@@ -468,6 +482,13 @@ class HMSManager(reactContext: ReactApplicationContext) :
468
482
  hms?.restrictData(data, promise)
469
483
  }
470
484
 
485
+ @ReactMethod()
486
+ fun getAuthTokenByRoomCode(data: ReadableMap, promise: Promise) {
487
+ val hms = HMSHelper.getHms(data, hmsCollection)
488
+
489
+ hms?.getAuthTokenByRoomCode(data, promise)
490
+ }
491
+
471
492
  // region Person-In-Person Mode Action handing
472
493
  private val pipReceiver by lazy {
473
494
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {