uni-app ios18.1.1环境下 nvue页面 requestFullScreen()功能无效

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

uni-app ios18.1.1环境下 nvue页面 requestFullScreen()功能无效

类别 信息
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 windows11家庭中文版 23H2
HBuilderX类型 正式
HBuilderX版本 4.36
手机系统 iOS
手机系统版本 iOS 18
手机厂商 苹果
手机机型 iPhone Xs
页面类型 nvue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

<template>  
    <view class="main">  
        <video class="video" id="video" ref="video" src="https://res.yixueyice.com/stg/slowmotionadmin/1778/f7029916d5134fc5a4d7281c8439435f">  

        </video>  
    </view>  
</template>  

<script setup>  
import { onReady } from '@dcloudio/uni-app';  
import { ref } from 'vue';  

const videoContext = ref(null); //视频上下文  
onReady(() => {  
    videoContext.value = uni.createVideoContext('video');  
    videoContext.value.requestFullScreen({ direction: 0 });  
    videoContext.value.play();  
});  

</script>  

<style lang="scss" scoped>  

</style>  

操作步骤:

  • 新建nvue页面,运行自定义基座

预期结果:

  • 视频全屏播放

实际结果:

  • 代码无效,没有任何反应

bug描述:

以下代码,在vue页面中可全屏播放,在nvue页面中无效。


1 回复

uni-app 中,nvue 页面使用 requestFullScreen() 方法在某些特定环境下可能会遇到功能无效的问题,特别是在 iOS 18.1.1 这样的新版本系统中。这通常是由于系统 API 变更或兼容性问题导致的。虽然无法直接提供确保在所有情况下都有效的解决方案(因为这依赖于具体的系统和应用环境),但我们可以尝试一些替代方法和检查步骤,并附上相关代码示例,以帮助排查和解决问题。

1. 确认 nvue 页面配置

首先,确保你的 nvue 页面配置正确,且 requestFullScreen() 方法调用在合适的生命周期内。例如,在 onReady 生命周期中调用:

<template>
  <div>
    <!-- 页面内容 -->
  </div>
</template>

<script>
export default {
  onReady() {
    this.$mp.page.requestFullScreen();
  }
}
</script>

2. 检查系统权限

在某些情况下,全屏请求可能因系统权限设置而被拒绝。尽管这通常不是由开发者直接控制的,但确保应用有适当的权限请求(如相机、麦克风等,如果相关)是值得检查的。

3. 使用 Webview 组件尝试

如果 nvue 原生组件的全屏请求不起作用,可以考虑使用 web-view 组件加载一个包含全屏请求的 H5 页面作为替代方案。注意,这种方法可能会牺牲一些原生性能优势。

4. 监听全屏变化事件

监听全屏状态的变化可以帮助诊断问题。虽然这不会直接解决问题,但可以提供关于全屏请求是否成功的反馈:

document.addEventListener('fullscreenchange', function() {
  if (document.fullscreenElement) {
    console.log('进入全屏');
  } else {
    console.log('退出全屏');
  }
});

nvue 中,由于使用的是 Weex 渲染引擎,上述事件监听可能需要通过原生模块或插件实现。

5. 联系 uni-app 社区或支持

如果上述方法都无法解决问题,建议联系 uni-app 的官方支持或在社区论坛中寻求帮助。提供详细的错误日志、系统信息、以及已尝试的解决方法,将有助于社区或开发者更快地定位问题。

请注意,由于 iOS 系统的封闭性和更新频繁,特定版本的兼容性问题可能需要等待官方修复或提供新的 API。

回到顶部