uni-app 升级3.98打包后的包 安卓在webview下 videoFullscreen:'landscape' 视屏横屏无效

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app 升级3.98打包后的包 安卓在webview下 videoFullscreen:‘landscape’ 视屏横屏无效

开发环境 版本号 项目创建方式
Windows win10家庭版 HBuilderX

操作步骤:

  • 使用webview打开视频网页

预期结果:

  • 能够点击全屏按钮并横屏

实际结果:

  • 全屏按钮是灰色的,不可点击

bug描述:

3.97打包后webview能支持横屏,升级3.98打包后又不行了
onReady() {  
    // #ifdef APP-PLUS  
    var currentWebview = this.$scope.$getAppWebview() //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效  
    setTimeout(function() {  
        wv = currentWebview.children()[0]  
        wv.setStyle({  
            hardwareAccelerated:true, //开启硬件加速    
            cachemode:'cacheElseNetwork',//优先加载缓存     
            videoFullscreen:'landscape',//视屏横屏无效    
            plusrequire:"none"//禁止远程网页使用plus的API    
        })  
    }, 1000); //如果是页面初始化调用时,需要延时一下  
    // #endif  
}

2 回复

好像不是因为升级的原因,重新安装后又可以了。。。我之前打完包后都是先测试过的,那时候是可以全屏的,然后今天突然发现全屏按钮又变灰了,过几天我再看看


uni-app 中,videoFullscreen: 'landscape' 是用于控制视频全屏时方向的配置项。如果你在升级到 uni-app 3.98 后发现该配置在安卓 WebView 下无效,可能是由于以下原因:

1. WebView 兼容性问题

  • 不同版本的 WebView 对 videoFullscreen 的支持可能有所不同。某些 WebView 版本可能不支持该配置,或者需要额外的配置才能生效。

2. uni-app 版本问题

  • uni-app 3.98 版本可能存在一些已知的 bug 或兼容性问题。建议检查官方文档或社区,看看是否有相关的 bug 报告或解决方案。

3. Android 系统限制

  • 某些 Android 系统或设备可能对 WebView 中的视频全屏行为有特定的限制,导致 videoFullscreen: 'landscape' 无法生效。

解决方案

1. 检查 WebView 版本

  • 确保你的 WebView 是最新版本。你可以通过以下代码检查 WebView 版本:
    const webViewVersion = navigator.userAgent.match(/Chrome\/(\d+)/);
    console.log('WebView version:', webViewVersion ? webViewVersion[1] : 'Unknown');
  • 如果 WebView 版本较旧,建议用户更新 WebView 或使用其他浏览器内核。

2. 使用原生插件

  • 如果 WebView 无法满足需求,可以考虑使用 uni-app 的原生插件来实现视频全屏横屏播放。例如,使用 uni-video 插件或自定义原生代码来控制视频播放。

3. 手动控制屏幕方向

  • 你可以通过 JavaScript 手动控制屏幕方向。例如,使用 screen.orientation.lock('landscape') 来锁定屏幕为横屏:
    if (screen.orientation && screen.orientation.lock) {
        screen.orientation.lock('landscape').catch(() => {
            console.log('Failed to lock screen orientation');
        });
    }
  • 注意:screen.orientation.lock 可能在某些设备或浏览器上不被支持。

4. 降级 uni-app 版本

  • 如果问题确实是由于 uni-app 3.98 的 bug 引起的,可以尝试降级到之前的稳定版本,看看问题是否得到解决。

5. 反馈给官方

  • 如果以上方法都无法解决问题,建议将问题反馈给 uni-app 官方团队,等待官方修复或提供解决方案。

示例代码

以下是一个简单的示例,展示如何在 uni-app 中控制视频全屏横屏播放:

<template>
  <view>
    <video
      :src="videoSrc"
      controls
      :fullscreen="true"
      @fullscreenchange="onFullscreenChange"
    ></video>
  </view>
</template>

<script>
export default {
  data() {
    return {
      videoSrc: 'https://www.example.com/sample.mp4'
    };
  },
  methods: {
    onFullscreenChange(event) {
      if (event.detail.fullscreen) {
        this.lockLandscape();
      } else {
        this.unlockOrientation();
      }
    },
    lockLandscape() {
      if (screen.orientation && screen.orientation.lock) {
        screen.orientation.lock('landscape').catch(() => {
          console.log('Failed to lock screen orientation');
        });
      }
    },
    unlockOrientation() {
      if (screen.orientation && screen.orientation.unlock) {
        screen.orientation.unlock();
      }
    }
  }
};
</script>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!