一、项目简介
本文分享一套完整的短剧看广告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测试优化产品
建议开发者关注用户留存率与广告填充率两大核心指标,持续优化产品体验与变现效率。