跑通示例项目
更新时间: 2024/08/23 15:20:48
在视频呼叫示例项目中使用了呼叫组件实现音视频呼叫。本文介绍如何快速跑通音视频呼叫的示例项目,体验音视频呼叫功能。
开发环境
示例项目对开发环境的要求如下所示:
环境要求 | 说明 |
---|---|
JDK 版本 | 1.8.0 及以上版本 |
Android API 版本 | API 21、Android 5.0 及以上版本 |
CPU 架构 | ARM64、ARMV7 |
IDE | Android Studio |
调试设备 | 运行 Android 系统 4.3 或以上版本的移动设备 |
依赖 | 依赖 Androidx,不支持 support 库 |
前提条件
在开始运行示例项目之前,请确保您已完成以下操作:
- 已 创建应用并获取应用的 App Key。
- 已开通以下服务,若未开通,请参考 开通服务 进行开通。
-
IM 即时通讯。当使用呼叫组件自带的话单功能时,需开通 IM。
-
信令。用于实现点对点呼叫邀请以及音视频通话。
-
音视频通话 2.0。用于实现实时音视频通话。
建议开通音视频通话的 调试模式 (鉴权方式),调试模式建议只在集成开发阶段使用,请在应用正式上线前改回安全模式。
-
如需要抄送,请提前开通消息抄送中的 话单 抄送服务,实现在一通通话结束后,发送事件通知消息,标记此次通话是否接通以及通话时间、类型等数据。
-
操作步骤
- 示例源码仅供开发者接入参考,实际应用开发场景中,请结合具体业务需求修改使用。
- 若您计划将源码用于生产环境,请确保应用正式上线前已经过全面测试,以免因兼容性等问题造成损失。
- 示例代码中包含业务登录逻辑,如果您的业务中需要使用登录相关功能,请修改登录相关的逻辑。
-
单击下载并解压缩 flutter-callkit-demo.zip。
-
进入示例代码文件夹,其中
lib
目录结构说明如下:Bash
├── lib Flutter 示例项目代码 │ └── main.dart 入口(项目 UI、账号配置) ├── android 安卓工程代码 │ └── app │ └── src │ └── ... │ └── call_kit_demo_flutter │ └── MainActivity.kt 安卓主页面(AppKey 等配置) │ └── SelfCustomCallActivity.kt 自定义通话页面(通话功能定制) ├── ios iOS 工程代码 │ └── Runner │
-
根据您在准备工作阶段获取的 AppKey,填入到下载的 Demo 工程文件:
-
安卓应用:在
flutter-callkit-demo/android/app/src/main/kotlin/com/example/call_kit_demo_flutter/MainActivity.kt
中,如下所示:Kotlin
class MainActivity : FlutterActivity() { private val logTag = "MainActivity" // 配置应用的 appKey private val appKey = "your appkey" // channel 名称 private val channelNameCall = "com.example.call_kit_demo_flutter/channel/call" ... }
-
iOS 应用:在
flutter-callkit-demo/ios/Runner/AppDelegate.swift
中,如下所示:Swift
@UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) NECallKitPlugin.register(with: registrar(forPlugin: "callkit")!) let appkey = "your appkey" let option = NIMSDKOption(appKey: appkey) NIMSDK.shared().register(with: option) let config = NESetupConfig() config.appkey = appkey let uiConfig = NECallUIKitConfig() uiConfig.config = config; NERtcCallKit.sharedInstance().timeOutSeconds = 30 NERtcCallUIKit.sharedInstance().customControllerClass = NECallViewController.self NERtcCallUIKit.sharedInstance().setup(with: uiConfig) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
-
-
配置登录账号时,您需要在
flutter-callkit-demo/lib/main.dart
文件中填入以下三种信息:-
accid:您的账号 ID
-
token:您的 Token 信息
-
被呼叫账号
Dart
// methodChannel 名称 const channelNameCall = "com.example.call_kit_demo_flutter/channel/call"; // 账号一 accId const account1 = ""; // 账号二 accId const account2 = ""; // 账号一 token const token1 = ""; // 账号二 token const token2 = "";
-
-
在工程根目录执行如下命令引入依赖。
bash
flutter pub get
-
在 IDE 环境中选中调试设备后,执行如下命令开始编译 Demo 项目:
bash
flutter run
-
(可选)可参考以下示例自定义界面。
-
示例一:开启通话前台服务
开启通话前台服务,可以避免被设备系统回收资源从而影响通话质量。您可以修改文件
flutter-callkit-demo/android/app/src/main/kotlin/com/example/call_kit_demo_flutter/SelfCustomCallActivity.kt
中的设置实现:Dart
class SelfCustomCallActivity : P2PCallFragmentActivity() { override fun provideUIConfig(callParam: CallParam?): P2PUIConfig { return P2PUIConfig.Builder() // 通话页面 UI 上不展示音视频切换按钮 .showAudio2VideoSwitchOnTheCall(false) // 通话页面 UI 上不展示视频音频切换按钮 .showVideo2AudioSwitchOnTheCall(false) // 设置自定义的通话界面 Fragment,主要为了展示呼叫或被叫的背景模糊大图 .customCallFragmentByKey(P2PCallFragmentType.VIDEO_CALLEE, CustomVideoCalleeFragment()) .customCallFragmentByKey(P2PCallFragmentType.VIDEO_CALLER, CustomVideoCallerFragment()) .customCallFragmentByKey( P2PCallFragmentType.VIDEO_ON_THE_CALL, CustomVideoOnTheCallFragment() ) .customCallFragmentByKey(P2PCallFragmentType.AUDIO_CALLER, CustomAudioCallerFragment()) .customCallFragmentByKey(P2PCallFragmentType.AUDIO_CALLEE, CustomAudioCalleeFragment()) .customCallFragmentByKey( P2PCallFragmentType.AUDIO_ON_THE_CALL, CustomAudioOnTheCallFragment() ) // 开启通话前台服务避免被系统回收资源 .enableForegroundService(true) // 设置通话前台服务的配置,包括通知栏图标、标题、内容 .foregroundNotificationConfig( CallKitNotificationConfig( R.mipmap.ic_launcher, null, "通话中", "正在通话中" ) ) .build() } }