纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

WKWebview自动播放h5视频 WKWebview非全屏自动播放h5视频的实现方法(Swift、OC)

剑老师   2021-05-07 我要评论
想了解WKWebview非全屏自动播放h5视频的实现方法(Swift、OC)的相关内容吗剑老师在本文为您仔细讲解WKWebview自动播放h5视频的相关知识和一些Code实例欢迎阅读和指正我们先划重点:wkwebview,视频播放,wkwebview使用,wkwebview,h5下面大家一起来学习吧

前言

WKWebview加载一个视频播放的h5页面时默认是需要用户点击一下才能播放视频且视频播放时会全屏播放如果想要h5页面视频非全屏自动播放该怎么做呢?

Swift实现

这个时候就需要设置WKWebview的configuration参数我们先来看一下Swift的实现代码如下:

let configuration = WKWebViewConfiguration()
configuration.allowsInlineMediaPlayback = true
if #available(iOS 10.0, *) {
    configuration.mediaTypesRequiringUserActionForPlayback = .all
} else if #available(iOS 9.0, *){
    configuration.requiresUserActionForMediaPlayback = false
}else{
    configuration.mediaPlaybackRequiresUserAction = false
}
h5WebView = WKWebView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height, configuration: configuration)

非全屏播放比较简单设置configuration的allowsInlineMediaPlayback 属性为true就可以了当然h5端同样也要支持非全屏播放否则客户端设置此属性没有任何作用关于h5非全屏设置我们放最后单独说

要想实现自动播放视频在iOS8.0需要设置configuration的mediaPlaybackRequiresUserAction 属性为false但是从iOS 9.0开始此属性被废弃改为了requiresUserActionForMediaPlayback 所以iOS9.0 需要设置requiresUserActionForMediaPlayback 为false即可实现H5视频自动播放但是此属性在10.0之后又被废弃了系统api说明:

extension WKWebViewConfiguration {
//ios 9.0被废弃
    @available(iOS, introduced: 8.0, deprecated: 9.0)
    open var mediaPlaybackRequiresUserAction: Bool
//ios 10.0被废
    @available(iOS, introduced: 9.0, deprecated: 10.0)
    open var requiresUserActionForMediaPlayback: Bool
}

在iOS 10.0及之后系统版本苹果又引入了mediaTypesRequiringUserActionForPlayback 属性在Swift中此属性是一个WKAudiovisualMediaTypes结构体此结构体为我们提供了三个静态值分别为audio、video、allaudio则代表自动播放音频video代表自动播放视频all则代表音视频都可以自动播放WKAudiovisualMediaTypes结构体系统代码如下:

@available(iOS 10.0, *)
public struct WKAudiovisualMediaTypes : OptionSet {

    public init(rawValue: UInt)

    public static var audio: WKAudiovisualMediaTypes { get }

    public static var video: WKAudiovisualMediaTypes { get }

    public static var all: WKAudiovisualMediaTypes { get }
}

OC实现

讲完了Swift我们来讲objective-c

oc与Swift的参数区别不大iOS 8.0需要设置configuration的mediaPlaybackRequiresUserAction属性iOS 9.0需要设置configuration的requiresUserActionForMediaPlayback属性

iOS 10.0版本以后也是同swift一样需要设置mediaTypesRequiringUserActionForPlayback属性以上三个属性名字与Swift中完全一样

但是与swift不同的是在objective-c中mediaTypesRequiringUserActionForPlayback的属性是一个枚举且比Swift中多一个值如下系统代码:

typedef NS_OPTIONS(NSUInteger, WKAudiovisualMediaTypes) {
    WKAudiovisualMediaTypeNone = 0,
    WKAudiovisualMediaTypeAudio = 1 << 0,
    WKAudiovisualMediaTypeVideo = 1 << 1,
    WKAudiovisualMediaTypeAll = NSUIntegerMax
} API_AVAILABLE(macos(10.12), ios(10.0));

在此枚举中WKAudiovisualMediaTypeAudio、WKAudiovisualMediaTypeVideo、WKAudiovisualMediaTypeAll三个枚举值分别对应swift中的audio、video、all且与Swift中功能完全一致只是此枚举比Swift中的WKAudiovisualMediaTypes结构体多了一个值:WKAudiovisualMediaTypeNone在oc中如果mediaTypesRequiringUserActionForPlayback的值设置为WKAudiovisualMediaTypeNone则代表在h5中无论音视频都需要用户点击才能播放

oc中设置非全屏自动播放代码如下:

WKWebViewConfiguration * configuration = [[WKWebViewConfiguration alloc] init];
//设置非全屏播放
configuration.allowsInlineMediaPlayback = YES;
//不同系统版本适配可自行判断
configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeAll;
_webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) configuration:configuration];

H5非全屏播放

如果想要在App端的WKWebView中支持非全屏播放h5端和app端都必须做相应的设置上面我们讲了App端非全屏播放的方法最后我们来讲一下在h5端怎么设置

在h5中非全屏播放被称之为内联播放如果要支持内联播放需要在video标签设置playsinline属性为true但是playsinline仅支持iOS 10版本以上的系统iOS 10以前版本则需要设置webkit-playsinline属性代码:

<video playsinline="true" webkit-playsinline="true" controls="controls">
    <source src="http://xxx.mp4" type="video/mp4">
  </video>

总结


相关文章

猜您喜欢

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式