Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
852ad7aa08 | ||
|
|
913c68182a | ||
|
|
651d8cfa88 | ||
|
|
f39160a5f0 | ||
|
|
a02fe3f8d1 | ||
|
|
61f35bd9e0 | ||
|
|
628d1a0449 | ||
|
|
19e7d97374 | ||
|
|
e6826bebeb | ||
|
|
7c6676d2c8 | ||
|
|
52fb51687a | ||
|
|
e200c0e7e0 |
@@ -3,7 +3,7 @@ Embed BigBlueButton in any react native project with BigBlueButton Tablet SDK. U
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
npm install bigbluebutton-tablet-sdk
|
||||
yarn add bigbluebutton-tablet-sdk
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<dict>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.org.bigbluebutton.tablet</string>
|
||||
<string>group.org.bigbluebutton.tablet.example</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<dict>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.org.bigbluebutton.tablet</string>
|
||||
<string>group.org.bigbluebutton.tablet.example</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -25,18 +25,13 @@
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSExceptionDomains</key>
|
||||
<dict>
|
||||
<key>localhost</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict/>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>We will capture your camera if you join with video.</string>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string></string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>We will capture your microphone if you join with full audio.</string>
|
||||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>audio</string>
|
||||
|
||||
@@ -11,6 +11,6 @@ class Constants {
|
||||
public static var broadcastExtensionBundleId="org.bigbluebutton.tablet.sdk.example.03DE7B1E.BigBlueButtonTabletSdkBroadcastExample";
|
||||
|
||||
// This is used to allow both applications (main and broadcast) to share information
|
||||
public static var appGroupName="group.corg.bigbluebutton.tablet";
|
||||
public static var appGroupName="group.org.bigbluebutton.tablet.example";
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
PODS:
|
||||
- bigbluebutton-tablet-sdk (0.1.0):
|
||||
- bigbluebutton-tablet-sdk (0.1.30):
|
||||
- bigbluebutton-tablet-sdk-common
|
||||
- React-Core
|
||||
- bigbluebutton-tablet-sdk-broadcast-upload-extension (0.1.0):
|
||||
- bigbluebutton-tablet-sdk-broadcast-upload-extension (0.1.30):
|
||||
- bigbluebutton-tablet-sdk-common
|
||||
- WebRTC-lib
|
||||
- bigbluebutton-tablet-sdk-common (0.1.0):
|
||||
- bigbluebutton-tablet-sdk-common (0.1.30):
|
||||
- WebRTC-lib
|
||||
- boost (1.76.0)
|
||||
- DoubleConversion (1.1.6)
|
||||
@@ -439,9 +439,9 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon/yoga"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
bigbluebutton-tablet-sdk: 75396b742cee8de39425235492859a8c966c5019
|
||||
bigbluebutton-tablet-sdk-broadcast-upload-extension: 5e10242be5e7fd521fc1ea4b51f1d38c6d4b3487
|
||||
bigbluebutton-tablet-sdk-common: edb98af2ffc59a1e2360b74569f69f8880960c3e
|
||||
bigbluebutton-tablet-sdk: 33dabe9a50e2fb7b86bafb84df9ca4dffa285a6f
|
||||
bigbluebutton-tablet-sdk-broadcast-upload-extension: 45c6c203b87ee9374149053b4c4e283633218516
|
||||
bigbluebutton-tablet-sdk-common: 143b4f84f290b50b95076f7f26cfe56e6cc4fafe
|
||||
boost: a7c83b31436843459a1961bfd74b96033dc77234
|
||||
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
|
||||
FBLazyVector: a7a655862f6b09625d11c772296b01cd5164b648
|
||||
|
||||
@@ -9,7 +9,10 @@
|
||||
#import "React/RCTBridgeModule.h"
|
||||
@interface RCT_EXTERN_REMAP_MODULE(BBBN_FullAudioService, FullAudioServiceManager, NSObject)
|
||||
|
||||
RCT_EXTERN_METHOD(createFullAudioOffer)
|
||||
RCT_EXTERN_METHOD(createFullAudioOffer: (NSString *)stunTurnJson)
|
||||
RCT_EXTERN_METHOD(setFullAudioRemoteSDP: (NSString *)remoteSDP)
|
||||
RCT_EXTERN_METHOD(addFullAudioRemoteIceCandidate: (NSString *)remoteCandidate)
|
||||
|
||||
+ (BOOL)requiresMainQueueSetup { return NO; }
|
||||
|
||||
@end
|
||||
|
||||
@@ -18,8 +18,8 @@ class FullAudioServiceManager: NSObject {
|
||||
var fullAudioService: FullAudioService = FullAudioService( )
|
||||
|
||||
// React native exposed method (called when user click the button to share screen)
|
||||
@objc func createFullAudioOffer() -> Void {
|
||||
logger.info("createFullAudioOffer")
|
||||
@objc func createFullAudioOffer(_ stunTurnJson:String) -> Void {
|
||||
logger.info("createFullAudioOffer \(stunTurnJson)")
|
||||
Task.init {
|
||||
let optionalSdp = await self.fullAudioService.createOffer()
|
||||
if(optionalSdp != nil){
|
||||
|
||||
@@ -11,7 +11,10 @@
|
||||
|
||||
RCT_EXTERN_METHOD(stopScreenShareBroadcastExtension)
|
||||
RCT_EXTERN_METHOD(initializeScreenShare)
|
||||
RCT_EXTERN_METHOD(createScreenShareOffer)
|
||||
RCT_EXTERN_METHOD(createScreenShareOffer: (NSString *)stunTurnJson)
|
||||
RCT_EXTERN_METHOD(setScreenShareRemoteSDP: (NSString *)remoteSDP)
|
||||
RCT_EXTERN_METHOD(addScreenShareRemoteIceCandidate: (NSString *)remoteCandidate)
|
||||
|
||||
+ (BOOL)requiresMainQueueSetup { return NO; }
|
||||
|
||||
@end
|
||||
|
||||
@@ -53,8 +53,8 @@ class ScreenShareServiceManager: NSObject {
|
||||
}
|
||||
|
||||
// React native exposed method (called when user click the button to share screen)
|
||||
@objc func createScreenShareOffer() -> Void {
|
||||
logger.info("createScreenShareOffer")
|
||||
@objc func createScreenShareOffer(_ stunTurnJson:String) -> Void {
|
||||
logger.info("createScreenShareOffer \(stunTurnJson)")
|
||||
|
||||
// Send request of SDP to the broadcast upload extension
|
||||
// TIP - the handling of SDP response is done in observer2 of BigBlueButtonSDK class
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bigbluebutton-tablet-sdk",
|
||||
"version": "0.1.30",
|
||||
"version": "0.1.35",
|
||||
"description": "test",
|
||||
"main": "lib/commonjs/index",
|
||||
"module": "lib/module/index",
|
||||
@@ -12,6 +12,8 @@
|
||||
"lib",
|
||||
"android",
|
||||
"ios",
|
||||
"ios-common",
|
||||
"ios-broadcast-upload-extension",
|
||||
"cpp",
|
||||
"bigbluebutton-tablet-sdk.podspec",
|
||||
"!lib/typescript/example",
|
||||
|
||||
@@ -66,7 +66,7 @@ export const BigBlueButtonTablet = ({
|
||||
onMessage={(msg) =>
|
||||
handleWebviewMessage(thisInstanceId, webViewRef, msg)
|
||||
}
|
||||
applicationNameForUserAgent="BBBMobile"
|
||||
applicationNameForUserAgent="BigBlueButton-Tablet"
|
||||
allowsInlineMediaPlayback={true}
|
||||
mediaCapturePermissionGrantType={'grant'}
|
||||
onLoadEnd={(content: any) => {
|
||||
|
||||
@@ -14,15 +14,17 @@ nativeEmitter.addListener('onFullAudioOfferCreated', (sdp) => {
|
||||
});
|
||||
|
||||
// Entry point of this method
|
||||
function createFullAudioOffer(instanceId: Number) {
|
||||
function createFullAudioOffer(instanceId: Number, stunTurnJson: String) {
|
||||
return new Promise((res, rej) => {
|
||||
// store the resolver for later call (when event is received)
|
||||
resolve = res;
|
||||
|
||||
try {
|
||||
console.log(`[${instanceId}] - >nativeCreateFullAudioOffer`);
|
||||
console.log(
|
||||
`[${instanceId}] - >nativeCreateFullAudioOffer (${stunTurnJson})`
|
||||
);
|
||||
// call native swift method that triggers the broadcast popup
|
||||
nativeCreateFullAudioOffer();
|
||||
nativeCreateFullAudioOffer(stunTurnJson);
|
||||
} catch (e) {
|
||||
rej(`Call to nativeCreateFullAudioOffer failed`);
|
||||
}
|
||||
|
||||
@@ -14,15 +14,17 @@ nativeEmitter.addListener('onScreenShareOfferCreated', (sdp) => {
|
||||
});
|
||||
|
||||
// Entry point of this method
|
||||
function createScreenShareOffer(instanceId: Number) {
|
||||
function createScreenShareOffer(instanceId: Number, stunTurnJson: String) {
|
||||
return new Promise((res, rej) => {
|
||||
// store the resolver for later call (when event is received)
|
||||
resolve = res;
|
||||
|
||||
try {
|
||||
console.log(`[${instanceId}] - >nativeCreateScreenShareOffer`);
|
||||
console.log(
|
||||
`[${instanceId}] - >nativeCreateScreenShareOffer (${stunTurnJson})`
|
||||
);
|
||||
// call native swift method that triggers the broadcast popup
|
||||
nativeCreateScreenShareOffer();
|
||||
nativeCreateScreenShareOffer(stunTurnJson);
|
||||
} catch (e) {
|
||||
rej(`Call to nativeCreateScreenShareOffer failed`);
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ const FullAudioService = NativeModules.BBBN_FullAudioService;
|
||||
// FullAudioService.initializeFullAudio();
|
||||
// }
|
||||
|
||||
export function createFullAudioOffer() {
|
||||
FullAudioService.createFullAudioOffer();
|
||||
export function createFullAudioOffer(stunTurnJson: String) {
|
||||
FullAudioService.createFullAudioOffer(stunTurnJson);
|
||||
}
|
||||
|
||||
export function setFullAudioRemoteSDP(remoteSDP: string) {
|
||||
|
||||
@@ -6,8 +6,8 @@ export function initializeScreenShare() {
|
||||
ScreenShareService.initializeScreenShare();
|
||||
}
|
||||
|
||||
export function createScreenShareOffer() {
|
||||
ScreenShareService.createScreenShareOffer();
|
||||
export function createScreenShareOffer(stunTurnJson: String) {
|
||||
ScreenShareService.createScreenShareOffer(stunTurnJson);
|
||||
}
|
||||
|
||||
export function setScreenShareRemoteSDP(remoteSDP: string) {
|
||||
|
||||
@@ -50,10 +50,16 @@ export function handleWebviewMessage(
|
||||
promise = initializeScreenShare(instanceId);
|
||||
break;
|
||||
case 'createFullAudioOffer':
|
||||
promise = createFullAudioOffer(instanceId);
|
||||
promise = createFullAudioOffer(
|
||||
instanceId,
|
||||
JSON.stringify(data?.arguments[0])
|
||||
);
|
||||
break;
|
||||
case 'createScreenShareOffer':
|
||||
promise = createScreenShareOffer(instanceId);
|
||||
promise = createScreenShareOffer(
|
||||
instanceId,
|
||||
JSON.stringify(data?.arguments[0])
|
||||
);
|
||||
break;
|
||||
case 'setScreenShareRemoteSDP':
|
||||
promise = setScreenShareRemoteSDP(instanceId, data?.arguments[0].sdp);
|
||||
|
||||
Reference in New Issue
Block a user