@nuno-morais/nativescript-twilio
添加插件描述
npm i --save @nuno-morais/nativescript-twilio

Nativescript Twilio

此插件允许在 iOS 和 Android 上使用 Twilio 创建视频通话

它是如何工作的?

Twilio 必须验证用户才能让他们加入房间。您可以生成一个令牌并为他们选择一个房间以加入。

要求

  1. 在 twilio.com 上创建账户
  2. 创建一个可编程视频应用。您将收到一个 API 密钥、认证令牌和账户 SID。
  3. 这需要最低的服务器知识。我使用了 node。您可以在 https://www.twilio.com/docs/api/video/identity 找到更多指导,也可以在这里 https://github.com/TwilioDevEd/video-access-token-server-node

安装

ns plugin add @nuno-morais/nativescript-twilio

使用方法

  1. 在 AndroidManifest.xml 中
<uses-permission android:name="android.permission.CAMERA" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />
  1. 在 Info.plist 中
<key>NSCameraUsageDescription</key>
<string>Why are you requesting permissions for camera?</string>
<key>NSMicrophoneUsageDescription</key>
<string>Why are you requesting permissions for mic?</string>
  1. 创建一个视图

    3.1. Vanilla

    <twilio:VideoView row="0" id="local-video" ></twilio:VideoView>
    <twilio:VideoView row="1" id="remote-video" ></twilio:VideoView>

    3.2. Angular

    <TwilioVideoView #localVideoView row="0" id="local-video"></TwilioVideoView>
    <TwilioVideoView #remoteVideoView row="1" id="remote-video"></TwilioVideoView>
  2. 生成一个令牌

    async getToken(): Promise<string> {
    const userName = 'awesomename22';
    return await Http.getString({
    url: `https://251c4d52a840.ngrok.io/token?identity=${userName}`,
    method: 'GET',
    headers: { 'Content-Type': 'application/json' },
    }).catch((e) => {
    console.error(e);
    return null;
    });
    }
  3. 请求权限

    await VideoAudioPermissions.checkAll();

    const messageAudio = 'Message to request audio';
    const messageVideo = 'Message to request camera';

    await VideoAudioPermissions.requestAll(messageAudio, messageVideo);
  4. 创建一个 VideoActivity

        const localVideo = this.page.getViewById('local-video') as VideoView;
    const remoteView = this.page.getViewById('remote-video') as VideoView;
    this.videoActivity = new VideoActivity(localVideo, [remoteView]);
    this.videoActivity.connect('testing-room', token, { video: true, audio: true });

功能

  • startPreview(): Promise;
  • connect(room: string, accessToken: string, options: { video: boolean; audio: boolean }): Promise;
  • disconnect(): Promise;
  • mute();
  • unmute();
  • disableCamera();
  • enableCamera();
  • switchCamera();
  • subscribeOnRemoteParticipantConnect(fn: (participantName: string) => void);
  • subscribeOnRemoteParticipantDisconnect(fn: (participantName: string) => void);
  • subscribeOnLocalParticipantConnect(fn: (participantName: string) => void);
  • subscribeOnLocalParticipantDisconnect(fn: (participantName: string) => void);

许可

Apache 许可证版本 2.0