@7chairs/react-native-zoom 中文文档教程
react-native-zoom
这是 ZoomUS SDK 的桥梁:
- android: https://github.com/zoom/zoom-sdk-android
- ios: https://github.com/zoom/zoom-sdk-ios
在 XCode 11.5 和节点 12.18.1 上测试。
Getting started
$ npm i @7chairs/react-native-zoom
Installation
库将自动链接。
如果你有 react-native < 0.60
,查看Linking Guide
android
因为我们使用zoom sdk来自本地“./libs”文件夹的 android 版本 apk 无法打包。 因此,您需要执行以下步骤:
在 android studio 中转到:文件 -> 新建-> 新模块 -> 导入 .JAR/.AAR 包
导入 mobilertc.aar 和 commonlib.aar。 完成后,你应该在你的 android 根目录中将 'mobilertc' 和 'commonlib' 文件夹
添加到 settings.gradle
include ':mobilertc'
include ':commonlib'
project(':mobilertc').projectDir = file("./mobilertc")
project(':commonlib').projectDir = file("./commonlib")
iOS
确保你在 Info.plist 中有适当的描述:
NSCameraUsageDescription
NSMicrophoneUsageDescription
NSPhotoLibraryUsageDescription
Usage
import Zoom from "@7chairs/react-native-zoom";
// initialize minimal
await Zoom.initialize({
clientKey: "...",
clientSecret: "...",
});
// initialize with extra config
const { initialized } = await Zoom.initialize(
{
clientKey: "...",
clientSecret: "...",
domain: "zoom.us",
},
{
disableShowVideoPreviewWhenJoinMeeting: true,
}
);
// if (!initialized) get callback event for initialize results
Zoom.onInitResults(callback: RNZoomInitResultEventCallback)
// Start Meeting
await Zoom.startMeeting({
userName: "Johny",
meetingNumber: "12345678",
userId: "our-identifier",
zoomAccessToken: zak,
userType: 2, // optional
});
// Join Meeting
await Zoom.joinMeeting({
userName: "Joh",
meetingNumber: "12345678",
});
// Join Meeting with extra params
await Zoom.joinMeeting({
userName: "Joh",
meetingNumber: "12345678",
password: "1234",
participantID: "our-unique-id",
zoomAccessToken: "token",
noAudio: true,
noVideo: true,
});
// Join Meeting with zoom meeting url
await Zoom.joinMeetingWithWebUrl("<zoom_meeting_url>");
// Register event callback for join meeting status
Zoom.addMeetingStatusEventListener(callback: RNZoomMeetingStatusEventCallback);
// Unregister listener
Zoom.removeMeetingStatusEventListener();
In Meeting Events
import Zoom from "@7chairs/react-native-zoom";
// Get My User Meeting Info
await Zoom.getMyUserMeetingInfo(): Promise<RNZoomMyselfMeetingInfo>
// Register listener to inMeetingEvents
Zoom.addInMeetingEventListener((callback: RNZoomInMeetingEventCallback) => {
const { event, payload } = callback;
//...
});
// Unregister listener
Zoom.removeInMeetingEventListener();
events could be: [See iOS/Android SDK for more details]
"meeting.user.video.active";
"meeting.user.video.speaker";
"meeting.user.video.status";
"meeting.user.audio.status";
"meeting.user.joined";
"meeting.user.left";
FAQ
Does library support Expo?
你必须弹出你的 expo 项目才能使用这个库。
react-native-zoom
This is a bridge for ZoomUS SDK:
- android: https://github.com/zoom/zoom-sdk-android
- ios: https://github.com/zoom/zoom-sdk-ios
Tested on XCode 11.5 and node 12.18.1.
Getting started
$ npm i @7chairs/react-native-zoom
Installation
Library will be linked automatically.
If you have react-native < 0.60
, check Linking Guide
android
Since we use zoom sdk from local './libs' folder android release apk could not be packed. Therefore you will need to do this following steps:
in android studio go to: File -> New -> New Module -> Import .JAR/.AAR Package
import both mobilertc.aar and commonlib.aar. after doind so you should have in your android root directory both 'mobilertc' and 'commonlib' folders
add to settings.gradle
include ':mobilertc'
include ':commonlib'
project(':mobilertc').projectDir = file("./mobilertc")
project(':commonlib').projectDir = file("./commonlib")
iOS
Make sure you have appropriate description in Info.plist:
NSCameraUsageDescription
NSMicrophoneUsageDescription
NSPhotoLibraryUsageDescription
Usage
import Zoom from "@7chairs/react-native-zoom";
// initialize minimal
await Zoom.initialize({
clientKey: "...",
clientSecret: "...",
});
// initialize with extra config
const { initialized } = await Zoom.initialize(
{
clientKey: "...",
clientSecret: "...",
domain: "zoom.us",
},
{
disableShowVideoPreviewWhenJoinMeeting: true,
}
);
// if (!initialized) get callback event for initialize results
Zoom.onInitResults(callback: RNZoomInitResultEventCallback)
// Start Meeting
await Zoom.startMeeting({
userName: "Johny",
meetingNumber: "12345678",
userId: "our-identifier",
zoomAccessToken: zak,
userType: 2, // optional
});
// Join Meeting
await Zoom.joinMeeting({
userName: "Joh",
meetingNumber: "12345678",
});
// Join Meeting with extra params
await Zoom.joinMeeting({
userName: "Joh",
meetingNumber: "12345678",
password: "1234",
participantID: "our-unique-id",
zoomAccessToken: "token",
noAudio: true,
noVideo: true,
});
// Join Meeting with zoom meeting url
await Zoom.joinMeetingWithWebUrl("<zoom_meeting_url>");
// Register event callback for join meeting status
Zoom.addMeetingStatusEventListener(callback: RNZoomMeetingStatusEventCallback);
// Unregister listener
Zoom.removeMeetingStatusEventListener();
In Meeting Events
import Zoom from "@7chairs/react-native-zoom";
// Get My User Meeting Info
await Zoom.getMyUserMeetingInfo(): Promise<RNZoomMyselfMeetingInfo>
// Register listener to inMeetingEvents
Zoom.addInMeetingEventListener((callback: RNZoomInMeetingEventCallback) => {
const { event, payload } = callback;
//...
});
// Unregister listener
Zoom.removeInMeetingEventListener();
events could be: [See iOS/Android SDK for more details]
"meeting.user.video.active";
"meeting.user.video.speaker";
"meeting.user.video.status";
"meeting.user.audio.status";
"meeting.user.joined";
"meeting.user.left";
FAQ
Does library support Expo?
You have to eject your expo project to use this library.