Future<bool> _startForegroundTask() async {
// You can save data using the saveData function.
await FlutterForegroundTask.saveData(key: 'customData', value: 'hello');
// Register the receivePort before starting the service.
final ReceivePort? receivePort = FlutterForegroundTask.receivePort;
final bool isRegistered = _registerReceivePort(receivePort);
if (!isRegistered) {
print('Failed to register receivePort!');
return false;
}
if (await FlutterForegroundTask.isRunningService) {
return FlutterForegroundTask.restartService();
} else {
return FlutterForegroundTask.startService(
notificationTitle: '正在运行',
notificationText: '点击进入房间${_roomDetailData.room.roomName??''}',
// callback: startCallback,
);
}
}
tencent_trtc_cloud 卡麦,开直播的时候,几分钟没声音
写一份服务,在后台运行。
1、部分手机,开麦没有声音。
2、掉麦。
app长时间不操作,会掉麦,但不会退出房间。
用户可以听到声音,但是不在麦上,用户无法给其刷钱。 :推出直播间,重新进去就好了
自己在麦上,但是其他用户看不到,导致用户看不到。
解决方案:
退后台后,开启前台服务(service),或者悬浮框
Base.dart 配置服务器相关信息:
api 服务:
h5, oss:
定义了 语音全局操作:
service.dart 定义销毁房间:
lib\chat\VoiceChatRoomPage.dart 聊天界面
这里定义了大部分语音操作,
参考项目:
https://github.com/LiteAVSDK/TRTC_Flutter
flutter_foreground_task 插件使用:
第一步:增加权限
权限检测:
第二步 lib\chat\VoiceChatRoomPage.dart 中启动服务:
_initForeground 函数中 FlutterForegroundTask.init 初始化一个前台服务,该方法在 initState 启动时调用。
然后一个启动服务函数 _startForegroundTask:
该函数在隐藏直播间的时候执行,启动服务:
结束服务:
服务回调函数,直播在后台运行,新建MyTaskHandler 继承TaskHandler :