React Native library for using the Vonage Video API.
This library is now officially supported by Vonage.
-
Install node.js
-
Install and update Xcode (you will need a Mac). (See the React Native iOS installation instructions.)
-
Install and update Android Studio. (See the React Native Android installation instructions.)
See the system requirements for the OpenTok Android SDK and OpenTok iOS SDK. (The OpenTok React Native SDK has the same requirements for Android and iOS.)
-
In your terminal, change into your React Native project's directory.
-
Add the library using
npm
oryarn
:
npm install @vonage/client-sdk-video-react-native
yarn add @vonage/client-sdk-video-react-native
-
Install the iOS pods:
npx pod-install
-
For React Native versions prior to 0.60:
-
Add this to your Podfile:
target '<YourProjectName>' do # Pods for <YourProject> pod 'VonageClientSDKVideoMacOS', '2.28.2' end
-
Run
react-native link @vonage/client-sdk-video-react-native
.
These steps are not necessary in React Native version 0.60 and later.
-
-
Ensure you have enabled both camera and microphone usage by adding the following entries to the
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>
When you create an archive of your app, the privacy manifest settings required by Apple's App store are added automatically with this version of the OpenTok React Native SDK.
-
If your app will use the
OTPublisher.setVideoTransformers()
orOTPublisher.setAudioTransformers()
method, you need to include the following in your Podfile:pod 'VonageClientSDKVideoTransformers'
If you try to archive the app and it fails, please do the following:
-
Go to Target.
-
Click Build Phases.
-
Under the Link Binary With Libraries section, remove
libOpenTokReactNative.a
and add it again.
-
In your terminal, change into your project directory.
-
For React Native versions prior to 0.60:
- Run
react-native link @vonage/client-sdk-video-react-native
This step is not necessary in React Native version 0.60 and later.
- Run
-
Run
bundle install
. -
Make sure the following in your app's gradle
compileSdkVersion
,buildToolsVersion
,minSdkVersion
, andtargetSdkVersion
are greater than or equal to versions specified in the Vonage Video React library. -
For older Android devices, add the following permissions to the
AndroidManifest.xml
file:-
android.permission.BLUETOOTH
-- The default audio device supports Bluetooth audio. If your app does not use the default audio device and does not use Bluetooth, you can remove this permission. -
android.permission.BLUETOOTH_CONNECT
-- You need to enable this for API level 31 and above. If you want to use the Bluetooth device with Android SDK DefaultAudioDevice targeting API level 31 and above, please ask for runtime permissions in the app or enable the ("Nearby devices/Bluetooth") permission manually in the app settings. -
android.permission.BROADCAST_STICKY
-- We have determined that this is unused by the Vonage Video Android SDK, and we will remove this permission from an upcoming release. -
android.permission.CAMERA
-- If your app does not use the default video capturer and does not access the camera, you can remove this permission. -
android.permission.INTERNET
-- Required. -
android.permission.MODIFY_AUDIO_SETTINGS
-- If your app does not use the default audio device and does not access the microphone, you can remove this permission. -
android.permission.READ_PHONE_STATE
-- The Vonage Video Android SDK requests this permission in API level 22 and lower, and 31 and above. -
android.permission.RECORD_AUDIO
-- If your app does not use the default audio device and does not access the microphone, you can remove this permission.
For newer versions of Android —
API Level 23
(Android 6.0) and later — you do not need to add these to your app manifest. The Vonage Video React Native SDK adds them automatically. However, if you use Android 21+, certain permissions require you to prompt the user.Your app can remove any of these permissions that will not be required. See this post and this Android documentation. For example, this removes the
android.permission.CAMERA
permission:<uses-permission android:name="android.permission.CAMERA" tools:node="remove"/>
-
-
If your app will use the
OTPublisher.setVideoTransformers()
orOTPublisher.setAudioTransformers()
method, you need to include the following in your app/build.gradle file:implementation "com.vonage:client-sdk-video-transformers:2.28.0"
Bintray support has ended (official announcement: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/). In your app build.gradle file you need to remove reference to jcenter
and replace it with mavenCentral
. Example:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
...
repositories {
google()
mavenCentral()
}
...
}
allprojects {
repositories {
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
mavenCentral {
// We don't want to fetch react-native from Maven Central as there are
// older versions over there.
content {
excludeGroup "com.facebook.react"
}
}
google()
maven { url 'https://www.jitpack.io' }
}
}
See the docs.
To see this library in action, check out the opentok-react-native-samples repo. Important: These samples were written for the OpenTok version of the React Native client SDK for Vonage Video. You will need to modify references the sample apps to work with this version of the client SDK (@vonage/client-sdk-video-react-native) for use with Vonage applications:
-
In the source code, change
opentok-react-native
references to@vonage/client-sdk-video-react-native
. -
For the
apiKey
prop of theOTSession
component, pass in a Vonage application ID (not an OpenTok API key or a Vonage API key).
Interested in contributing? We ❤️ pull requests! See the Contribution guidelines.
We love to hear from you so if you have questions, comments or find a bug in the project, let us know! You can either:
- Open an issue on this repository
- See https://api.support.vonage.com/hc/en-us/ for support options
- Tweet at us! We're @VonageDev on Twitter
- Or join the Vonage Developer Community Slack