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

Flutter 是 Google推出的移动框架,使用 Flutter 可以快速构建跨平台、高质量的客户端应用。Pano 提供的语音通话、视频通话、互动白板、互动直播、云端录制能力,覆盖了 iOS、Android、Windows、macOS、Electron、Web 等多个平台。如今,Pano SDK 再添新成员,正式支持 Flutter,开发者通过一套代码即可轻松集成 iOS、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/)

在应用中集成 Pano Flutter SDK

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

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

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

flutter packages get

在 main.dart 中添加如下代码导入 pano_rtc

import 'package:pano_rtc/pano_rtc.dart';

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

class _MyAppState extends State<MyApp> {...RtcEngineKit _engine;...@overridevoid 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 成功后:

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_preview 为 YES 在你的 info.plist 中。

结语

以上 SDK 源代码均开源,你可以在我们官方网页进行下载和体验。Flutter SDK 相关链接:

下载 - 拍乐云Pano_高清实时音视频通信云​www.pano.video

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

Pano Flutter SDK 全新发布,跨平台音视频开发更easy相关推荐

  1. 安卓音视频开发(1)—— 三种方式绘制图片

    作为应届生,刚入职公司,现在想从零开始学习一个全新的领域--音视频开发,仅此记录一下. ImageView绘制图片 这种常规的绘制图片方式,简单粗暴. String pathName = Enviro ...

  2. anyRTC Flutter SDK :全面实现跨平台音视频互动

    anyRTC SDK新增支持Flutter跨平台移动框架的方式接入,开发者基于anyRTC Flutter SDK可以简单高效的实现跨平台音视频和实时消息功能.下面先给大家介绍一下什么是Flutter ...

  3. ZEGO Flutter SDK 助力开发者高效实现跨平台音视频功能

    近日,即构科技SDK新增支持Flutter跨平台移动框架的方式接入,开发者基于ZEGO Flutter SDK可简单高效地实现跨平台音视频的功能. 一. 什么是Flutter Flutter是Goog ...

  4. 网易创新企业大会倒计时,云信将发布新一代音视频技术架构

    网易创新企业大会倒计时 4 天! 当下,科技创新已成为推动经济社会发展的主要力量,运用创新技术构建前瞻性业务模式.提高业务增长成为各大企业生存和发展的重要着力点. 对此,网易旗下一站式企业服务提供商网 ...

  5. 手机音视频应用开发(专注于Symbian、iPhone、Android等跨平台音视频应用开发方案)

    一款好的手机应用, 能让用户在第一分钟就爱上他, 一款烂的手机应用, 能让用户在第一分钟就要卸载它.  好的应用必须的稳定.快速.市场日益激励,一个项目的周期是一个漫长的过程,投入的时间.精力.费用. ...

  6. 发布新一代音视频技术架构,网易云信夯实头部玩家地位

    今年,在疫情影响下,不少企业开始真正习惯于通过音视频等非接触式工具为长效市场增加动力,这让音视频赛道变得更加热闹.在激烈的角逐中想要脱颖而出,音视频企业需要同时攻克构建底层技术.打通场景化应用,实现客 ...

  7. 华为云发布实时音视频行业加速器,为企业解决技术与商业双重难题

    本文分享自华为云社区<华为云发布实时音视频行业加速器,为企业解决技术与商业双重难题>,作者:技术火炬手. 戴口罩.做核酸.亮健康码--持续了两年多的疫情,悄然间改变了所有人的日常生活,同时 ...

  8. linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用

    Linux平台音视频开发和音视频SDK应用 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码标准 ...

  9. ZEGO教程:如何通过electron构建桌面跨平台音视频应用

    近年来,视频直播.短视频.在线教育.在线医疗.人工智能.以及VR等视频领域的相关行业都非常热门,成为大众瞩目的焦点.而5G网络的相继普及,移动网速飞速提升,又将引起下一轮视频应用的革命. 可以看到,在 ...

最新文章

  1. 如何将json格式的string字符串转换为string数组
  2. OSS- OSS brower 登陆失败
  3. Leetcode 23 合并k个升序链表 (每日一题 20210722)
  4. Windows服务器版本简介
  5. 以己之矛攻己之盾,腾讯做陌生人社交,意在抖音?
  6. WeTest功能优化第3期:业内首创,有声音的云真机
  7. office图标修复工具_买电脑送Office,可你知道怎样才算用上吗?
  8. C++基础::运算符重载
  9. 廖雪峰Python教程学习笔记
  10. Altova XMLspy安装简易步骤
  11. 谷歌搜索没有相机图标_关于Google图片网站不能以图搜图的解决方案
  12. java 利用工具包Geotools实现不同坐标系之间坐标转换
  13. 安卓 网络工具_小米公布MIUI适配计划,支持10台机型升级安卓Q,9款今年内测
  14. sql数据库连接字符串(Persist Security Info)
  15. First part of my Spring posts is refreshed
  16. 拐点检测常用算法总结
  17. Anaconda安装下载-亲测详细版
  18. jQuery.Ajax下载文件
  19. linux dd 编辑,Vim编辑器中,在命令模式下的dd命令是用来( )。
  20. 重庆市市长胡衡华会见深兰科技董事长陈海波一行

热门文章

  1. phpmail通过qq发邮箱失败_请问phpmailer发送Gmail总是失败是什么原因,qq邮件可以发送出去...
  2. 五岁的瑞幸:如何越坎重生?
  3. 马斯克指定接班人?传特斯拉大中华区CEO朱晓彤接任全球CEO,官方疑否认
  4. 计算机怎黑夜模式么启动,Win10系统电脑夜间模式怎么开启/关闭的方法
  5. Unexpected token o in JSON at position 1 at JSON.parse (anonym)
  6. 吴恩达 深度神经网络,吴恩达神经网络课程
  7. 10种方式卸掉感情垃圾
  8. 第一个人10岁,第二个比第一个大2岁,以此类推,递归求第8个人的年龄
  9. ISAPI摘要认证,java代码怎么写
  10. VFP获取微信小程序用户openID,易如反掌