最近用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播放视频流图像和声音都有了。