#android #flutter #dart #flutter-web #jitsi
Вопрос:
Мне нужно интегрировать Jitsi Meet в webview для нашего приложения flutter. Изначально я использовал следующий плагин jitsi-meet «https://pub.dev/packages/jitsi_meet» но, к сожалению, пришлось переключиться на плагин InAppwebview «https://pub.dev/packages/flutter_inappwebview» из-за отсутствующих функций, таких как повторное подключение jitsi после отключения Интернета и информация об участнике в плагине 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, потому что при доступе к веб-просмотру это похоже на открытие сайта в браузере от имени пользователя. Вы можете использовать Jitsi SDK или плагины, которые позволяют изменять настройки.
Предложение: Используйте плагин jitsi meet, который вы использовали раньше, он уже имеет такие функции, которые вы хотите:
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. Проверьте это, у вас есть что-то похожее на это? название приложения Просто Знакомьтесь. Если вы хотите этого, то я могу помочь вам с моим репо.