Flutter - webRTC 视频通话信号不起作用

Posted

技术标签:

【中文标题】Flutter - webRTC 视频通话信号不起作用【英文标题】:Flutter - webRTC Video Call signalling doesn't work 【发布时间】:2020-04-29 14:46:18 【问题描述】:

我可以使用 agora.io 库实现语音和视频通话,该库位于 https://www.agora.io/ && https://github.com/AgoraIO/Flutter-SDK

开始通话的过程是用户必须手动或自动加入用户定义的特定频道名称。这不是实际的方法。 有没有办法创建一个单独的信号系统(可能是使用,nodejs 套接字,firebase 或单信号通知?)

与之同时使用的同时/并行方式是什么? 或者什么是完整的替代方案?

【问题讨论】:

【参考方案1】:

Agora.io 不提供任何方法,除了手动传递频道名称或默认字符串。但是您可以做的是使用 Firebase 动态链接通过动态链接共享频道名称。此链接会将您重定向到您将频道名称作为输入的页面,并根据传递的参数填写频道名称。所以你的代码看起来像:

 class AgoraImpementation extends State<AgoraImplementation> 

  @override
  void initState() 
    super.initState();
    this.initDynamicLinks();
  

  initDynamicLinks(BuildContext context) async 
    await Future.delayed(Duration(seconds: 3));
    var data = await FirebaseDynamicLinks.instance.getInitialLink();
    var deepLink = data?.link;
    final queryParams = deepLink.queryParameters;
    if (queryParams.length > 0) 
      var channelName = queryParams['channel_name'];
      openFormScreen(channelName);
    
    FirebaseDynamicLinks.instance.onLink(onSuccess: (dynamicLink)
    async 
      var deepLink = dynamicLink?.link;
      final queryParams = deepLink.queryParameters;
      if (queryParams.length > 0) 
        var userName = queryParams['channel_name'];
        openFormScreen(channelName);
      
      debugPrint('DynamicLinks onLink $deepLink');
    , onError: (e) async 
      debugPrint('DynamicLinks onError $e');
    );
  

  openFormScreen(String userName)
    Navigator.of(context).pushNamed("routeFormScreen", arguments: "channelName": channelName);
  

【讨论】:

这听起来很有趣。如果我理解正确,其他用户必须点击链接,休息可以自动完成。当应用程序关闭并发出响铃警报时,我仍然无法在主屏幕上显示任何弹出窗口吗? 我相信 Firebase 动态链接会解决这个问题。

以上是关于Flutter - webRTC 视频通话信号不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何构建一个可以进行基本视频通话的简单 Native WebRTC Android 应用程序?

如何在 Flutter(Android 和 Ios)中实现与 WebRTC 的电话会议视频聊天

Flutter webrtc音频无法在android上运行

浅聊WebRTC视频通话

如何实现 iOS开发webrtc 视频通话时录像,截屏。

WebRTC音视频通话简单音视频通话