Clan Meeting – Flutter 集成

请确保您的应用已添加移动应用所需的权限。我们使用 Flutter InAppWebView 进行此集成。

Flutter 特定权限

将以下内容添加到您的 _AndroidManifest.xml_ 文件中。

<!-- Webview -->
<provider
    android:name="com.pichillilorenzo.flutter_inappwebview.InAppWebViewFileProvider"
    android:authorities="${applicationId}.flutter_inappwebview.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

添加以下软件包所需的权限

Flutter Downloader 相关代码是可选的,仅在您希望共享的文件在应用内下载时才需要。如果您不包含 Flutter Downloader,则文件将使用默认的移动浏览器下载。包页面上列出的必需权限对于在您的应用内下载共享文件是必需的。

https://pub.dev/packages/flutter_downloader

URL Launcher 用于打开聊天中粘贴的 URL。

https://pub.dev/packages/url_launcher

包含软件包

将以下内容添加到您的 _pubspec.yaml_ 文件中。

flutter_inappwebview: ^5.3.2
permission_handler: ^8.3.0
url_launcher: ^6.0.13
wakelock: ^0.5.6
path_provider: ^2.0.7
flutter_downloader: ^1.7.1

创建/加入会议

编辑 _main.dart_ 中的以下内容。创建会议和加入会议之间没有区别。一旦第一个参与者加入,会议就会创建,并在最后一个参与者离开时销毁。

void _joinMeeting() async {
  const String domain = 'try.clanmeeting.com';
  const String consumerId = 'colacoca';
  String roomName = Utility.randomString(10);
  const String displayName = 'John Doe';

请记住请求相机和麦克风权限

已包含在示例 _main.dart_ 中

// Request for camera and microphone permissions
await Permission.camera.request();
await Permission.microphone.request();

WebView 选项

已包含在示例 _clanmeeting.dart_ 中

InAppWebViewGroupOptions(
  crossPlatform: InAppWebViewOptions(
    clearCache: true,
    javaScriptCanOpenWindowsAutomatically: true,
    mediaPlaybackRequiresUserGesture: false, // important
  ),
  android: AndroidInAppWebViewOptions(
    supportMultipleWindows: true,
    useHybridComposition: true, // important
  ),
  ios: IOSInAppWebViewOptions(
    allowsInlineMediaPlayback: true, // important
  )
);

GitHub

查看 Github