enx-rtc-react-native
Version:
It is a react native component for Enablex users.
115 lines (81 loc) • 4.52 kB
Markdown
# enx-rtc-react-native
## Getting started
## Pre-Requisites:
1. Install [node.js](https://nodejs.org/)
2. Install and update [Xcode](https://developer.apple.com/xcode/) (you will need a Mac)
* React Native iOS installation [instructions](https://facebook.github.io/react-native/docs/getting-started.html)
3. Install and update [Android Studio](https://developer.android.com/studio/index.html)
* React Native Android installation [instructions](https://facebook.github.io/react-native/docs/getting-started.html)
## Installation:
`$ npm install enx-rtc-react-native --save`
### Mostly automatic installation
`$ react-native link enx-rtc-react-native`
#### iOS Installation
**Note:** Please make sure to have [CocoaPods](https://cocoapods.org/) on your computer.
If you've installed this package before, you may need to edit your `Podfile` and project structure because the installation process has changed.
1. In you terminal, change into the `ios` directory of your React Native project.
2. Create a pod file by running: `pod init`.
3. Add the following to your pod file:
```
target '<YourProjectName>' do
# Pods for <YourProject>
pod 'EnxRTCiOS'
pod 'Socket.IO-Client-Swift', '~> 15.0.0'
end
```
4. In case if you want Autolinking then don't do step 3. Add following in podfile:
...
pod 'enx-rtc-react-native', :path => '../node_modules/enx-rtc-react-native/ios/RNEnxRtc.podspec'
...
5. Now run, `pod install`
6. After installing the EnxRTCiOS SDK, change into your root directory of your project.
7. Now run, `react-native link enx-rtc-react-native`.
8. Open `<YourProjectName>.xcworkspace` contents in XCode. This file can be found in the `ios` folder of your React Native project.
9. Click `File` and `New File`
10. Add an empty swift file to your project:
* You can name this file anything i.e: `EnxInstall.swift`. This is done to set some flags in XCode so the Swift code can be used.
11. Click `Create Bridging Header` when you're prompted with the following modal: `Would you like to configure an Objective-C bridging header?`
12. Ensure you have enabled both camera and microphone usage by adding the following entries to your `Info.plist` file:
```
<key>NSCameraUsageDescription</key>
<string>Your message to user when the camera is accessed for the first time</string>
<key>NSMicrophoneUsageDescription</key>
<string>Your message to user when the microphone is accessed for the first time</string>
```
If you try to archive the app and it fails, please do the following:
1. Go to Target
2. Click on Build Phases
3. Under the Link Binary With Libraries section, remove the libEnx.a and add it again
#### Android Installation
1. Open up `android/app/src/main/java/[...]/MainActivity.java`
- Add `import com.rnenxrtc.EnxRtcPackage;` to the imports at the top of the file
- Add `new EnxRtcPackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
```
include ':enx-rtc-react-native'
project(':enx-rtc-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/enx-rtc-react-native/android')
```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
```
compile project(':enx-rtc-react-native')
```
4. Add following permisions in Android Manifest file:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
## Usage
```javascript
import Enx from 'enx-rtc-react-native';
// TODO: What to do with the module?
Enx;
```
## Extra Notes
Check ExtraNotes file in case of any issue.