此 Flutter 插件 是对 Agora 视频 SDK 的包装。
Agora.io 通过一个简单而强大的 SDK 为您提供了添加实时语音和视频通信的构建块。您可以集成此 SDK 以便在您自己的应用程序中快速实现实时通信。
为了使用此插件, 请添加 agora_rtc_engine
到您的 pubspec.yaml 文件中。
- 从 example 目录获取一些基础和高阶的参考示例。
Agora 视频 SDK 需要 摄像头
和 麦克风
权限来开始视频通话。
查看 AndroidManifest.xml 文件中已声明的权限。
<manifest>
...
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
tools:ignore="ProtectedPermissions" />
...
</manifest>
打开 Info.plist
文件并且添加:
Privacy - Microphone Usage Description
,并且在Value
列中添加描述。Privacy - Camera Usage Description
, 并且在Value
列中添加描述。
我们在 4.0.1 版本已经正式支持了空安全。 此版本不向下兼容,需要您的工程迁移至空安全,具体参考 迁移至空安全 。
暂不支持。
您可以从 agora_rtc_engine.podspec 文件中获取更多信息, 比如在 macOS 上的依赖库。
您可以从 CMakeLists.text 文件中获取更多信息, 比如在 Windows 上的依赖库。
我们使用 js 库实现 dart 对 JavaScript 的调用。
我们针对 Web SDK 有一个 AgoraRtcWrapper.bundle.js 包装库。
此包装库是 Iris-Rtc-Web 开源库的编译产物,它尝试将 Web SDK 接口映射成 Native SDK 接口,我们将其开源以便开发者定位和排查问题。
我们已将其作为 Git Submodule 导入到工程中,您可以在 web 目录中找到它。
在Android/iOS中与RtcEngine/AgoraRtcEngineKit交互
由于性能原因,agora_rtc_engine
暂时没有实现agora native(Android/iOS)
sdk的所有功能,如自定义音频采集和渲染
,自定义视频采集和渲染,原始音频数据等功能,agora_rtc_engine
提供RtcEnginePlugin/RtcEnginePlugin,允许你在Android/iOS代码中与Flutter端创建的RtcEngine交互,你可以继承RtcEnginePlugin/RtcEnginePlugin实现自己的插件,在onRtcEngineCreated
回调中获取RtcEngine/AgoraRtcEngineKit,请注意不要在Android/iOS中调用RtcEngine.destroy/AgoraRtcEngineKit.destroy方法,因为这会影响Flutter端的RtcEngine功能。如何使用RtcEnginePlugin
,请查看我们提供的音频自采集demo:
Android:CustomAudioPlugin.kt
iOS:CustmoAudioSourcePlugin.swift
请优先查看 Pinned issues 和在 Issues 中搜索。
在 Xcode 中选择您的 TARGET,点击 Signing & Capabilities
标签,开启 Background Modes
,并且勾选 Audio, AirPlay, and Picture in Picture
。
目前仅支持 Android 和 iOS。
目前仅支持 Web、macOS 和 Windows,暂不支持 Android 和 iOS。
重要信息
在 macOS 平台上你需要设置 AppGroup
并且作为参数在你调用 getScreenShareHelper
之前。
你可以参考 screen_sharing.dart 和 Apple doc
如果你有任何问题或建议,可以通过 issue 的形式反馈。
为了提升 SDK 的质量和易用性, 请参考我们的 贡献说明。
- 你可以先参阅 常见问题
- 如果你想了解更多官方示例,可以参考 官方 SDK 示例
- 如果你想了解声网 SDK 在复杂场景下的应用,可以参考 官方场景案例
- 如果你想了解声网的一些社区开发者维护的项目,可以查看 社区
- 若遇到问题需要开发者帮助,你可以到 开发者社区 提问
- 如果需要售后技术支持, 你可以在 Agora Dashboard 提交工单
示例项目遵守 MIT 许可证。