hookehuyr

feat(视频播放器): 添加 iOS 原生播放器强制开关选项

允许通过 useNativeOnIos 属性控制 iOS 环境下是否强制使用原生播放器
默认保持原生播放器行为,但可在需要时切换为 Video.js
......@@ -67,6 +67,14 @@ const props = defineProps({
required: false,
default: true,
},
/**
* iOS 环境下是否强制使用原生播放器
* 默认为 true (使用原生),设为 false 则尝试使用 Video.js
*/
useNativeOnIos: {
type: Boolean,
default: true
}
});
const emit = defineEmits(["onPlay", "onPause"]);
......
......@@ -41,7 +41,11 @@ export function useVideoPlayer(props, emit, videoRef, nativeVideoRef) {
// 1. 环境判断与播放器选择
const useNativePlayer = computed(() => {
// iOS 微信环境下强制使用原生播放器,因为 video.js 在此环境有兼容性问题
// 如果 props 强制关闭原生播放器,则返回 false (使用 Video.js)
if (props.useNativeOnIos === false) {
return false;
}
// 默认逻辑:iOS 微信环境下使用原生播放器
return wxInfo().isIOSWeChat;
});
......
......@@ -25,6 +25,7 @@
<VideoPlayer v-if="isPlaying" ref="videoPlayerRef"
:video-url="courseFile?.list?.length ? courseFile['list'][0]['url'] : ''" :autoplay="false"
:video-id="courseFile?.list?.length ? courseFile['list'][0]['meta_id'] : ''"
:use-native-on-ios="false"
@onPlay="handleVideoPlay" @onPause="handleVideoPause" />
</div>
<div v-if="course.course_type === 'audio'" class="w-full relative border-b border-gray-200">
......@@ -220,7 +221,7 @@
</div>
<!-- 视频播放器 -->
<VideoPlayer v-show="isPopupVideoPlaying" ref="popupVideoPlayerRef" :video-url="videoUrl"
:video-id="videoTitle" :autoplay="false" class="w-full h-full" @play="handlePopupVideoPlay"
:video-id="videoTitle" :autoplay="false" :use-native-on-ios="false" class="w-full h-full" @play="handlePopupVideoPlay"
@pause="handlePopupVideoPause" />
</div>
</div>
......