1***@qq.com
1***@qq.com
  • 发布:2022-09-22 10:31
  • 更新:2022-09-22 10:31
  • 阅读:166

webview通讯导致ios视频全屏无法播放

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows

HBuilderX类型: 正式

HBuilderX版本号: 3.6.3

手机系统: iOS

手机系统版本号: iOS 12.1

手机厂商: 苹果

手机机型: iphone12

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<web-view :src="webViewUrl" @message="handleMessage"></web-view> // 父页面
<body>  
        <div id="player-con"></div>  
    </body>
    var skinLayout = [{  
            "name": "bigPlayButton",  
            "align": "cc",  
            "x": 0,  
            "y": 0  
        },  
        {  
            "name": "H5Loading",  
            "align": "cc"  
        },  
        {  
            "name": "errorDisplay",  
            "align": "tlabs",  
            "x": 0,  
            "y": 0  
        },  
        {  
            "name": "infoDisplay"  
        },  
        {  
            "name": "tooltip",  
            "align": "blabs",  
            "x": 0,  
            "y": 56  
        },  
        {  
            "name": "thumbnail"  
        },  
        {  
            "name": "controlBar",  
            "align": "blabs",  
            "x": 0,  
            "y": 0,  
            "children": [{  
                    "name": "progress",  
                    "align": "blabs",  
                    "x": 0,  
                    "y": 44  
                },  
                {  
                    "name": "playButton",  
                    "align": "tl",  
                    "x": 15,  
                    "y": 12  
                },  
                {  
                    "name": "timeDisplay",  
                    "align": "tl",  
                    "x": 10,  
                    "y": 7  
                }, {  
                    "name": "fullScreenButton",  
                    "align": "tr",  
                    "x": 10,  
                    "y": 12  
                }  
            ]  
        }  
    ]  
function initPlayer() {  
        playerInit = new Aliplayer({  
            id: "player-con",  
            source: source,  
            width: "100%",  
            height: "200px",  
            autoplay: false,  
            preload: false,  
            skinLayout: skinLayout,  

        }, (player) => {  

            player.on('ready', () => {  

            })  
            player.on('play', () => {  
                console.log('play')  
                status = 'play'  
                time = player.getCurrentTime()  
                uni.postMessage({  
                    data: {  
                        status: status,  
                        time: time  
                    }  
                });  
                 timer = setInterval(() => {  
                    console.log('定时器保存')  
                    time = player.getCurrentTime()  
                    uni.postMessage({  
                        data: {  
                            status: 'timing',  
                            time: time  
                        }  
                    });  
                 }, intervalTime)  
            })  
            player.on('pause', () => {  
                status = 'pause'  
                time = player.getCurrentTime()  
                 uni.postMessage({  
                    data: {  
                        status: status,  
                        time: time  
                    }  
                });  
                clearInterval(timer)  
            })  
            player.on('playing', () => {  

            })  
            player.on('timeupdate', () => {  
                status = 'timeupdate'  
                time = player.getCurrentTime()  
                uni.postMessage({  
                    data: {  
                        status: status,  
                        time: time  
                    }  
                });  
            })  

            player.on('end', () => {  
                status = 'end'  
                 time = player.getCurrentTime()  
                 uni.postMessage({  
                    data: {  
                        status: status,  
                        time: time  
                    }  
                 });  
                clearInterval(timer)  
            })  

            player.on('error', (e) => {  

            })  
            player.on('requestFullScreen', (e) => {  

            })  
            player.on('cancelFullScreen', (e) => {  

            })  
        });  
    }

操作步骤:

点击全屏播放,会自动退出全屏,无法播放,定位问题是uni.postMessage传递值导致的,

预期结果:

修复ios上全屏播放bug

实际结果:

无法全屏播放

bug描述:

webview内嵌播放器,timeupdate时传值给父页面,导致播放器在ios上无法全屏播放,安卓机没有问题

2022-09-22 10:31 负责人:无 分享
已邀请:

要回复问题请先登录注册