以下是一个基本的步骤说明,展示如何在uni-app中追踪视频观看进度,并将这些信息发送到PHP服务器:
1. 在uni-app中播放视频首先,在uni-app的页面上使用<video>组件来播放视频。uni-app支持HTML5的<video>标签,并提供了一些额外的属性和方法来增强视频体验。
<template> <view> <video id="videoPlayer" src="your-video-url.mp4" @timeupdate="handleTimeUpdate" controls></video> </view> </template>
2. 监听视频进度变化
在<video>组件上监听timeupdate事件,该事件会在视频的当前播放位置发生变化时触发。

<video id="videoPlayer" src="your-video-url.mp4" @timeupdate="handleTimeUpdate" controls></video>
3. 实现进度处理函数
在Vue组件的methods部分实现handleTimeUpdate方法,用于计算视频观看进度,并发送AJAX请求到PHP服务器。
<script> export default { methods: { handleTimeUpdate(e) { const video = e.currentTarget; const progress = (video.currentTime / video.duration) 100; // 计算观看进度百分比 // 使用uni.request发送AJAX请求(uni-app的API) uni.request({ url: 'https://your-server.com/update_progress.php', // 你的PHP服务器地址 method: 'POST', data: { progress: progress }, success: (res) => { console.log('Progress updated successfully', res.data); }, fail: (err) => { console.error('Failed to update progress', err); } }); } } } </script>
4. PHP服务器端接收进度信息
在PHP服务器端(update_progress.php),你需要编写代码来接收并处理从uni-app发送过来的进度信息。
<?php if (isset($_POST['progress'])) { $progress = $_POST['progress']; // 处理进度信息,例如保存到数据库 // ... // 返回响应给客户端 echo json_encode(['status' => 'success', 'message' => 'Progress updated successfully']); } else { echo json_encode(['status' => 'error', 'message' => 'No progress data received']); } ?>
注意事项跨域问题:如果你的uni-app和PHP服务器不在同一个域上,确保你的PHP服务器支持CORS(跨源资源共享),并允许来自uni-app域的请求。性能优化:考虑到移动设备的性能和带宽限制,你可能需要实现节流(throttling)或防抖(debouncing)来减少AJAX请求的频率。安全性:对接收到的数据进行适当的验证和清理,以防止潜在的安全问题。错误处理:在uni-app和PHP服务器端都实现适当的错误处理逻辑,以便在出现问题时能够给出有用的反馈。