Flutter - InAppWebView 中的 Jitsi Meet 回调

Posted

技术标签:

【中文标题】Flutter - InAppWebView 中的 Jitsi Meet 回调【英文标题】:Flutter - Jitsi Meet Call backs in inAppWebView 【发布时间】:2021-08-07 07:58:52 【问题描述】:

我需要在 webview 中为我们的 Flutter 应用程序集成 Jitsi Meet。最初我使用以下 jitsi-meet 插件“https://pub.dev/packages/jitsi_meet”,但不幸的是,由于缺少 jitsi 等功能,不得不切换到 InAppwebview 插件“https://pub.dev/packages/flutter_inappwebview” jitsi-meet 插件中互联网掉线和参与者信息后重新连接。我已成功将 jitsi 集成到 webview 中,但不知道如何包含 jitsi 回调,如 onConferenceJoined、onParticipantLeft 等。任何帮助将不胜感激

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:permission_handler/permission_handler.dart';

Future main() async 
  WidgetsFlutterBinding.ensureInitialized();
  await Permission.camera.request();
  await Permission.microphone.request();

  runApp(MyApp());


class MyApp extends StatefulWidget 
  @override
  _MyAppState createState() => new _MyAppState();


class _MyAppState extends State<MyApp> 
@override
Widget build(BuildContext context) 
return MaterialApp(home: InAppWebViewPage());



class InAppWebViewPage extends StatefulWidget 
@override
_InAppWebViewPageState createState() => new _InAppWebViewPageState();


class _InAppWebViewPageState extends State<InAppWebViewPage> 
  InAppWebViewController _webViewController;

 @override
Widget build(BuildContext context) 
return Scaffold(
    appBar: AppBar(title: Text("InAppWebView")),
    body: Container(
        child: Column(children: <Widget>[
      Expanded(
        child: Container(
          child: InAppWebView(
              initialUrl: "https://meet.jit.si/hello",
              initialOptions: InAppWebViewGroupOptions(
                crossPlatform: InAppWebViewOptions(
                  mediaPlaybackRequiresUserGesture: false,
                  debuggingEnabled: true,
                ),
              ),
              onWebViewCreated: (InAppWebViewController controller) 
                _webViewController = controller;
              ,
              androidOnPermissionRequest:
                  (InAppWebViewController controller, String origin,
                      List<String> resources) async 
                return PermissionRequestResponse(
                    resources: resources,
                    action: PermissionRequestResponseAction.GRANT);
              ),
        ),
      ),
    ])));


【问题讨论】:

【参考方案1】:

很抱歉,您无法通过 webview 访问此类功能,因为当您访问完整的 webview 时,它类似于以用户身份在浏览器上打开站点。您可以使用 Jitsi SDK 或插件来修改设置。

建议:使用你之前用过的jitsi meet plugin,它已经有你想要的功能了:

onConferenceWillJoin    Meeting is loading.
onConferenceJoined  User has joined meeting.
onConferenceTerminated  User has exited the conference.
onPictureInPictureWillEnter User entered PIP mode.
onPictureInPictureTerminated    User exited PIP mode.
onError Error has occurred with listening to meeting events.

但是没有参与者信息的功能。但是您可以通过托管自己的 jitsi 服务器来实现这一切,这将允许您自定义它或直接在您的自定义域上进行此类设置,以便您可以在应用程序上通过 webview 轻松访问。

我已经使用这个插件很长时间了,并制作了一个在 play store 上发布的应用程序。看看你有没有类似的东西?应用名称Just Meet。如果你想要这样,那么我可以帮助你完成我的回购。

【讨论】:

以上是关于Flutter - InAppWebView 中的 Jitsi Meet 回调的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 加载url flutter_inappwebview

在flutter inappWebview中自动填充登录凭据

flutter_inappwebview本地https连接在flutter应用程序中被拒绝

java.lang.IllegalStateException:尝试创建未注册类型的平台视图:com.pichillilorenzo/flutter_inappwebview

如何在同一个inappwebview Flutter中打开弹窗?

Flutter Build Fails: InAppWebView error: package okhttp3 does not exist