拍乐云Pano Flutter SDK 全新发布,跨平台音视频开发更easy

在过去,每一个操做系统的应用需用特定的编程语言来编写,每一个客户端都须要单独开发,而如今咱们能够利用多种工具、框架进行跨平台开发。Flutter 就是其中最热门的一个,也是在线教育、社交泛娱乐、在线金融等行业场景中开发必不可少的。html

Flutter 是 Google推出的移动框架,使用 Flutter 能够快速构建跨平台、高质量的客户端应用。Pano 提供的语音通话、视频通话、互动白板、互动直播、云端录制能力,覆盖了 iOS、Android、Windows、macOS、Electron、Web 等多个平台。现在,Pano SDK 再添新成员,正式支持 Flutter,开发者经过一套代码便可轻松集成 iOS、Android 双平台实时互动音视频、互动白板等能力。android

Pano Flutter SDK 是基于 Pano SDK 封装的 Flutter Plugin,彻底开源,而且为了让开发者在使用时拥有与使用 Native SDK 类似的开发体验,大部分接口的名称与 Native SDK 保持了一致。本文将给你们介绍一下如何快速接入 Pano Flutter SDK。编程

准备工做

  • 拍乐云开发者帐户(经过拍乐云官网注册:https://www.pano.video/
  • Flutter 开发环境(SDK 版本 >= 1.20.0)

开始接入

获取一个 App ID 和临时 Token

首先咱们须要使用开发者帐户登录Pano控制台,建立应用,获取 App ID 和临时 Token,后面将会用到。(建立应用获取临时Token请参考文档:建立第一个应用:https://developer.pano.video/getting-started/firstapp/api

在应用中集成 Pano Flutter SDK

为了使用此插件, 添加 pano_rtc 到你的 pubspec.yaml 文件中:app

dependencies: ... pano_rtc: ">=0.9.0"

在项目目录中运行 packages get 命令:框架

flutter packages get

main.dart 中添加以下代码导入 pano_rtc编程语言

import 'package:pano_rtc/pano_rtc.dart';

使用上面获取的 App ID 初始化 RtcEngineKitide

class _MyAppState extends State<MyApp> {
  ...
   RtcEngineKit _engine;
  ...
   @override
   void initState() {
       super.initState();
       var config = RtcEngineConfig(appId, 'api.pano.video'); //使用 Pano 控制台建立应用 App ID        _engine = await RtcEngineKit.engine(config);
  }
}

加入频道,开启音视频通话

设置 EventHandler 接收应用须要的事件回调:工具

_engine.setEventHandler(RtcEngineEventHandler(
   onChannelJoinConfirm: (ResultCode result) {
       //加入Channel成功   },
  ...
});

加入频道须要上面获取的临时 Token,在初始化 RtcEngineKit 成功后:ui

var token = ''; // 输入临时 Token var channelId = ''; // 输入自定义频道 ID var userId = ; // 输入自定义 User ID var config = RtcChannelConfig();
config.mode = ChannelMode.Meeting, // 频道模式:OneOnOne 一对一模式,Meeting 多人模式 config.serviceFlags = const {
   ChannelService.Media
}; // serviceFlags 频道标志:Media 音视频, Whiteboard 白板 config.subscribeAudioAll = true, // 自动订阅音频,能够配置为 false 来主动订阅音频 config.userName = ''; //输入 User Name _engine.joinChannel(token, channelId, userId, config: config);

更新 build 方法,添加 RtcSurfaceView Widget,并保存 RtcSurfaceViewModel 对象:

RtcSurfaceViewModel _viewModel;
...
@override
Widget build(BuildContext context) {
   return MaterialApp(
      ...
       RtcSurfaceView(onViewCreated: ((viewModel) {
           setState(() {
               _viewModel = viewModel;
          });
      })),
      ...
  );
}

加入频道成功后,开启音视频:

_engine.startAudio();
_engine.startVideo(_viewModel);

执行 run 命令启动应用程序。

flutter run

设备权限

Pano SDK 须要 摄像头麦克风 权限来开始视频通话。

Android

打开 AndroidManifest.xml 文件而且添加必备的权限到此文件中.

<manifest>
  ...
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.CAMERA" />
   <uses-permission android:name="android.permission.RECORD_AUDIO" />
   <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
   <uses-permission android:name="android.permission.BLUETOOTH" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-feature android:name="android.hardware.camera" />
   <uses-feature android:name="android.hardware.camera.autofocus" />
  ...
</manifest>

iOS

打开 info.plist 文件而且添加:

  • Privacy - Microphone Usage Description,而且在 Value 列中添加描述。
  • Privacy - Camera Usage Description, 而且在 Value 列中添加描述。

应用能够在后台运行音视频通话,前提是你开启了后台模式。在 Xcode 中选择你的 app target,点击 Capabilities 标签,开启 Background Modes,而且勾选 Voice over IP。咱们的 SDK 使用 PlatformView,你须要设置 io.flutter.embedded_views_previewYES 在你的 info.plist 中。

结语

以上 SDK 源代码均开源,你能够在咱们官方网页进行下载和体验。Flutter SDK 相关连接:
https://www.pano.video/downlo...

关注拍乐云Pano,咱们将为你们分享更多关于 Flutter 的开发经验,以及基于 Pano Flutter SDK 开发的详细教程。

相关文章
相关标签/搜索