{"id":22856028,"url":"https://github.com/voxeet/voxeet-uxkit-reactnative","last_synced_at":"2025-08-11T07:32:24.112Z","repository":{"id":42450308,"uuid":"159179994","full_name":"voxeet/voxeet-uxkit-reactnative","owner":"voxeet","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-13T20:58:48.000Z","size":655,"stargazers_count":11,"open_issues_count":23,"forks_count":12,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-04-20T16:55:50.369Z","etag":null,"topics":["android","dolbyio","ios","react-native","webrtc"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@voxeet/react-native-voxeet-conferencekit","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voxeet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-26T14:11:25.000Z","updated_at":"2023-07-06T11:07:14.000Z","dependencies_parsed_at":"2023-01-24T20:31:15.014Z","dependency_job_id":null,"html_url":"https://github.com/voxeet/voxeet-uxkit-reactnative","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxeet%2Fvoxeet-uxkit-reactnative","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxeet%2Fvoxeet-uxkit-reactnative/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxeet%2Fvoxeet-uxkit-reactnative/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxeet%2Fvoxeet-uxkit-reactnative/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxeet","download_url":"https://codeload.github.com/voxeet/voxeet-uxkit-reactnative/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229510818,"owners_count":18084444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","dolbyio","ios","react-native","webrtc"],"created_at":"2024-12-13T08:06:49.258Z","updated_at":"2024-12-13T08:06:49.971Z","avatar_url":"https://github.com/voxeet.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Voxeet UXKit React Native\n\n## SDK License agreement\n\nBefore using the react-native plugin, please review and accept the [Dolby Software License Agreement](SDK_LICENSE.md).\n\n## Getting started\n\nUse the following commands to install and configure the UXKit on React Native:\n\n```bash\nnpm install @voxeet/react-native-voxeet-conferencekit --save\nnpx react-native link @voxeet/react-native-voxeet-conferencekit\n```\n\n\u003e Note: For iOS and Android, you must perform some mandatory modifications to your project.\n\n## Mandatory modifications\n\n### iOS (react-native \u003e= 0.60)\n\n1. Open your Xcode workspace from YOUR_PROJECT/ios/YOUR_PROJECT.xcworkspace\n\n2. Go to your target settings and select 'Signing \u0026 Capabilities', then click '+ Capability', and click 'Background Modes'.\n    - Turn on 'Audio, AirPlay and Picture in Picture'  \n    - Turn on 'Voice over IP'\n\n    If you want to support CallKit (receiving incoming call when application is killed) with VoIP push notification, enable 'Push Notifications' (you will need to upload your [VoIP push certificate](https://developer.apple.com/account/ios/certificate/) to the [Dolby.io Dashboard](https://dolby.io/dashboard/)).\n\n3. For privacy permissions, add two new keys in the Info.plist:\n    - Privacy - Microphone Usage Description\n    - Privacy - Camera Usage Description\n\n4. Open a terminal and go to YOUR_PROJECT/ios.\n    ```bash\n    pod install\n    ```\n    If you are using react-native 0.64, there is a known bug from the FBReactNativeSpec library. You have to go into your Pods project in Xcode workspace, select FBReactNativeSpec target, and in the \"Build Phases\" section, drag and drop the \"[CP-User] Generate Specs\" step just under the \"Dependencies\" step (2nd position). You have to do this step after every pod install or pod update.\n\n5. Open your .xcworkspace project, navigate to Product \u003e Scheme \u003e Edit scheme \u003e Build \u003e and uncheck \"Parallelize Build\".\n\n### Android\n\n1. In `android/app/build.gradle`, add the maven repository and set the `minSdkVersion` to at least **21**.\n\n2. Insert the following lines inside the dependencies block in `android/app/build.gradle`:\n    **Warning: the SDK is only compatible with the Hermes engine**\n\n    ```gradle\n    project.ext.react = [\n        enableHermes: true,  // clean and rebuild if changing\n    ]\n    ```\n\n3. use gradle configuration's pickFirst for the libc++_shared.so in the `android/app/build.gradle` file\n\n    ```\n    android {\n      compileSdkVersion rootProject.ext.compileSdkVersion //just for reference\n\n      ...\n\n      packagingOptions {\n        pickFirst \"**/libc++_shared.so\"\n      }\n\n      ...\n    }\n    ```\n\n4. Open the `android/app/src/main/java/[...]/MainActivity.java` file: \n    \n    If you are using `Expo` you can skip this step.\n    \n    If your `MainActivity` extends `ReactActivity`, change from `MainActivity extends ReactActivity` to `MainActivity extends RNVoxeetActivity`. With the following import: `import com.voxeet.reactnative.specifics.RNVoxeetActivity`\n\n5. Note : if crashes occurs in debug mode, remove `debugImplementation` for any *flipper* library from the android/app/build.gradle + remove the java file in your debug/ folder. (the initializeFlipper method from the MainApplication can be removed as well)\n\n6. Bump the application environment to target Android API Level 33. Note: outdated libraries could be incompatible due to lack of android:exported flag (build \nerrors)\n\n```\n    ext {\n        buildToolsVersion = \"33.0.0\"\n        minSdkVersion = 21\n        compileSdkVersion = 33\n        targetSdkVersion = 33\n    }\n```\n\n## Usage\n\n```javascript\nimport { VoxeetSDK } from \"@voxeet/react-native-voxeet-conferencekit\";\n```\n\nNote: The VoxeetEvents is now deprecated and will disappear from the library itself.\n\n### Initialization\n\n```\nVoxeetSDK.initialize(appKey, appSecret);\n```\n\nor \n\n```\nVoxeetSDK.initializeToken(accessToken, () =\u003e {\n    return new Promise((resolve, reject) =\u003e {\n        ... //get the new accessToken\n        resolve(theNewAccessToken);\n    });\n});\n```\n\n### Open a session (+ check for conference to join)\n\n\nOnce the SDK is initialized, try to connect your current user as soon as possible.\n\n```\nawait VoxeetSDK.connect(new UserInfo(\"externalId\", \"name\", \"optAvatarUrl\"));\n```\n\nOnce the session is started, if an incoming call is accepted by the user, it is initiated right away.\n\n### Join and leave conferences\n\nUse the corresponding method to perform the action:\n\n```\nconst conference = await VoxeetSDK.create({ alias: \"yourConferenceAlias\" });\nawait VoxeetSDK.join(conference.conferenceId);\n```\n\nTo leave, use the following command:\n\n```\nawait VoxeetSDK.leave(conferenceId);\n```\n\n### Invite participants\n\n\n## Events\n\nYou can subscribe to events via the `addListener` (and unsubscribe via the corresponding `removeListener`) method in `VoxeetSDK.events`.\n\n### Example\n\n```\nimport { VoxeetSDK } from \"@voxeet/react-native-voxeet-conferencekit\";\nimport { ConferenceStatusUpdatedEvent } from \"@voxeet/react-native-voxeet-conferencekit\";\n\nconst onConferenceStatus = (event: ConferenceStatusUpdatedEvent) =\u003e {\n  console.warn(\"event received\", event);\n}\n\nVoxeetSDK.events.addListener(\"ConferenceStatusUpdatedEvent\", onConferenceStatus);\n```\n\n### ConferenceStatusUpdatedEvent\n\n- conferenceId: `string`\n- conferenceAlias: `string|undefined`\n- status: `ConferenceStatus`\n\n## Configuration\n\nDepending on your environment, you must configure your project according to the public documentation, [Voxeet UXKit iOS](https://github.com/voxeet/voxeet-uxkit-ios) and [Voxeet UXKit Android](https://github.com/voxeet/voxeet-uxkit-android).\n\n## Local build\n\nTo build locally the TypeScript definition, run the following command:\n\n```bash\nnpm run build-library\n```\n\nThe typescript command line needs local dev resolutions (available in the `package.json`).\n\n```bash\nnpm i -D @types/react ...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxeet%2Fvoxeet-uxkit-reactnative","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxeet%2Fvoxeet-uxkit-reactnative","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxeet%2Fvoxeet-uxkit-reactnative/lists"}