最近用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播放視訊流影像和聲音都有了。