一、项目简介
本文分享一套完整的短剧看广告APP源码,支持独立部署与二次开发。项目采用前后端分离架构,集成广告投放系统,用户通过观看广告解锁付费短剧内容,实现流量变现。适合个人开发者、中小企业快速搭建自己的短剧平台。
二、技术架构
1. 技术栈选型
- 后端:Spring Boot + MyBatis Plus(Java)
- 前端:React Native(跨平台移动端)
- 数据库:MySQL + Redis(缓存)
- 广告平台:Google AdMob、穿山甲、快手联盟(支持多广告源)
- 部署环境:Docker(可选)、Nginx、Linux/Windows
2. 核心功能模块
模块 | 功能说明 |
---|---|
用户系统 | 注册/登录、第三方授权、用户行为统计 |
短剧管理 | 分类/标签管理、剧集上传、付费点设置、试看时长控制 |
广告系统 | 广告位配置、激励视频、插屏广告、广告收益统计 |
支付系统 | 虚拟货币充值、会员订阅、支付回调验证 |
数据看板 | 用户活跃度、广告收益、短剧播放量、留存率分析 |
三、独立部署步骤
1. 环境准备
bash
|--------------------------|
| # 后端环境(Java 11+)
|
| JDK 11+
|
| Maven 3.6+
|
| MySQL 8.0+
|
| Redis 6.0+
|
| |
| # 前端环境(React Native)
|
| Node.js 16+
|
| Android Studio / Xcode
|
2. 源码部署流程
步骤1:后端部署
bash
|-----------------------------------|
| 1. 导入SQL脚本至MySQL:
|
| - 创建数据库`short_video``` | |
- 执行doc/sql/short_video.sql``` | | | | ``2. 修改配置文件
application.yml:`` | |
- 数据库连接地址 | |
- Redis配置 | |
- 广告平台SDK密钥(AdMob/穿山甲) | | | |
3. Maven打包: | | ```````bash```` | |
mvn clean package -DskipTests` |
生成target/short-video-api.jar
-
启动服务:
bash
|---------------------------------------------------------------|
|java -jar short-video-api.jar --spring.profiles.active=prod
|
|-----------------|
| **步骤2:前端部署**
|
| bash```` | | `1. 安装依赖:` | |
bash```` |
| npm install
|
-
修改API地址:
javascript
|------------------------------------------------------------|
|// src/config/index.js
|
|export const API_BASE_URL = 'http://your-domain.com/api'
| -
打包Android/iOS:
bash
|--------------------------------|
|npx react-native run-android
|
|npx react-native run-ios
|
|---------------------------------------------------------------------|
| ### 3. Docker部署(可选)
|
| ```````dockerfile```` |
| # 后端Dockerfile
|
| FROM openjdk:11-jre-slim
|
| COPY target/short-video-api.jar /app.jar
|
| CMD ["java", "-jar", "/app.jar", "--spring.profiles.active=prod"]
|
四、二次开发指南
1. 代码结构说明
|------------------------------------|
| short-video-api/
|
| ├── src/main/java/com/shortvideo
|
| │ ├── ad # 广告模块(AdMob/穿山甲集成)
|
| │ ├── controller # API接口
|
| │ ├── service # 业务逻辑
|
| │ └── utils # 工具类(视频处理、广告SDK封装)
|
| |
| react-native-app/
|
| ├── src/components # 页面组件
|
| │ ├── Player # 视频播放器(支持试看逻辑)
|
| │ └── AdView # 广告组件(激励视频触发)
|
| └── src/utils # 广告SDK初始化、请求封装
|
2. 常见二开场景
场景1:新增广告位
java
|--------------------------------------------------|
| // 后端:修改AdService.java
|
| public AdConfig getAdConfig(String position) {
|
| if ("home_banner".equals(position)) {
|
| return AdConfig.builder()
|
| .adUnitId("ca-app-pub-xxxx/xxxx") // 新增广告位ID
|
| .type(AdType.BANNER)
|
| .build();
|
| }
|
| // ...原有逻辑
|
| }
|
javascript
|------------------------------------------------|
| // 前端:修改HomeScreen.js
|
| <AdView
|
| adUnitId="ca-app-pub-xxxx/xxxx" // 对应后端广告位ID
|
| adType="BANNER"
|
| />
|
场景2:修改试看规则
java
|----------------------------------------------------------------|
| // 后端:修改VideoService.java
|
| public VideoDetail getVideoDetail(Long videoId, User user) {
|
| Video video = videoMapper.selectById(videoId);
|
| |
| // 试看逻辑:未登录用户试看30秒,登录用户试看60秒
|
| int freeSeconds = user == null ? 30 : 60;
|
| video.setFreeDuration(freeSeconds * 1000); // 毫秒单位
|
| |
| return video;
|
| }
|
五、常见问题解答
Q1:广告加载失败如何排查?
- 检查广告位ID是否正确配置
- 确认设备已开启网络权限
- 查看日志
tail -f logs/ad.log
- 测试广告SDK初始化是否成功
Q2:如何对接第三方支付?
- 修改
PayService.java
中的支付回调地址 - 实现
AbstractPaymentHandler
抽象类 - 配置支付宝/微信支付参数至
application.yml
Q3:视频上传失败怎么办?
-
检查Nginx是否配置大文件上传:
nginx
|------------------------------|
|client_max_body_size 100M;
| -
确认后端文件存储路径权限
-
查看
upload.log
排查异常
六、合规与优化建议
- 版权合规:确保短剧内容拥有正版授权
- 广告内容:接入广告平台内容审核API,过滤违规广告
- 性能优化 :
- 视频转码:使用FFmpeg生成多清晰度版本
- CDN加速:对接阿里云/腾讯云对象存储
- 预加载广告:在WiFi环境下预加载激励视频
七、总结
通过本文指南,您可快速搭建一套完整的短剧看广告APP,并支持根据业务需求进行二次开发。独立部署的优势在于:
- 数据自主可控:用户行为数据、广告收益完全归属自己
- 功能定制化:可根据目标用户调整试看策略、广告频次
- 快速迭代:通过灰度发布、A/B测试优化产品
建议开发者关注用户留存率与广告填充率两大核心指标,持续优化产品体验与变现效率。