Adds ReactEventEmitter and full handling of broadcastStarted event
This commit is contained in:
178
LICENSE
178
LICENSE
@@ -1,21 +1,165 @@
|
||||
MIT License
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (c) 2021 BigBlueButton Inc
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
|
||||
17
README.md
17
README.md
@@ -2,6 +2,9 @@
|
||||
|
||||
This repository contains BigBlueButton react-native component, that's used in our [sample implementation](https://github.com/bigbluebutton/bigbluebutton-mobile).
|
||||
|
||||

|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
@@ -11,17 +14,25 @@ npm install bigbluebutton-mobile-sdk
|
||||
## Usage
|
||||
|
||||
```js
|
||||
import { BigbluebuttonMobileSdkView } from "bigbluebutton-mobile-sdk";
|
||||
import { BigBlueButtonMobile } from "bigbluebutton-mobile-sdk";
|
||||
|
||||
// ...
|
||||
|
||||
<BigbluebuttonMobileSdkView color="tomato" />
|
||||
<BigbluebuttonMobile
|
||||
broadcastAppBundleId="org.bigbluebutton.mobile-sdk.example.BigbluebuttonMobileSdkBroadcastUploadExtension"
|
||||
url="https://demo.bigbluebutton.org"
|
||||
style={styles.box}
|
||||
/>
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
|
||||
|
||||
## WebRTC
|
||||
|
||||
This project references the library [WebRTC](https://webrtc.org).
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
LGPL-3.0
|
||||
|
||||
@@ -54,6 +54,7 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(':react-native-webview')
|
||||
//noinspection GradleDynamicVersion
|
||||
implementation "com.facebook.react:react-native:+" // From node_modules
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ import com.facebook.react.uimanager.SimpleViewManager;
|
||||
import com.facebook.react.uimanager.ThemedReactContext;
|
||||
import com.facebook.react.uimanager.annotations.ReactProp;
|
||||
|
||||
public class BigbluebuttonMobileSdkViewManager extends SimpleViewManager<View> {
|
||||
public static final String REACT_CLASS = "BigbluebuttonMobileSdkView";
|
||||
public class BigbluebuttonMobileManager extends SimpleViewManager<View> {
|
||||
public static final String REACT_CLASS = "BigbluebuttonMobile";
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
@@ -17,6 +17,6 @@ public class BigbluebuttonMobileSdkPackage implements ReactPackage {
|
||||
|
||||
@Override
|
||||
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
||||
return Arrays.<ViewManager>asList(new BigbluebuttonMobileSdkViewManager());
|
||||
return Arrays.<ViewManager>asList(new BigbluebuttonMobileManager());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,11 +10,12 @@ Pod::Spec.new do |s|
|
||||
s.license = package["license"]
|
||||
s.authors = package["author"]
|
||||
|
||||
s.platforms = { :ios => "10.0" }
|
||||
s.platforms = { :ios => "14.7" }
|
||||
s.source = { :git => "https://github.com/bigbluebutton/bigbluebutton-mobile-sdk.git", :tag => "#{s.version}" }
|
||||
|
||||
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
||||
|
||||
s.dependency "React-Core"
|
||||
s.dependency "WebRTC-lib"
|
||||
s.dependency "bigbluebutton-mobile-sdk-common"
|
||||
end
|
||||
|
||||
7
common/README.md
Normal file
7
common/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Common
|
||||
|
||||
In this folder you will find all classes that are shared by Broadcast Upload Extension and BigBlueButtonMobile application.
|
||||
|
||||
This "sharing" is only at compile time (to avoid code duplication), in IOS they are completely different applications.
|
||||
|
||||
|
||||
19
common/bigbluebutton-mobile-sdk-common.podspec
Normal file
19
common/bigbluebutton-mobile-sdk-common.podspec
Normal file
@@ -0,0 +1,19 @@
|
||||
require "json"
|
||||
|
||||
package = JSON.parse(File.read(File.join(__dir__, "../package.json")))
|
||||
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "bigbluebutton-mobile-sdk-common"
|
||||
s.version = package["version"]
|
||||
s.summary = package["description"]
|
||||
s.homepage = package["homepage"]
|
||||
s.license = package["license"]
|
||||
s.authors = package["author"]
|
||||
|
||||
s.platforms = { :ios => "14.7" }
|
||||
s.source = { :git => "https://github.com/bigbluebutton/bigbluebutton-mobile-sdk.git", :tag => "#{s.version}" }
|
||||
|
||||
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
||||
|
||||
s.dependency "WebRTC-lib"
|
||||
end
|
||||
71
common/ios/Classes/BBBSampleHandler.swift
Normal file
71
common/ios/Classes/BBBSampleHandler.swift
Normal file
@@ -0,0 +1,71 @@
|
||||
//
|
||||
// BBBSampleHandler.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
import ReplayKit
|
||||
import os
|
||||
|
||||
open class BBBSampleHandler : RPBroadcastSampleHandler {
|
||||
// Logger (these messages are displayed in the console application)
|
||||
private var logger = os.Logger(subsystem: "BigBlueButtonMobileSDK", category: "BBBSampleHandler")
|
||||
private var appGroupName:String = "";
|
||||
|
||||
open func setAppGroupName(appGroupName:String) {
|
||||
self.appGroupName = appGroupName;
|
||||
}
|
||||
|
||||
open override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
|
||||
logger.info("ReplayKit2 event - broadcastStarted")
|
||||
|
||||
logger.info("ReplayKit2 event - broadcastStarted - persisting information on UserDefaults")
|
||||
BBBSharedData
|
||||
.getUserDefaults(appGroupName: self.appGroupName)
|
||||
.set(BBBSharedData.generatePayload(), forKey: BBBSharedData.SharedData.broadcastStarted)
|
||||
}
|
||||
|
||||
open override func broadcastPaused() {
|
||||
logger.info("ReplayKit2 event - broadcastPaused")
|
||||
|
||||
logger.info("ReplayKit2 event - broadcastPaused - persisting information on UserDefaults")
|
||||
BBBSharedData
|
||||
.getUserDefaults(appGroupName: self.appGroupName)
|
||||
.set(BBBSharedData.generatePayload(), forKey: BBBSharedData.SharedData.broadcastPaused)
|
||||
}
|
||||
|
||||
open override func broadcastResumed() {
|
||||
logger.info("ReplayKit2 event - broadcastResumed")
|
||||
|
||||
logger.info("ReplayKit2 event - broadcastResumed - persisting information on UserDefaults")
|
||||
BBBSharedData
|
||||
.getUserDefaults(appGroupName: self.appGroupName)
|
||||
.set(BBBSharedData.generatePayload(), forKey: BBBSharedData.SharedData.broadcastResumed)
|
||||
}
|
||||
|
||||
open override func broadcastFinished() {
|
||||
logger.info("ReplayKit2 event - broadcastFinished")
|
||||
|
||||
logger.info("ReplayKit2 event - broadcastFinished - persisting information on UserDefaults")
|
||||
BBBSharedData
|
||||
.getUserDefaults(appGroupName: self.appGroupName)
|
||||
.set(BBBSharedData.generatePayload(), forKey: BBBSharedData.SharedData.broadcastFinished)
|
||||
}
|
||||
|
||||
open override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
|
||||
switch sampleBufferType {
|
||||
case RPSampleBufferType.video:
|
||||
logger.trace("ReplayKit2 event - processSampleBuffer(video)")
|
||||
break
|
||||
case RPSampleBufferType.audioApp:
|
||||
logger.trace("ReplayKit2 event - processSampleBuffer(audioApp)")
|
||||
break
|
||||
case RPSampleBufferType.audioMic:
|
||||
logger.trace("ReplayKit2 event - processSampleBuffer(audioMic)")
|
||||
break
|
||||
@unknown default:
|
||||
// Handle other sample buffer types
|
||||
fatalError("Unknown type of sample buffer")
|
||||
}
|
||||
}
|
||||
}
|
||||
42
common/ios/Classes/BBBSharedData.swift
Normal file
42
common/ios/Classes/BBBSharedData.swift
Normal file
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// BBBSharedData.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
import ReplayKit
|
||||
import os
|
||||
|
||||
open class BBBSharedData {
|
||||
// Logger (these messages are displayed in the console application)
|
||||
private static var logger = os.Logger(subsystem: "BigBlueButtonMobileSDK", category: "BBBSharedData")
|
||||
private static var userDefaults:UserDefaults?
|
||||
private static var userDefaultsGroup:String?
|
||||
|
||||
public enum SharedData {
|
||||
public static let broadcastStarted = "broadcastStarted"
|
||||
public static let broadcastPaused = "broadcastPaused"
|
||||
public static let broadcastResumed = "broadcastResumed"
|
||||
public static let broadcastFinished = "broadcastFinished"
|
||||
}
|
||||
|
||||
public static func getUserDefaults(appGroupName:String) -> UserDefaults {
|
||||
if(userDefaults == nil || userDefaultsGroup == nil || userDefaultsGroup != appGroupName) {
|
||||
logger.info("getUserDefaults \(appGroupName) -> Created")
|
||||
userDefaults = UserDefaults.init(suiteName: appGroupName)
|
||||
userDefaultsGroup = appGroupName
|
||||
} else {
|
||||
logger.info("getUserDefaults \(appGroupName) -> Reused")
|
||||
}
|
||||
|
||||
return userDefaults!
|
||||
}
|
||||
|
||||
// Generates a unique payload
|
||||
public static func generatePayload() -> String {
|
||||
// TODO - replace by UUID
|
||||
let now=String(DateFormatter.localizedString(from: Date(), dateStyle: .medium, timeStyle: .short));
|
||||
|
||||
return "{\"timestamp\": \(now)}";
|
||||
}
|
||||
}
|
||||
25
common/ios/Classes/UserDefaults.swift
Normal file
25
common/ios/Classes/UserDefaults.swift
Normal file
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// UserDefaults.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
extension UserDefaults {
|
||||
|
||||
@objc open dynamic var broadcastStarted: String {
|
||||
return string(forKey: BBBSharedData.SharedData.broadcastStarted) ?? ""
|
||||
}
|
||||
|
||||
@objc open dynamic var broadcastPaused: String {
|
||||
return string(forKey: BBBSharedData.SharedData.broadcastPaused) ?? ""
|
||||
}
|
||||
|
||||
@objc open dynamic var broadcastResumed: String {
|
||||
return string(forKey: BBBSharedData.SharedData.broadcastResumed) ?? ""
|
||||
}
|
||||
|
||||
@objc open dynamic var broadcastFinished: String {
|
||||
return string(forKey: BBBSharedData.SharedData.broadcastFinished) ?? ""
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
rootProject.name = 'BigbluebuttonMobileSdkExample'
|
||||
include ':react-native-webview'
|
||||
project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android')
|
||||
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
|
||||
include ':app'
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.org.bigbluebutton.mobile-sdk.example.DE1E7B04</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
<string>com.apple.broadcast-services-upload</string>
|
||||
<key>NSExtensionPrincipalClass</key>
|
||||
<string>$(PRODUCT_MODULE_NAME).SampleHandler</string>
|
||||
<key>RPBroadcastProcessMode</key>
|
||||
<string>RPBroadcastProcessModeSampleBuffer</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// SampleHandler.swift
|
||||
// BigBlueButtonMobileSdkBroadcastExample
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 15/02/22.
|
||||
//
|
||||
|
||||
import ReplayKit
|
||||
import bigbluebutton_mobile_sdk_common
|
||||
|
||||
class SampleHandler: BBBSampleHandler {
|
||||
override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
|
||||
super.setAppGroupName(appGroupName: Constants.appGroupName)
|
||||
super.broadcastStarted(withSetupInfo: setupInfo)
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
//
|
||||
// Use this file to import your target's public headers that you would like to expose to Swift.
|
||||
//
|
||||
@@ -7,116 +7,101 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
00E356F31AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.m */; };
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
||||
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
2DCD954D1E0B4F2C00145EB5 /* BigbluebuttonMobileSdkExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.m */; };
|
||||
4C39C56BAD484C67AA576FFA /* libPods-BigbluebuttonMobileSdkExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CA3E69C5B9553B26FBA2DF04 /* libPods-BigbluebuttonMobileSdkExample.a */; };
|
||||
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
|
||||
D4107C11428E565249543452 /* libPods-BigbluebuttonMobileSdkExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F8315799A5C1BF7D3955FE7A /* libPods-BigbluebuttonMobileSdkExample.a */; };
|
||||
E34840357A40CF330A083CD4 /* libPods-BigBlueButtonMobileSdkBroadcastExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B60F7CB33D3D557C0DBFB9A /* libPods-BigBlueButtonMobileSdkBroadcastExample.a */; };
|
||||
F1C81DD727BC0E5800BC9C2F /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F1CB754927BBFB61007E6C31 /* ReplayKit.framework */; };
|
||||
F1C81DDA27BC0E5800BC9C2F /* SampleHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C81DD927BC0E5800BC9C2F /* SampleHandler.swift */; };
|
||||
F1C81DDE27BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = F1C81DD627BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
F1CF7F4627D1A4CB00E0C7F1 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CF7F4527D1A4CB00E0C7F1 /* Constants.swift */; };
|
||||
F1CF7F4827D1AAAF00E0C7F1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CF7F4727D1AAAF00E0C7F1 /* AppDelegate.swift */; };
|
||||
F1CF7F4A27D1AABD00E0C7F1 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CF7F4927D1AABD00E0C7F1 /* Constants.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
|
||||
F1C81DDC27BC0E5800BC9C2F /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
|
||||
remoteInfo = BigbluebuttonMobileSdkExample;
|
||||
};
|
||||
2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
|
||||
remoteInfo = "BigbluebuttonMobileSdkExample-tvOS";
|
||||
remoteGlobalIDString = F1C81DD527BC0E5800BC9C2F;
|
||||
remoteInfo = BigBlueButtonMobileSdkBroadcastExample;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
F1CB756127BBFB62007E6C31 /* Embed App Extensions */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 13;
|
||||
files = (
|
||||
F1C81DDE27BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample.appex in Embed App Extensions */,
|
||||
);
|
||||
name = "Embed App Extensions";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
|
||||
00E356EE1AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BigbluebuttonMobileSdkExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
00E356F21AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BigbluebuttonMobileSdkExampleTests.m; sourceTree = "<group>"; };
|
||||
13B07F961A680F5B00A75B9A /* BigbluebuttonMobileSdkExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BigbluebuttonMobileSdkExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = BigbluebuttonMobileSdkExample/AppDelegate.h; sourceTree = "<group>"; };
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = BigbluebuttonMobileSdkExample/AppDelegate.m; sourceTree = "<group>"; };
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = BigbluebuttonMobileSdkExample/Images.xcassets; sourceTree = "<group>"; };
|
||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = BigbluebuttonMobileSdkExample/Info.plist; sourceTree = "<group>"; };
|
||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = BigbluebuttonMobileSdkExample/main.m; sourceTree = "<group>"; };
|
||||
2D02E47B1E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "BigbluebuttonMobileSdkExample-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2D02E4901E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "BigbluebuttonMobileSdkExample-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
47F7ED3B7971BE374F7B8635 /* Pods-BigbluebuttonMobileSdkExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BigbluebuttonMobileSdkExample.debug.xcconfig"; path = "Target Support Files/Pods-BigbluebuttonMobileSdkExample/Pods-BigbluebuttonMobileSdkExample.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
2B60F7CB33D3D557C0DBFB9A /* libPods-BigBlueButtonMobileSdkBroadcastExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BigBlueButtonMobileSdkBroadcastExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
64F9B7FFD471972C20137BD6 /* Pods-BigBlueButtonMobileSdkBroadcastExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BigBlueButtonMobileSdkBroadcastExample.debug.xcconfig"; path = "Target Support Files/Pods-BigBlueButtonMobileSdkBroadcastExample/Pods-BigBlueButtonMobileSdkBroadcastExample.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
7EC638C00C2D62DDC1E73F8E /* Pods-BigbluebuttonMobileSdkExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BigbluebuttonMobileSdkExample.debug.xcconfig"; path = "Target Support Files/Pods-BigbluebuttonMobileSdkExample/Pods-BigbluebuttonMobileSdkExample.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = BigbluebuttonMobileSdkExample/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
CA3E69C5B9553B26FBA2DF04 /* libPods-BigbluebuttonMobileSdkExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BigbluebuttonMobileSdkExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E00ACF0FDA8BF921659E2F9A /* Pods-BigbluebuttonMobileSdkExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BigbluebuttonMobileSdkExample.release.xcconfig"; path = "Target Support Files/Pods-BigbluebuttonMobileSdkExample/Pods-BigbluebuttonMobileSdkExample.release.xcconfig"; sourceTree = "<group>"; };
|
||||
B2C3B4EA07C7BC3E4B51B5D2 /* Pods-BigBlueButtonMobileSdkBroadcastExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BigBlueButtonMobileSdkBroadcastExample.release.xcconfig"; path = "Target Support Files/Pods-BigBlueButtonMobileSdkBroadcastExample/Pods-BigBlueButtonMobileSdkBroadcastExample.release.xcconfig"; sourceTree = "<group>"; };
|
||||
D282348F3CB6D3E26FB51C37 /* Pods-BigbluebuttonMobileSdkExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BigbluebuttonMobileSdkExample.release.xcconfig"; path = "Target Support Files/Pods-BigbluebuttonMobileSdkExample/Pods-BigbluebuttonMobileSdkExample.release.xcconfig"; sourceTree = "<group>"; };
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
|
||||
F1C81DD627BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = BigBlueButtonMobileSdkBroadcastExample.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
F1C81DD927BC0E5800BC9C2F /* SampleHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleHandler.swift; sourceTree = "<group>"; };
|
||||
F1C81DDB27BC0E5800BC9C2F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
F1CB754927BBFB61007E6C31 /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
|
||||
F1CB755527BBFB61007E6C31 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
F1CF7F4527D1A4CB00E0C7F1 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; };
|
||||
F1CF7F4727D1AAAF00E0C7F1 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = BigbluebuttonMobileSdkExample/AppDelegate.swift; sourceTree = "<group>"; };
|
||||
F1CF7F4927D1AABD00E0C7F1 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = SOURCE_ROOT; };
|
||||
F1D24A0927D18674003B294F /* swift-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "swift-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
F1D24A0C27D18E21003B294F /* BigbluebuttonMobileSdkExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = BigbluebuttonMobileSdkExample.entitlements; path = BigbluebuttonMobileSdkExample/BigbluebuttonMobileSdkExample.entitlements; sourceTree = "<group>"; };
|
||||
F1D24A0D27D18E32003B294F /* BigBlueButtonMobileSdkBroadcastExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = BigBlueButtonMobileSdkBroadcastExample.entitlements; sourceTree = "<group>"; };
|
||||
F8315799A5C1BF7D3955FE7A /* libPods-BigbluebuttonMobileSdkExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BigbluebuttonMobileSdkExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
00E356EB1AD99517003FC87E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4C39C56BAD484C67AA576FFA /* libPods-BigbluebuttonMobileSdkExample.a in Frameworks */,
|
||||
D4107C11428E565249543452 /* libPods-BigbluebuttonMobileSdkExample.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
2D02E4781E0B4A5D006451C7 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {
|
||||
F1C81DD327BC0E5800BC9C2F /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F1C81DD727BC0E5800BC9C2F /* ReplayKit.framework in Frameworks */,
|
||||
E34840357A40CF330A083CD4 /* libPods-BigBlueButtonMobileSdkBroadcastExample.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
00E356EF1AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
00E356F21AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.m */,
|
||||
00E356F01AD99517003FC87E /* Supporting Files */,
|
||||
);
|
||||
path = BigbluebuttonMobileSdkExampleTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
00E356F01AD99517003FC87E /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
00E356F11AD99517003FC87E /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
13B07FAE1A68108700A75B9A /* BigbluebuttonMobileSdkExample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F1CF7F4527D1A4CB00E0C7F1 /* Constants.swift */,
|
||||
F1CF7F4727D1AAAF00E0C7F1 /* AppDelegate.swift */,
|
||||
F1D24A0C27D18E21003B294F /* BigbluebuttonMobileSdkExample.entitlements */,
|
||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.m */,
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
||||
13B07FB61A68108700A75B9A /* Info.plist */,
|
||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
|
||||
13B07FB71A68108700A75B9A /* main.m */,
|
||||
F1D24A0927D18674003B294F /* swift-Bridging-Header.h */,
|
||||
);
|
||||
name = BigbluebuttonMobileSdkExample;
|
||||
sourceTree = "<group>";
|
||||
@@ -126,7 +111,10 @@
|
||||
children = (
|
||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
||||
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
|
||||
CA3E69C5B9553B26FBA2DF04 /* libPods-BigbluebuttonMobileSdkExample.a */,
|
||||
F1CB754927BBFB61007E6C31 /* ReplayKit.framework */,
|
||||
F1CB755527BBFB61007E6C31 /* UIKit.framework */,
|
||||
2B60F7CB33D3D557C0DBFB9A /* libPods-BigBlueButtonMobileSdkBroadcastExample.a */,
|
||||
F8315799A5C1BF7D3955FE7A /* libPods-BigbluebuttonMobileSdkExample.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -134,8 +122,10 @@
|
||||
6B9684456A2045ADE5A6E47E /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
47F7ED3B7971BE374F7B8635 /* Pods-BigbluebuttonMobileSdkExample.debug.xcconfig */,
|
||||
E00ACF0FDA8BF921659E2F9A /* Pods-BigbluebuttonMobileSdkExample.release.xcconfig */,
|
||||
64F9B7FFD471972C20137BD6 /* Pods-BigBlueButtonMobileSdkBroadcastExample.debug.xcconfig */,
|
||||
B2C3B4EA07C7BC3E4B51B5D2 /* Pods-BigBlueButtonMobileSdkBroadcastExample.release.xcconfig */,
|
||||
7EC638C00C2D62DDC1E73F8E /* Pods-BigbluebuttonMobileSdkExample.debug.xcconfig */,
|
||||
D282348F3CB6D3E26FB51C37 /* Pods-BigbluebuttonMobileSdkExample.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
@@ -152,7 +142,7 @@
|
||||
children = (
|
||||
13B07FAE1A68108700A75B9A /* BigbluebuttonMobileSdkExample */,
|
||||
832341AE1AAA6A7D00B99B32 /* Libraries */,
|
||||
00E356EF1AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests */,
|
||||
F1C81DD827BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample */,
|
||||
83CBBA001A601CBA00E9B192 /* Products */,
|
||||
2D16E6871FA4F8E400B85C8A /* Frameworks */,
|
||||
6B9684456A2045ADE5A6E47E /* Pods */,
|
||||
@@ -166,92 +156,66 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
13B07F961A680F5B00A75B9A /* BigbluebuttonMobileSdkExample.app */,
|
||||
00E356EE1AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.xctest */,
|
||||
2D02E47B1E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOS.app */,
|
||||
2D02E4901E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOSTests.xctest */,
|
||||
F1C81DD627BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample.appex */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F1C81DD827BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F1D24A0D27D18E32003B294F /* BigBlueButtonMobileSdkBroadcastExample.entitlements */,
|
||||
F1CF7F4927D1AABD00E0C7F1 /* Constants.swift */,
|
||||
F1C81DD927BC0E5800BC9C2F /* SampleHandler.swift */,
|
||||
F1C81DDB27BC0E5800BC9C2F /* Info.plist */,
|
||||
);
|
||||
path = BigBlueButtonMobileSdkBroadcastExample;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
00E356ED1AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "BigbluebuttonMobileSdkExampleTests" */;
|
||||
buildPhases = (
|
||||
00E356EA1AD99517003FC87E /* Sources */,
|
||||
00E356EB1AD99517003FC87E /* Frameworks */,
|
||||
00E356EC1AD99517003FC87E /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
00E356F51AD99517003FC87E /* PBXTargetDependency */,
|
||||
);
|
||||
name = BigbluebuttonMobileSdkExampleTests;
|
||||
productName = BigbluebuttonMobileSdkExampleTests;
|
||||
productReference = 00E356EE1AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
13B07F861A680F5B00A75B9A /* BigbluebuttonMobileSdkExample */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "BigbluebuttonMobileSdkExample" */;
|
||||
buildPhases = (
|
||||
4F0A6FC082772762E3E4C96C /* [CP] Check Pods Manifest.lock */,
|
||||
595975E3173F1F7163C38D86 /* [CP] Check Pods Manifest.lock */,
|
||||
FD10A7F022414F080027D42C /* Start Packager */,
|
||||
13B07F871A680F5B00A75B9A /* Sources */,
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||
C1D60D28B925C94BD88E79D7 /* [CP] Copy Pods Resources */,
|
||||
E4449C3631C57547AAC3C6FE /* [CP] Embed Pods Frameworks */,
|
||||
F1CB756127BBFB62007E6C31 /* Embed App Extensions */,
|
||||
9B21B2DFB2AEE9768BF2AAE9 /* [CP] Embed Pods Frameworks */,
|
||||
81877DFAFD98A35B2F98ABA0 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
F1C81DDD27BC0E5800BC9C2F /* PBXTargetDependency */,
|
||||
);
|
||||
name = BigbluebuttonMobileSdkExample;
|
||||
productName = BigbluebuttonMobileSdkExample;
|
||||
productReference = 13B07F961A680F5B00A75B9A /* BigbluebuttonMobileSdkExample.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
2D02E47A1E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOS */ = {
|
||||
F1C81DD527BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "BigbluebuttonMobileSdkExample-tvOS" */;
|
||||
buildConfigurationList = F1C81DDF27BC0E5800BC9C2F /* Build configuration list for PBXNativeTarget "BigBlueButtonMobileSdkBroadcastExample" */;
|
||||
buildPhases = (
|
||||
FD10A7F122414F3F0027D42C /* Start Packager */,
|
||||
2D02E4771E0B4A5D006451C7 /* Sources */,
|
||||
2D02E4781E0B4A5D006451C7 /* Frameworks */,
|
||||
2D02E4791E0B4A5D006451C7 /* Resources */,
|
||||
2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,
|
||||
E0519D6C71A3BA7DD73ADED6 /* [CP] Check Pods Manifest.lock */,
|
||||
F1C81DD227BC0E5800BC9C2F /* Sources */,
|
||||
F1C81DD327BC0E5800BC9C2F /* Frameworks */,
|
||||
F1C81DD427BC0E5800BC9C2F /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "BigbluebuttonMobileSdkExample-tvOS";
|
||||
productName = "BigbluebuttonMobileSdkExample-tvOS";
|
||||
productReference = 2D02E47B1E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOS.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
2D02E48F1E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOSTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "BigbluebuttonMobileSdkExample-tvOSTests" */;
|
||||
buildPhases = (
|
||||
2D02E48C1E0B4A5D006451C7 /* Sources */,
|
||||
2D02E48D1E0B4A5D006451C7 /* Frameworks */,
|
||||
2D02E48E1E0B4A5D006451C7 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "BigbluebuttonMobileSdkExample-tvOSTests";
|
||||
productName = "BigbluebuttonMobileSdkExample-tvOSTests";
|
||||
productReference = 2D02E4901E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOSTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
name = BigBlueButtonMobileSdkBroadcastExample;
|
||||
productName = BigBlueButtonMobileSdkBroadcastExample;
|
||||
productReference = F1C81DD627BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
@@ -259,24 +223,18 @@
|
||||
83CBB9F71A601CBA00E9B192 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1320;
|
||||
LastUpgradeCheck = 1130;
|
||||
TargetAttributes = {
|
||||
00E356ED1AD99517003FC87E = {
|
||||
CreatedOnToolsVersion = 6.2;
|
||||
TestTargetID = 13B07F861A680F5B00A75B9A;
|
||||
};
|
||||
13B07F861A680F5B00A75B9A = {
|
||||
LastSwiftMigration = 1120;
|
||||
DevelopmentTeam = N69T9W23TC;
|
||||
LastSwiftMigration = 1320;
|
||||
};
|
||||
2D02E47A1E0B4A5D006451C7 = {
|
||||
CreatedOnToolsVersion = 8.2.1;
|
||||
F1C81DD527BC0E5800BC9C2F = {
|
||||
CreatedOnToolsVersion = 13.2.1;
|
||||
DevelopmentTeam = N69T9W23TC;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
2D02E48F1E0B4A5D006451C7 = {
|
||||
CreatedOnToolsVersion = 8.2.1;
|
||||
ProvisioningStyle = Automatic;
|
||||
TestTargetID = 2D02E47A1E0B4A5D006451C7;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "BigbluebuttonMobileSdkExample" */;
|
||||
@@ -293,21 +251,12 @@
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
13B07F861A680F5B00A75B9A /* BigbluebuttonMobileSdkExample */,
|
||||
00E356ED1AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests */,
|
||||
2D02E47A1E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOS */,
|
||||
2D02E48F1E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOSTests */,
|
||||
F1C81DD527BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
00E356EC1AD99517003FC87E /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
13B07F8E1A680F5B00A75B9A /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -317,15 +266,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
2D02E4791E0B4A5D006451C7 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
2D02E48E1E0B4A5D006451C7 /* Resources */ = {
|
||||
F1C81DD427BC0E5800BC9C2F /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -349,21 +290,7 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
|
||||
};
|
||||
2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Bundle React Native Code And Images";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
|
||||
};
|
||||
4F0A6FC082772762E3E4C96C /* [CP] Check Pods Manifest.lock */ = {
|
||||
595975E3173F1F7163C38D86 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -385,7 +312,7 @@
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
C1D60D28B925C94BD88E79D7 /* [CP] Copy Pods Resources */ = {
|
||||
81877DFAFD98A35B2F98ABA0 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -403,7 +330,7 @@
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BigbluebuttonMobileSdkExample/Pods-BigbluebuttonMobileSdkExample-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
E4449C3631C57547AAC3C6FE /* [CP] Embed Pods Frameworks */ = {
|
||||
9B21B2DFB2AEE9768BF2AAE9 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -421,6 +348,28 @@
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BigbluebuttonMobileSdkExample/Pods-BigbluebuttonMobileSdkExample-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
E0519D6C71A3BA7DD73ADED6 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-BigBlueButtonMobileSdkBroadcastExample-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
FD10A7F022414F080027D42C /* Start Packager */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -440,269 +389,94 @@
|
||||
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
FD10A7F122414F3F0027D42C /* Start Packager */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Start Packager";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
00E356EA1AD99517003FC87E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
00E356F31AD99517003FC87E /* BigbluebuttonMobileSdkExampleTests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
13B07F871A680F5B00A75B9A /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */,
|
||||
F1CF7F4827D1AAAF00E0C7F1 /* AppDelegate.swift in Sources */,
|
||||
F1CF7F4627D1A4CB00E0C7F1 /* Constants.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
2D02E4771E0B4A5D006451C7 /* Sources */ = {
|
||||
F1C81DD227BC0E5800BC9C2F /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,
|
||||
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
2D02E48C1E0B4A5D006451C7 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2DCD954D1E0B4F2C00145EB5 /* BigbluebuttonMobileSdkExampleTests.m in Sources */,
|
||||
F1C81DDA27BC0E5800BC9C2F /* SampleHandler.swift in Sources */,
|
||||
F1CF7F4A27D1AABD00E0C7F1 /* Constants.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
|
||||
F1C81DDD27BC0E5800BC9C2F /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 13B07F861A680F5B00A75B9A /* BigbluebuttonMobileSdkExample */;
|
||||
targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
|
||||
};
|
||||
2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 2D02E47A1E0B4A5D006451C7 /* BigbluebuttonMobileSdkExample-tvOS */;
|
||||
targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
|
||||
target = F1C81DD527BC0E5800BC9C2F /* BigBlueButtonMobileSdkBroadcastExample */;
|
||||
targetProxy = F1C81DDC27BC0E5800BC9C2F /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
00E356F61AD99517003FC87E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = BigbluebuttonMobileSdkExampleTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
"-lc++",
|
||||
"$(inherited)",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.bigbluebuttonmobilesdk;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BigbluebuttonMobileSdkExample.app/BigbluebuttonMobileSdkExample";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
00E356F71AD99517003FC87E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
INFOPLIST_FILE = BigbluebuttonMobileSdkExampleTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
"-lc++",
|
||||
"$(inherited)",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.bigbluebuttonmobilesdk;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BigbluebuttonMobileSdkExample.app/BigbluebuttonMobileSdkExample";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 47F7ED3B7971BE374F7B8635 /* Pods-BigbluebuttonMobileSdkExample.debug.xcconfig */;
|
||||
baseConfigurationReference = 7EC638C00C2D62DDC1E73F8E /* Pods-BigbluebuttonMobileSdkExample.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = BigbluebuttonMobileSdkExample/BigbluebuttonMobileSdkExample.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = N69T9W23TC;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = BigbluebuttonMobileSdkExample/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.7;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-lc++",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.bigbluebuttonmobilesdk;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.bigbluebutton.mobile-sdk.example.DE1E7B04";
|
||||
PRODUCT_NAME = BigbluebuttonMobileSdkExample;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "swift-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
SWIFT_VERSION = 5.5.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = E00ACF0FDA8BF921659E2F9A /* Pods-BigbluebuttonMobileSdkExample.release.xcconfig */;
|
||||
baseConfigurationReference = D282348F3CB6D3E26FB51C37 /* Pods-BigbluebuttonMobileSdkExample.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = BigbluebuttonMobileSdkExample/BigbluebuttonMobileSdkExample.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = N69T9W23TC;
|
||||
INFOPLIST_FILE = BigbluebuttonMobileSdkExample/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.7;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-lc++",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.bigbluebuttonmobilesdk;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.bigbluebutton.mobile-sdk.example.DE1E7B04";
|
||||
PRODUCT_NAME = BigbluebuttonMobileSdkExample;
|
||||
SWIFT_VERSION = 5.0;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "swift-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.5.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
2D02E4971E0B4A5E006451C7 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = "BigbluebuttonMobileSdkExample-tvOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-lc++",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.BigbluebuttonMobileSdkExample-tvOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = appletvos;
|
||||
TARGETED_DEVICE_FAMILY = 3;
|
||||
TVOS_DEPLOYMENT_TARGET = 14.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
2D02E4981E0B4A5E006451C7 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = "BigbluebuttonMobileSdkExample-tvOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-lc++",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.BigbluebuttonMobileSdkExample-tvOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = appletvos;
|
||||
TARGETED_DEVICE_FAMILY = 3;
|
||||
TVOS_DEPLOYMENT_TARGET = 14.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
2D02E4991E0B4A5E006451C7 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = "BigbluebuttonMobileSdkExample-tvOSTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-lc++",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.BigbluebuttonMobileSdkExample-tvOSTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = appletvos;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BigbluebuttonMobileSdkExample-tvOS.app/BigbluebuttonMobileSdkExample-tvOS";
|
||||
TVOS_DEPLOYMENT_TARGET = 10.1;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
2D02E49A1E0B4A5E006451C7 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = "BigbluebuttonMobileSdkExample-tvOSTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-lc++",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.BigbluebuttonMobileSdkExample-tvOSTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = appletvos;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BigbluebuttonMobileSdkExample-tvOS.app/BigbluebuttonMobileSdkExample-tvOS";
|
||||
TVOS_DEPLOYMENT_TARGET = 10.1;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
83CBBA201A601CBA00E9B192 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@@ -750,13 +524,8 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.7;
|
||||
LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
|
||||
"\"$(inherited)\"",
|
||||
);
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
@@ -803,7 +572,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.7;
|
||||
LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
||||
@@ -816,18 +585,82 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
F1C81DE027BC0E5800BC9C2F /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 64F9B7FFD471972C20137BD6 /* Pods-BigBlueButtonMobileSdkBroadcastExample.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_ENTITLEMENTS = BigBlueButtonMobileSdkBroadcastExample/BigBlueButtonMobileSdkBroadcastExample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = N69T9W23TC;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = BigBlueButtonMobileSdkBroadcastExample/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "BigBlueButton Mobile SDK Broadcast Example";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.7;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 1.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.bigbluebutton.mobile-sdk.example.DE1E7B04.BigBlueButtonMobileSdkBroadcastExample";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.5.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
F1C81DE127BC0E5800BC9C2F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = B2C3B4EA07C7BC3E4B51B5D2 /* Pods-BigBlueButtonMobileSdkBroadcastExample.release.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_ENTITLEMENTS = BigBlueButtonMobileSdkBroadcastExample/BigBlueButtonMobileSdkBroadcastExample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = N69T9W23TC;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = BigBlueButtonMobileSdkBroadcastExample/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "BigBlueButton Mobile SDK Broadcast Example";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.7;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 1.0;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.bigbluebutton.mobile-sdk.example.DE1E7B04.BigBlueButtonMobileSdkBroadcastExample";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 5.5.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "BigbluebuttonMobileSdkExampleTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
00E356F61AD99517003FC87E /* Debug */,
|
||||
00E356F71AD99517003FC87E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "BigbluebuttonMobileSdkExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
@@ -837,24 +670,6 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "BigbluebuttonMobileSdkExample-tvOS" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
2D02E4971E0B4A5E006451C7 /* Debug */,
|
||||
2D02E4981E0B4A5E006451C7 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "BigbluebuttonMobileSdkExample-tvOSTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
2D02E4991E0B4A5E006451C7 /* Debug */,
|
||||
2D02E49A1E0B4A5E006451C7 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "BigbluebuttonMobileSdkExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
@@ -864,6 +679,15 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
F1C81DDF27BC0E5800BC9C2F /* Build configuration list for PBXNativeTarget "BigBlueButtonMobileSdkBroadcastExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
F1C81DE027BC0E5800BC9C2F /* Debug */,
|
||||
F1C81DE127BC0E5800BC9C2F /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
|
||||
|
||||
@@ -50,6 +50,18 @@
|
||||
ReferencedContainer = "container:BigbluebuttonMobileSdkExample.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
|
||||
BuildableName = "BigbluebuttonMobileSdkExampleTests.xctest"
|
||||
BlueprintName = "BigbluebuttonMobileSdkExampleTests"
|
||||
ReferencedContainer = "container:BigbluebuttonMobileSdkExample.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import <React/RCTBridgeDelegate.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
|
||||
|
||||
@property (nonatomic, strong) UIWindow *window;
|
||||
|
||||
@end
|
||||
@@ -1,63 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
#import <React/RCTBridge.h>
|
||||
#import <React/RCTBundleURLProvider.h>
|
||||
#import <React/RCTRootView.h>
|
||||
|
||||
#ifdef FB_SONARKIT_ENABLED
|
||||
#import <FlipperKit/FlipperClient.h>
|
||||
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
|
||||
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
|
||||
#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
|
||||
#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
|
||||
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
|
||||
static void InitializeFlipper(UIApplication *application) {
|
||||
FlipperClient *client = [FlipperClient sharedClient];
|
||||
SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
|
||||
[client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
|
||||
[client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
|
||||
[client addPlugin:[FlipperKitReactPlugin new]];
|
||||
[client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
|
||||
[client start];
|
||||
}
|
||||
#endif
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
#ifdef FB_SONARKIT_ENABLED
|
||||
InitializeFlipper(application);
|
||||
#endif
|
||||
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
|
||||
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
|
||||
moduleName:@"BigbluebuttonMobileSdkExample"
|
||||
initialProperties:nil];
|
||||
|
||||
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
|
||||
|
||||
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||
UIViewController *rootViewController = [UIViewController new];
|
||||
rootViewController.view = rootView;
|
||||
self.window.rootViewController = rootViewController;
|
||||
[self.window makeKeyAndVisible];
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
||||
{
|
||||
#if DEBUG
|
||||
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
|
||||
#else
|
||||
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
|
||||
#endif
|
||||
}
|
||||
|
||||
@end
|
||||
47
example/ios/BigbluebuttonMobileSdkExample/AppDelegate.swift
Normal file
47
example/ios/BigbluebuttonMobileSdkExample/AppDelegate.swift
Normal file
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import bigbluebutton_mobile_sdk
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate, RCTBridgeDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
var bridge: RCTBridge!
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||
|
||||
bridge = RCTBridge(delegate: self, launchOptions: launchOptions)
|
||||
let rootView = RCTRootView(bridge: bridge!, moduleName: Bundle.main.infoDictionary![kCFBundleNameKey as String] as! String, initialProperties: nil)
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
rootView.backgroundColor = .systemBackground
|
||||
} else {
|
||||
rootView.backgroundColor = .white
|
||||
}
|
||||
|
||||
let rootViewController = UIViewController()
|
||||
rootViewController.view = rootView
|
||||
|
||||
self.window = UIWindow(frame: UIScreen.main.bounds)
|
||||
self.window?.rootViewController = rootViewController
|
||||
self.window?.makeKeyAndVisible()
|
||||
|
||||
BigBlueButtonSDK.initialize(broadcastExtensionBundleId: Constants.broadcastExtensionBundleId, appGroupName: Constants.appGroupName)
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func sourceURL(for bridge: RCTBridge!) -> URL! {
|
||||
//#if DEBUG
|
||||
return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index", fallbackResource:nil)
|
||||
//#else
|
||||
// let mainBundle = Bundle.main
|
||||
// return mainBundle.url(forResource: "main", withExtension: "jsbundle")!
|
||||
//#endif
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.org.bigbluebutton.mobile-sdk.example.DE1E7B04</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -2,37 +2,52 @@
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "3x"
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "3x"
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "3x"
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>BigbluebuttonMobileSdk Example</string>
|
||||
<string>BigBlueButton Mobile SDK Example</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@@ -29,13 +29,7 @@
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<true/>
|
||||
<key>NSExceptionDomains</key>
|
||||
<dict>
|
||||
<key>localhost</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict/>
|
||||
</dict>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string></string>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
@@ -31,10 +31,11 @@
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
|
||||
<rect key="frame" x="0.0" y="626" width="375" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
|
||||
@@ -47,7 +48,6 @@
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
|
||||
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
@@ -55,4 +55,9 @@
|
||||
<point key="canvasLocation" x="52.173913043478265" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<systemColor name="darkTextColor">
|
||||
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
}
|
||||
16
example/ios/Constants.swift
Normal file
16
example/ios/Constants.swift
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// Constants.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class Constants {
|
||||
// This is used to filter the list of broadcast applications offered to the user (it must match with bundle id of the broadcast extension target)
|
||||
public static var broadcastExtensionBundleId="org.bigbluebutton.mobile-sdk.example.DE1E7B04.BigBlueButtonMobileSdkBroadcastExample";
|
||||
|
||||
// This is used to allow both applications (main and broadcast) to share information
|
||||
public static var appGroupName="group.org.bigbluebutton.mobile-sdk.example.DE1E7B04";
|
||||
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
//
|
||||
// File.swift
|
||||
// BigbluebuttonMobileSdkExample
|
||||
//
|
||||
|
||||
import Foundation
|
||||
@@ -1,7 +1,11 @@
|
||||
require_relative '../node_modules/react-native/scripts/react_native_pods'
|
||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||
|
||||
platform :ios, '14.0'
|
||||
platform :ios, '14.7'
|
||||
|
||||
target 'BigBlueButtonMobileSdkBroadcastExample' do
|
||||
pod 'bigbluebutton-mobile-sdk-common', :path => '../../common'
|
||||
end
|
||||
|
||||
target 'BigbluebuttonMobileSdkExample' do
|
||||
config = use_native_modules!
|
||||
@@ -9,13 +13,39 @@ target 'BigbluebuttonMobileSdkExample' do
|
||||
use_react_native!(:path => config["reactNativePath"])
|
||||
|
||||
pod 'bigbluebutton-mobile-sdk', :path => '../..'
|
||||
pod 'bigbluebutton-mobile-sdk-common', :path => '../../common'
|
||||
|
||||
# Enables Flipper.
|
||||
#
|
||||
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
||||
# you should disable these next few lines.
|
||||
# use_flipper!({ 'Flipper' => '0.80.0' })
|
||||
#post_install do |installer|
|
||||
# flipper_post_install(installer)
|
||||
#end
|
||||
|
||||
post_install do |installer|
|
||||
flipper_post_install(installer)
|
||||
fix_deployment_target(installer)
|
||||
end
|
||||
|
||||
def fix_deployment_target(installer)
|
||||
return if !installer
|
||||
project = installer.pods_project
|
||||
project_deployment_target = project.build_configurations.first.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
|
||||
|
||||
puts "Make sure all pods deployment target is #{project_deployment_target.green}"
|
||||
project.targets.each do |target|
|
||||
puts " #{target.name}".blue
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['SWIFT_VERSION'] = '5.5.2'
|
||||
|
||||
old_target = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
|
||||
new_target = project_deployment_target
|
||||
next if old_target == new_target
|
||||
puts " #{config.name}: #{old_target.yellow} -> #{new_target.green}"
|
||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = new_target
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
PODS:
|
||||
- bigbluebutton-mobile-sdk (0.1.0):
|
||||
- bigbluebutton-mobile-sdk (0.1.8):
|
||||
- bigbluebutton-mobile-sdk-common
|
||||
- React-Core
|
||||
- WebRTC-lib
|
||||
- bigbluebutton-mobile-sdk-common (0.1.8):
|
||||
- WebRTC-lib
|
||||
- boost-for-react-native (1.63.0)
|
||||
- DoubleConversion (1.1.6)
|
||||
- FBLazyVector (0.63.4)
|
||||
@@ -188,6 +191,8 @@ PODS:
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsinspector (0.63.4)
|
||||
- react-native-webview (11.17.2):
|
||||
- React-Core
|
||||
- React-RCTActionSheet (0.63.4):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.63.4)
|
||||
- React-RCTAnimation (0.63.4):
|
||||
@@ -253,6 +258,7 @@ PODS:
|
||||
|
||||
DEPENDENCIES:
|
||||
- bigbluebutton-mobile-sdk (from `../..`)
|
||||
- bigbluebutton-mobile-sdk-common (from `../../common`)
|
||||
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
|
||||
@@ -270,6 +276,7 @@ DEPENDENCIES:
|
||||
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
|
||||
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
|
||||
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
|
||||
- react-native-webview (from `../node_modules/react-native-webview`)
|
||||
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
|
||||
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
|
||||
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
|
||||
@@ -290,6 +297,8 @@ SPEC REPOS:
|
||||
EXTERNAL SOURCES:
|
||||
bigbluebutton-mobile-sdk:
|
||||
:path: "../.."
|
||||
bigbluebutton-mobile-sdk-common:
|
||||
:path: "../../common"
|
||||
DoubleConversion:
|
||||
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
|
||||
FBLazyVector:
|
||||
@@ -320,6 +329,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
|
||||
React-jsinspector:
|
||||
:path: "../node_modules/react-native/ReactCommon/jsinspector"
|
||||
react-native-webview:
|
||||
:path: "../node_modules/react-native-webview"
|
||||
React-RCTActionSheet:
|
||||
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
|
||||
React-RCTAnimation:
|
||||
@@ -344,7 +355,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon/yoga"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
bigbluebutton-mobile-sdk: ba72e940eea4190f7b499ed1a9e33e2d57ad7f8d
|
||||
bigbluebutton-mobile-sdk: 3b5da479ad35ed28109cc74b1f8bf7c284e61bb0
|
||||
bigbluebutton-mobile-sdk-common: 1da6689f4b52a15f0225f991d9e62158e654b941
|
||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||
DoubleConversion: cde416483dac037923206447da6e1454df403714
|
||||
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
|
||||
@@ -361,6 +373,7 @@ SPEC CHECKSUMS:
|
||||
React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31
|
||||
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
|
||||
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
|
||||
react-native-webview: 380c1a03ec94b7ed764dac8db1e7c9952d08c93a
|
||||
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
|
||||
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
|
||||
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
|
||||
@@ -374,6 +387,6 @@ SPEC CHECKSUMS:
|
||||
WebRTC-lib: 508fe02efa0c1a3a8867082a77d24c9be5d29aeb
|
||||
Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6
|
||||
|
||||
PODFILE CHECKSUM: e84704278155bd10d2637b20fd1b1519bedb0c00
|
||||
PODFILE CHECKSUM: f8fce284a6a970f8f12eaf796d7b132a61b2e095
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
|
||||
9
example/ios/swift-Bridging-Header.h
Normal file
9
example/ios/swift-Bridging-Header.h
Normal file
@@ -0,0 +1,9 @@
|
||||
// Based on: https://github.com/rhdeck/react-native-swift-core/blob/master/templates/swift-Bridging-Header.h
|
||||
|
||||
#import <React/RCTBridgeModule.h>
|
||||
#import <React/RCTBridge.h>
|
||||
#import <React/RCTEventDispatcher.h>
|
||||
#import <React/RCTRootView.h>
|
||||
#import <React/RCTUtils.h>
|
||||
#import <React/RCTConvert.h>
|
||||
#import <React/RCTBundleURLProvider.h>
|
||||
@@ -10,7 +10,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "16.13.1",
|
||||
"react-native": "0.63.4"
|
||||
"react-native": "0.63.4",
|
||||
"react-native-webview": "^11.17.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.10",
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
import * as React from 'react';
|
||||
|
||||
import { StyleSheet, View } from 'react-native';
|
||||
import { BigbluebuttonMobileSdkView } from 'bigbluebutton-mobile-sdk';
|
||||
import { BigbluebuttonMobile } from 'bigbluebutton-mobile-sdk';
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<BigbluebuttonMobileSdkViewManager color="#32a852" style={styles.box} />
|
||||
<BigbluebuttonMobile
|
||||
url="https://mobile.bbb.imdt.dev"
|
||||
style={styles.bbb}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
@@ -14,12 +17,10 @@ export default function App() {
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
flexDirection: 'row',
|
||||
},
|
||||
box: {
|
||||
width: 60,
|
||||
height: 60,
|
||||
marginVertical: 20,
|
||||
bbb: {
|
||||
marginTop: 48,
|
||||
flex: 1,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1806,16 +1806,16 @@ escape-html@~1.0.3:
|
||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
|
||||
|
||||
escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
|
||||
integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
|
||||
|
||||
escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
escape-string-regexp@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
|
||||
integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
|
||||
|
||||
esprima@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
||||
@@ -2273,7 +2273,7 @@ inquirer@^3.0.6:
|
||||
strip-ansi "^4.0.0"
|
||||
through "^2.3.6"
|
||||
|
||||
invariant@^2.2.4:
|
||||
invariant@2.2.4, invariant@^2.2.4:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
|
||||
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
|
||||
@@ -3514,6 +3514,14 @@ react-is@^16.12.0, react-is@^16.13.1, react-is@^16.8.4:
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
|
||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||
|
||||
react-native-webview@^11.17.2:
|
||||
version "11.17.2"
|
||||
resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.17.2.tgz#5b107edbf95b5eaf789882f03f0c84c3298c1ded"
|
||||
integrity sha512-7Sac02xq11qFACJmSUuCnH0aUFtSWUvSRC09EZ2qwNXq4IvT05xlX6978nlKUXf2ljw/0qZIzqbKzuXnu6Wq8Q==
|
||||
dependencies:
|
||||
escape-string-regexp "2.0.0"
|
||||
invariant "2.2.4"
|
||||
|
||||
react-native@0.63.4:
|
||||
version "0.63.4"
|
||||
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.63.4.tgz#2210fdd404c94a5fa6b423c6de86f8e48810ec36"
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
#import "React/RCTViewManager.h"
|
||||
|
||||
@interface RCT_EXTERN_MODULE(BigbluebuttonMobileSdkViewManager, RCTViewManager)
|
||||
|
||||
RCT_EXPORT_VIEW_PROPERTY(color, NSString)
|
||||
|
||||
@end
|
||||
@@ -1,32 +0,0 @@
|
||||
@objc(BigbluebuttonMobileSdkViewManager)
|
||||
class BigbluebuttonMobileSdkViewManager: RCTViewManager {
|
||||
|
||||
override func view() -> (BigbluebuttonMobileSdkView) {
|
||||
return BigbluebuttonMobileSdkView()
|
||||
}
|
||||
}
|
||||
|
||||
class BigbluebuttonMobileSdkView : UIView {
|
||||
|
||||
@objc var color: String = "" {
|
||||
didSet {
|
||||
self.backgroundColor = hexStringToUIColor(hexColor: color)
|
||||
}
|
||||
}
|
||||
|
||||
func hexStringToUIColor(hexColor: String) -> UIColor {
|
||||
let stringScanner = Scanner(string: hexColor)
|
||||
|
||||
if(hexColor.hasPrefix("#")) {
|
||||
stringScanner.scanLocation = 1
|
||||
}
|
||||
var color: UInt32 = 0
|
||||
stringScanner.scanHexInt32(&color)
|
||||
|
||||
let r = CGFloat(Int(color >> 16) & 0x000000FF)
|
||||
let g = CGFloat(Int(color >> 8) & 0x000000FF)
|
||||
let b = CGFloat(Int(color) & 0x000000FF)
|
||||
|
||||
return UIColor(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: 1)
|
||||
}
|
||||
}
|
||||
44
ios/NativeOnly/BigBlueButtonSDK.swift
Normal file
44
ios/NativeOnly/BigBlueButtonSDK.swift
Normal file
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// BigBlueButton.swift
|
||||
// bigbluebutton-mobile-sdk
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 03/03/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import os
|
||||
import bigbluebutton_mobile_sdk_common
|
||||
|
||||
open class BigBlueButtonSDK: NSObject {
|
||||
// Logger (these messages are displayed in the console application)
|
||||
private static var logger = os.Logger(subsystem: "BigBlueButtonMobileSDK", category: "BigBlueButton")
|
||||
private static var broadcastExtensionBundleId = ""
|
||||
private static var appGroupName = ""
|
||||
private static var userDefaults:UserDefaults?
|
||||
private static var observer: NSKeyValueObservation?
|
||||
|
||||
public static func initialize(broadcastExtensionBundleId:String, appGroupName:String) {
|
||||
self.broadcastExtensionBundleId = broadcastExtensionBundleId
|
||||
self.appGroupName = appGroupName
|
||||
|
||||
userDefaults = BBBSharedData.getUserDefaults(appGroupName: appGroupName)
|
||||
|
||||
// Observe keys modified by BroadcastUploadExtension and emit this event to react native
|
||||
|
||||
//broadcastStarted
|
||||
observer = userDefaults?.observe(\.broadcastStarted, options: [.new]) { (defaults, change) in
|
||||
ReactNativeEventEmitter.emitter.sendEvent(withName: ReactNativeEventEmitter.EVENT.onBroadcastStarted.rawValue, body: nil)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static func getBroadcastExtensionBundleId() -> String {
|
||||
return self.broadcastExtensionBundleId;
|
||||
}
|
||||
|
||||
public static func deinitialize () {
|
||||
observer?.invalidate()
|
||||
}
|
||||
|
||||
}
|
||||
15
ios/ReactExported/ReactNativeEventEmitter.m
Normal file
15
ios/ReactExported/ReactNativeEventEmitter.m
Normal file
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// ReactNativeEventEmitter.m
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <React/RCTBridgeModule.h>
|
||||
#import <React/RCTEventEmitter.h>
|
||||
|
||||
@interface RCT_EXTERN_MODULE(ReactNativeEventEmitter, RCTEventEmitter)
|
||||
|
||||
RCT_EXTERN_METHOD(supportedEvents)
|
||||
|
||||
@end
|
||||
35
ios/ReactExported/ReactNativeEventEmitter.swift
Normal file
35
ios/ReactExported/ReactNativeEventEmitter.swift
Normal file
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// ReactNativeEventEmitter.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import React
|
||||
|
||||
@objc(ReactNativeEventEmitter)
|
||||
open class ReactNativeEventEmitter: RCTEventEmitter {
|
||||
|
||||
public static var emitter: RCTEventEmitter!
|
||||
|
||||
public enum EVENT: String, CaseIterable {
|
||||
case onBroadcastRequested = "onBroadcastRequested"
|
||||
case onBroadcastStarted = "onBroadcastStarted"
|
||||
case onBroadcastPaused = "onBroadcastPaused"
|
||||
case onBroadcastResumed = "onBroadcastResumed"
|
||||
case onBroadcastFinished = "onBroadcastFinished"
|
||||
}
|
||||
|
||||
override init() {
|
||||
super.init()
|
||||
ReactNativeEventEmitter.emitter = self
|
||||
}
|
||||
|
||||
open override func supportedEvents() -> [String] {
|
||||
EVENT.allCases.map { $0.rawValue }
|
||||
}
|
||||
|
||||
@objc open override class func requiresMainQueueSetup() -> Bool {
|
||||
return false
|
||||
}
|
||||
}
|
||||
13
ios/ReactExported/ScreenShareServiceManager.m
Normal file
13
ios/ReactExported/ScreenShareServiceManager.m
Normal file
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// ScreenShareServiceManager.m
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "React/RCTBridgeModule.h"
|
||||
@interface RCT_EXTERN_REMAP_MODULE(BBBN_ScreenShareService, ScreenShareServiceManager, NSObject)
|
||||
|
||||
RCT_EXTERN_METHOD(initializeScreenShare)
|
||||
@end
|
||||
28
ios/ReactExported/ScreenShareServiceManager.swift
Normal file
28
ios/ReactExported/ScreenShareServiceManager.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// ScreenShareServiceManager.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import os
|
||||
|
||||
@objc(ScreenShareServiceManager)
|
||||
class ScreenShareServiceManager: NSObject {
|
||||
// Logger (these messages are displayed in the console application)
|
||||
private var logger = os.Logger(subsystem: "BigBlueButtonMobileSDK", category: "ScreenShareServiceManager")
|
||||
|
||||
// React native exposed method (called when user click the button to share screen)
|
||||
@objc func initializeScreenShare() -> Void {
|
||||
logger.info("initializeScreenShare")
|
||||
|
||||
// Request the system broadcast
|
||||
logger.info("initializeScreenShare - requesting broadcast")
|
||||
SystemBroadcastPicker.requestBroadcast()
|
||||
|
||||
let eventName = ReactNativeEventEmitter.EVENT.onBroadcastRequested.rawValue
|
||||
logger.info("initializeScreenShare - emitting event \(eventName)")
|
||||
ReactNativeEventEmitter.emitter.sendEvent(withName: eventName, body: nil);
|
||||
}
|
||||
|
||||
}
|
||||
13
ios/ReactExported/SystemBroadcastPickerManager.m
Normal file
13
ios/ReactExported/SystemBroadcastPickerManager.m
Normal file
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// SystemBroadcastPickerManager.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
#import "React/RCTViewManager.h"
|
||||
|
||||
@interface RCT_EXTERN_REMAP_MODULE(BBBN_SystemBroadcastPicker, SystemBroadcastPickerManager, RCTViewManager)
|
||||
|
||||
+ (BOOL)requiresMainQueueSetup { return YES; }
|
||||
|
||||
@end
|
||||
67
ios/ReactExported/SystemBroadcastPickerManager.swift
Normal file
67
ios/ReactExported/SystemBroadcastPickerManager.swift
Normal file
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// SystemBroadcastPicker.swift
|
||||
//
|
||||
// Created by Tiago Daniel Jacobs on 11/03/22.
|
||||
//
|
||||
|
||||
import ReplayKit
|
||||
import os
|
||||
|
||||
@objc(SystemBroadcastPickerManager)
|
||||
class SystemBroadcastPickerManager: RCTViewManager {
|
||||
override func view() -> (SystemBroadcastPicker) {
|
||||
return SystemBroadcastPicker();
|
||||
}
|
||||
}
|
||||
|
||||
class SystemBroadcastPicker : UIView {
|
||||
|
||||
// Logger (these messages are displayed in the console application)
|
||||
private var logger = os.Logger(subsystem: "BigBlueButtonMobileSDK", category: "SystemBroadcastPicker")
|
||||
|
||||
// Reference to the broadcast screen picker
|
||||
private static var broadcastPicker: RPSystemBroadcastPickerView?
|
||||
|
||||
//initWithFrame to init view from code
|
||||
override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
self.translatesAutoresizingMaskIntoConstraints = false
|
||||
setupView()
|
||||
}
|
||||
|
||||
//initWithCode to init view from xib or storyboard
|
||||
required init?(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
setupView()
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds RPSystemBroadcastPickerView to the view
|
||||
*/
|
||||
private func setupView() {
|
||||
logger.info("Initializing SystemBroadcastPickerManager")
|
||||
let pickerFrame = CGRect(x: 30, y: 30, width: 100, height: 100)
|
||||
SystemBroadcastPicker.broadcastPicker = RPSystemBroadcastPickerView(frame: pickerFrame)
|
||||
SystemBroadcastPicker.broadcastPicker?.showsMicrophoneButton=false
|
||||
SystemBroadcastPicker.broadcastPicker?.isHidden=true
|
||||
SystemBroadcastPicker.broadcastPicker?.translatesAutoresizingMaskIntoConstraints = false
|
||||
SystemBroadcastPicker.broadcastPicker?.preferredExtension = BigBlueButtonSDK.getBroadcastExtensionBundleId()
|
||||
|
||||
self.addSubview(SystemBroadcastPicker.broadcastPicker!)
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatize the action of broadcast picker click
|
||||
*/
|
||||
public static func requestBroadcast(/*data*/) {
|
||||
// write the data that will be accessed from broadcast application
|
||||
DispatchQueue.main.async {
|
||||
for view in broadcastPicker?.subviews ?? [] {
|
||||
if let button = view as? UIButton {
|
||||
button.sendActions(for: .allEvents)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
10
package.json
10
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bigbluebutton-mobile-sdk",
|
||||
"version": "0.1.0",
|
||||
"version": "0.1.8",
|
||||
"description": "This repository contains BigBlueButton react-native component, that's used in our [sample implementation](https://github.com/bigbluebutton/bigbluebutton-mobile).",
|
||||
"main": "lib/commonjs/index",
|
||||
"module": "lib/module/index",
|
||||
@@ -12,6 +12,7 @@
|
||||
"lib",
|
||||
"android",
|
||||
"ios",
|
||||
"common",
|
||||
"cpp",
|
||||
"bigbluebutton-mobile-sdk.podspec",
|
||||
"!lib/typescript/example",
|
||||
@@ -38,7 +39,7 @@
|
||||
],
|
||||
"repository": "https://github.com/bigbluebutton/bigbluebutton-mobile-sdk",
|
||||
"author": "BigBlueButton Inc <bigbluebutton@bigbluebutton.org> (https://bigbluebutton.org)",
|
||||
"license": "MIT",
|
||||
"license": "LGPL-3.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/bigbluebutton/bigbluebutton-mobile-sdk/issues"
|
||||
},
|
||||
@@ -62,7 +63,7 @@
|
||||
"pod-install": "^0.1.0",
|
||||
"prettier": "^2.0.5",
|
||||
"react": "16.13.1",
|
||||
"react-native": "0.63.4",
|
||||
"react-native": "^0.67.2",
|
||||
"react-native-builder-bob": "^0.18.0",
|
||||
"release-it": "^14.2.2",
|
||||
"typescript": "^4.1.3"
|
||||
@@ -143,5 +144,8 @@
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"react-native-webview": "^11.17.2"
|
||||
}
|
||||
}
|
||||
|
||||
12
sonar-project.properties
Normal file
12
sonar-project.properties
Normal file
@@ -0,0 +1,12 @@
|
||||
sonar.projectKey=bigbluebutton_bigbluebutton-mobile-sdk
|
||||
sonar.organization=bigbluebutton
|
||||
|
||||
# This is the name and version displayed in the SonarCloud UI.
|
||||
sonar.projectName=bigbluebutton-mobile-sdk
|
||||
sonar.projectVersion=1.0
|
||||
|
||||
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
|
||||
sonar.sources=.
|
||||
|
||||
# Encoding of the source code. Default is default system encoding
|
||||
sonar.sourceEncoding=UTF-8
|
||||
@@ -1,26 +1,38 @@
|
||||
import {
|
||||
requireNativeComponent,
|
||||
UIManager,
|
||||
Platform,
|
||||
ViewStyle,
|
||||
} from 'react-native';
|
||||
|
||||
const LINKING_ERROR =
|
||||
`The package 'bigbluebutton-mobile-sdk' doesn't seem to be linked. Make sure: \n\n` +
|
||||
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
||||
'- You rebuilt the app after installing the package\n' +
|
||||
'- You are not using Expo managed workflow\n';
|
||||
import { Platform, ViewStyle } from 'react-native';
|
||||
import React, { useRef } from 'react';
|
||||
import BBBN_SystemBroadcastPicker from './native-components/BBBN_SystemBroadcastPicker';
|
||||
import { WebView } from 'react-native-webview';
|
||||
import { handleWebviewMessage } from './webview/message-handler';
|
||||
|
||||
type BigbluebuttonMobileSdkProps = {
|
||||
color: string;
|
||||
url: string;
|
||||
style: ViewStyle;
|
||||
};
|
||||
|
||||
const ComponentName = 'BigbluebuttonMobileSdkView';
|
||||
const renderPlatformSpecificComponents = () =>
|
||||
Platform.select({
|
||||
ios: <BBBN_SystemBroadcastPicker />,
|
||||
android: null,
|
||||
});
|
||||
|
||||
export const BigbluebuttonMobileSdkView =
|
||||
UIManager.getViewManagerConfig(ComponentName) != null
|
||||
? requireNativeComponent<BigbluebuttonMobileSdkProps>(ComponentName)
|
||||
: () => {
|
||||
throw new Error(LINKING_ERROR);
|
||||
};
|
||||
export const BigbluebuttonMobile = ({
|
||||
url,
|
||||
style,
|
||||
}: BigbluebuttonMobileSdkProps) => {
|
||||
const webViewRef = useRef(null);
|
||||
|
||||
return (
|
||||
<>
|
||||
{renderPlatformSpecificComponents()}
|
||||
{
|
||||
<WebView
|
||||
ref={webViewRef}
|
||||
source={{ uri: url }}
|
||||
style={{ ...style }}
|
||||
onMessage={(msg) => handleWebviewMessage(webViewRef, msg)}
|
||||
applicationNameForUserAgent="BBBMobile"
|
||||
/>
|
||||
}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
36
src/methods/initializeScreenShare.tsx
Normal file
36
src/methods/initializeScreenShare.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
import { initializeScreenShare as nativeInitializeScreenShare } from '../native-components/BBBN_ScreenShareService';
|
||||
import nativeEmitter from '../native-messaging/emitter';
|
||||
|
||||
// Reference to the resolver of last call
|
||||
let resolve = (a: String) => {
|
||||
console.log(
|
||||
`default resolve function called, this should never happen: ${a}`
|
||||
);
|
||||
};
|
||||
|
||||
// Log a message when broadcast is requested
|
||||
nativeEmitter.addListener('onBroadcastRequested', () => {
|
||||
console.log(`Broadcast requested`);
|
||||
});
|
||||
|
||||
// Resolve promise when broadcast is started (this event means that user confirmed the screenshare)
|
||||
nativeEmitter.addListener('onBroadcastStarted', () => {
|
||||
resolve('null');
|
||||
});
|
||||
|
||||
// Entry point of this method
|
||||
function initializeScreenShare() {
|
||||
return new Promise((res, rej) => {
|
||||
// store the resolver for later call (when event is received)
|
||||
resolve = res;
|
||||
|
||||
try {
|
||||
// call native swift method that triggers the broadcast popup
|
||||
nativeInitializeScreenShare();
|
||||
} catch (e) {
|
||||
rej(`Call to nativeInitializeScreenShare failed`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export default initializeScreenShare;
|
||||
7
src/native-components/BBBN_ScreenShareService.tsx
Normal file
7
src/native-components/BBBN_ScreenShareService.tsx
Normal file
@@ -0,0 +1,7 @@
|
||||
import { NativeModules } from 'react-native';
|
||||
|
||||
const ScreenShareService = NativeModules.BBBN_ScreenShareService;
|
||||
|
||||
export function initializeScreenShare() {
|
||||
ScreenShareService.initializeScreenShare();
|
||||
}
|
||||
8
src/native-components/BBBN_SystemBroadcastPicker.tsx
Normal file
8
src/native-components/BBBN_SystemBroadcastPicker.tsx
Normal file
@@ -0,0 +1,8 @@
|
||||
import { HostComponent, requireNativeComponent } from 'react-native';
|
||||
interface Props {}
|
||||
|
||||
const BBBN_SystemBroadcastPicker: HostComponent<Props> = requireNativeComponent(
|
||||
'BBBN_SystemBroadcastPicker'
|
||||
);
|
||||
|
||||
export default BBBN_SystemBroadcastPicker;
|
||||
10
src/native-messaging/emitter.tsx
Normal file
10
src/native-messaging/emitter.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import * as reactNative from 'react-native';
|
||||
// ...
|
||||
const emitter: reactNative.EventEmitter =
|
||||
reactNative.Platform.OS === 'ios'
|
||||
? new reactNative.NativeEventEmitter(
|
||||
reactNative.NativeModules.ReactNativeEventEmitter
|
||||
)
|
||||
: reactNative.DeviceEventEmitter;
|
||||
|
||||
export default emitter;
|
||||
51
src/webview/message-handler.tsx
Normal file
51
src/webview/message-handler.tsx
Normal file
@@ -0,0 +1,51 @@
|
||||
import type { MutableRefObject } from 'react';
|
||||
import type { WebView, WebViewMessageEvent } from 'react-native-webview';
|
||||
import initializeScreenShare from '../methods/initializeScreenShare';
|
||||
|
||||
function observePromiseResult(
|
||||
webViewRef: MutableRefObject<WebView>,
|
||||
sequence: number,
|
||||
prom: Promise<any>
|
||||
) {
|
||||
prom
|
||||
.then((result: any) => {
|
||||
console.log(`Promise ${sequence} resolved!`, result);
|
||||
webViewRef.current.injectJavaScript(
|
||||
`window.nativeMethodCallResult(${sequence}, true ${
|
||||
result ? ',' + JSON.stringify(result) : ''
|
||||
});`
|
||||
);
|
||||
})
|
||||
.catch((exception: any) => {
|
||||
console.error(`Promise ${sequence} failed!`, exception);
|
||||
webViewRef.current.injectJavaScript(
|
||||
`window.nativeMethodCallResult(${sequence}, false ${
|
||||
exception ? ',' + JSON.stringify(exception) : ''
|
||||
});`
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
export function handleWebviewMessage(
|
||||
webViewRef: MutableRefObject<any>,
|
||||
event: WebViewMessageEvent
|
||||
) {
|
||||
const stringData = event?.nativeEvent?.data;
|
||||
|
||||
const data = JSON.parse(stringData);
|
||||
if (data?.method && data?.sequence) {
|
||||
let promise;
|
||||
switch (data?.method) {
|
||||
case 'initializeScreenShare':
|
||||
promise = initializeScreenShare();
|
||||
break;
|
||||
default:
|
||||
throw `Unknown method ${data?.method}`;
|
||||
}
|
||||
observePromiseResult(webViewRef, data.sequence, promise);
|
||||
} else {
|
||||
console.log(`Ignoring unknown message: $stringData`);
|
||||
}
|
||||
}
|
||||
|
||||
export default { handleWebviewMessage };
|
||||
Reference in New Issue
Block a user