赞片CMSAPP开发
照着做完,你能拿到一个能连上赞片CMS接口、能刷列表、能播放的 App 最小可运行版本,并知道每一步卡住时该查哪里。
第一步:确认后台接口能用
这一步要拿到一个能返回 JSON 的接口地址,拿不到后面全白搭。登录赞片CMS后台(一般是 http://你的域名/admin.php),进入「系统」→「采集接口」或「接口设置」,页面里会直接显示本站的 API 地址,形如 http://你的域名/api.php/provide/vod/。
把这段地址拼上参数,直接丢进浏览器:
http://你的域名/api.php/provide/vod/?ac=list&pg=1
返回 {"code":1,"msg":"数据列表","page":1,"list":[...]} 就说明通了。取详情用 ?ac=detail&ids=视频ID,按分类取列表在 ac=list 后加 &t=分类ID。
注意:返回
code:0或提示无权限,多半是接口没开或用户组没放行,去「用户」→「用户组」里把「采集接口」权限勾上,再回来看。
第二步:起一个最小工程
这一步要得到一个能跑在手机上的空壳 App。用 HBuilderX 3.99 以上版本:菜单「文件」→「新建」→「项目」→ 左侧选「uni-app」→「默认模板」,项目名写 ZanApp,创建后先点「运行」→「运行到手机或模拟器」验证模板能跑起来。
如果你更熟 Flutter,flutter create zanapp 也一样,本文以 uni-app 为例,因为它把 Android/iOS 的播放器和打包都省了一半活。
第三步:封装请求层
这一步要把接口调用集中到一个文件,后面改域名只改一处。在项目根目录新建 common/api.js:
const BASE = 'http://你的域名/api.php/provide/vod/';
export function vodList(params = {}) {
const q = Object.entries({ ac: 'list', pg: 1, ...params })
.map(([k, v]) => `${k}=${encodeURIComponent(v)}`).join('&');
return uni.request({ url: `${BASE}?${q}`, method: 'GET' })
.then(res => res.data);
}
列表接口返回的 list 里,vod_id、vod_name、vod_pic 是你要的三个字段;class 字段是分类数组,直接拿去做顶部导航。
第四步:渲染列表和详情页
这一步要看到真实数据出现在屏幕上。在 pages/index/index.vue 里用 onLoad 调 vodList(),把结果塞进 data.list,模板用 <scroll-view> 包 <view v-for>,封面图直接绑 vod_pic。
详情页新建 pages/detail/detail.vue,用 ?ac=detail&ids= 取回单个视频,注意 vod_play_url 是这种格式:
第01集$http://xx.com/1.m3u8#第02集$http://xx.com/2.m3u8
先按 # 拆集数,再按 $ 拆标题和地址,这是最容易写错的一步。
注意:
vod_pic和播放地址常带防盗链,图片不显示一般是 Referer 被拦。App 端默认不带 Referer,需要在后台把域名加进白名单,或在请求头里补上。
第五步:接播放器
这一步要能点一下就播。uni-app 里最省事的做法是直接用 <video> 组件,把 src 绑成上一步拆出来的 m3u8 地址,autoplay 设 false,加一个 <cover-view> 盖住当封面的点击层。Android 底层会走系统播放器,iOS 走 AVPlayer,普通 m3u8 都能播。
注意:如果站点用的是自研加密或鉴权播放,光换 src 播不出来,得在后台「播放器设置」里开标准 HLS 输出,再调。
第六步:打包
这一步要出安装包。HBuilderX 菜单「发行」→「原生App-云打包」,Android 选「使用 DCloud 老版证书」就能出 apk;iOS 必须先有苹果开发者账号(99 美元/年),上传描述文件和推送证书后才打得出来。
注意:接口是 http 明文的,Android 9 以上默认禁止,要在
manifest.json的「App常用其它设置」里勾选「允许 http 明文传输」,否则线上包一片白屏。
小结
- 先验证
api.php/provide/vod/?ac=list返回 JSON,再动手写代码。 ac=list拿列表和分类,ac=detail&ids=拿详情,vod_play_url按#和$两级拆分。- 请求层单独封装,域名只改一处。
- 图片和播放失败先查 Referer 防盗链,再查播放器格式。
- 打包前记得开 http 明文传输,iOS 要提前准备开发者账号。
原文链接:https://www.gj0.com/thread-154.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。