解決flutter中webview視訊流播放Android正常,ios下有聲音沒影像問題

曹斌同學發表於2021-08-02

最近用flutter開發一個通過webview進行視訊流播放的app,一開始用Android手機測試,一切都沒有問題,但在ios上執行時,發現視訊只有聲音沒有影像,於是開始查詢各種資料,基本都是這麼解答的:

需要在info.plist 中增加程式碼:

<key>io.flutter.embedded_views_preview</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
   <key>NSAllowsArbitraryLoads</key>
   <true/>
   <key>NSAllowsArbitraryLoadsInWebContent</key>
   <true/>
</dict>
複製程式碼

然後在初始化webview的時候,增加

allowsInlineMediaPlayback: true,
複製程式碼

但仍然沒有解決問題。

最後找了很多資料,找到解決方案

需要在初始化webview的時候,再增加一個引數

initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
複製程式碼

整體程式碼如下:

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class Browser extends StatelessWidget {
  const Browser({Key key, this.url, this.title}) : super(key: key);

  final String url;
  final String title;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: title != ''
          ? AppBar(
              title: Text(title),
            )
          : null,
      body: WebView(
          initialUrl: url,
          javascriptMode: JavascriptMode.unrestricted,
          allowsInlineMediaPlayback: true,
          initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow),
    );
  }
}
複製程式碼

至此,ios下webview播放視訊流影像和聲音都有了。

相關文章