APP构建及使用教程
- 1: APP详情介绍及演示
- 2: APP手动构建教程
- 3: 使用Docker快速构建APP
- 4: 横屏APP设置及注意事项
- 5: 竖屏APP设置及注意事项
- 6: app的api接口搭建教程
- 7: 推广app专用cms搭建教程
- 8: app推送升级版本教程
- 9: app卡开屏和不显示图片
- 10: app移除封面图片cdn配置
- 11: app修改数据默认缓存时间
- 12: 隐藏app用的EFV域名前端
1 - APP详情介绍及演示
特别提示
对于使用app
的,则强烈建议全部的视频必须转码,而不是只秒切,转码可以矫正相关参数,100%
可以在app
中播放;不转码只秒切可能有一定几率会出现播放不了的情况。
如果你只想使用app
,不想用内置cms
,可以关闭内置cms
,且用户组等设置依旧在后台cms
相关栏进行设置。
相关说明
APP
为免费赠送品,累计购买高级版高阶授权以上的用户可免费领取,后期也免费更新。
APP
为Ios/Android
双端源码,使用Flutter
开发,非h5
和weex
构建可比拟,60
帧顺滑,打包app
体积小,兼容性高,体验效果极佳。
APP
源码开源,有开发经验、或喜欢折腾的,可自行对APP
源码进行各种修改定制,二次开发打包。
功能介绍
- 如德芙般丝滑的用户体验,采用
flutter
开发,双端通用,并且都测试通过。 - 几乎完美的广告嵌入,支持固定位广告,开屏广告,信息流广告,播放前强制广告,后续还会增加更多广告类型。
- 全面对接谷歌
firebase
统计,无论ios
还是安卓都能完美统计,甚至进入过哪些页面都有详细统计。 - 支持更新检测,自行编写实现了延时版本检测,每次打开
app
,会延时10s
检测是否有最新版本,如果有就会弹窗提醒下载更新。 b
站同款互动开屏广告,滑动查看广告内容。- 独立且醒目的推广页面,推广中广告随机展示,每个月可根据广告收入情况淘汰末尾,以达到最佳收入组合。
- 完美支持视频和剧集的播放,无论视频还是剧集,都采用预加载数据的方式,打开播放页面即开始播放,体验极佳!
- 播放器支持倍速播放,支持分辨率切换,支持外挂srt字幕,支持投屏,投屏功能在``ios和安卓都得到完美测试,完美兼容苹果和安卓所有机型!
- 独立求片和反馈页面,支持用户发布意见反馈或求片,第一时间知道用户真实使用情况。
- 支持签到获得积分,后续会增加点击广告增加积分的功能,鼓励用户点击广告,获取更高收益。
- b站同款展开功能,播放页的标题和简介的展开功能,为了做这个功能翻阅了大量资料!
- 对接支付系统,支持
vip
购买,支持了试看,支持了会员播放完整视频, app
采用api
系统的方式,实现了从内存中介服务器直接获取数据的能力,采用redis
进行内存缓存管理,达到访问app
的人数越多,越流畅!
相关演示
提示:竖屏app偏向于番剧,横屏app偏向通用,且功能更多,自行选择。
竖屏海报演示APP
适用于动漫、美剧等有影视海报做封面;且海报主要来源于后台豆瓣接口获取、或自己从其他网站找海报上传。
竖屏海报演示app
:点击下载
横屏海报类APP+漫画
适用于短视频、或无影视海报做封面;且海报主要由程序自动生成、或自己上传;并带图集板块。
横屏海报演示app
:点击下载
2 - APP手动构建教程
特别提示
这里主要讲解Windows
系统上手动打包Android app
,IOS app
需使用MacOS
打包,这里暂时只提供思路。
MacOS
打包IOS app
客户端推荐使用xcode
,且建议先把Android
打包理解会,IOS
就很简单了。
对于无基础的新手,如果你想打包Android app
更快速方便,可使用Docker
打包 ⇒ 传送门。
打包总体思路
1、安装flutter
和环境配置,可参考 ⇒ 传送门。
2、app
源码配置及打包,Android
可参考 ⇒ 传送门,iOS
可参考 ⇒ 传送门。
视频教学
提示:请点击播放器右下角全屏按钮进行观看。
建议先看完下面的教程,再跟着视频教学一起尝试打包,注意目前app
已重做,配置方面可能会有差别,但打包总体不变。
构建步骤
系统需要Windows 7 SP1
或更高的版本(64
位操作系统),且需要安装Windows PowerShell 5.0
或者更高的版本(Windows 10、11
已经预装了)。
安装PowerShell 5
提示:windows 10、11已经预装PowerShell 5,所以可以跳过该步骤。
先安装.NET Framework 4.6.2
下载地址:https://www.microsoft.com/en-au/download/details.aspx?id=53344
再升级PowerShell
补丁包,windows 7 64
位请下载Win7AndW2K8R2
版本
下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=54616
安装Flutter SDK
先下载Flutter SDK
,建议下载最新版本3.0+
,竖屏app
推荐3.1.0
,横屏app
推荐3.3.3
,下载地址 ⇒ 传送门。
下载好了后将压缩包里的flutter
文件夹解压到D盘
根目录,此时flutter
绝对路径为D:\flutter
。
安装Android SDK
提示:如果是国内网络构建的话,请挂上vpn,不然下面有些环境会安装失败。
Android SDK
下载地址 ⇒ 传送门,点击DOWNLOAD ANDROID STUDIO
下载安装即可。
提示:下面打开Android Studio,到最后Finish点不动,可能左侧有部分SDK你没有选择Accept,即左侧带红色*,可先点击再Accept。
然后打开Android Studio
,如果看到一个Missing SDK ,No Andriod SDK found.
向导,则选择Next
,最后Finish
安装SDK
。
提示:随着Android Studio更新,SDK Manager可能位置会有所变化,但总体都差不多,如有区别,自行查找。
接着进入界面后,点击中间的More Actions
,选择SDK Manager
,进入到Android SDK
界面,选择Android 10
、11
、12
,点击右下角Apply
安装。
再切换到SDK Tools
界面(按钮大概在中间上方),勾选Android SDK Command-line Tool
,点击右下角Apply
安装。
然后依然在SDK Tools
界面,点击右下角Show Package Details
,找到Android SDK Build-Tools
并展开,选择29.0.2
版本,点击右下角Apply
安装。
提示:随着Android Studio更新,Plugins可能位置会有所变化,但总体都差不多,如有区别,自行查找。
再到主界面,点击左侧的Plugins
,选择Plugins
,搜索并安装Dart
和Flutter
插件即可。
安装JAVA
JAVA
下载地址 ⇒ 传送门,选择对应的系统版本,找到JRE
的smi
链接,下载安装即可。
检查Flutter环境
点击电脑左下角,搜索powershell
,打开该工具,然后依次使用命令:
#注意后面的为解压出来的flutter文件夹,自行修改,以下为本文默认路径
$env:Path += ";D:\flutter\bin"
#使用国内镜像,国外服务器可以跳过
$env:PUB_HOSTED_URL="https://pub.flutter-io.cn"
$env:FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"
#如果该命令出现y/n,直接选择y即可
flutter doctor --android-licenses
flutter doctor
如果Flutter
、Android toolchain
、HTTP Host Availability
主要的都是√
,则安装完成。
如果HTTP Host Availability
检测报错,提示信号灯超时时间已到,则大概网络原因,解决办法如下:
1、编辑下载的flutter文件夹文件,路径packages\flutter_tools\lib\src\http_host_validator.dart,将https://maven.google.com/改成https://dl.google.com/dl/android/maven2/
2、删除下载的flutter文件夹里的缓存文件,路径bin\cache,整个cache文件夹删除。
3、重新运行flutter doctor命令检测环境
修改APP名称
修改android/app/src/main/AndroidManifest
文件,大致如下:
#找到中间位置,即android:label一行,此处为app名称,自行修改
<application
...
android:label="flutter学习视频"
...
<activity
修改APP图标和相关图片
准备一个app
的图标,png
格式,命名icon.png
,覆盖到app
源码目录assets
文件夹即可。
还有app展示图
和app logo
修改,横屏app
修改 ⇒ 传送门,竖屏app
修改 ⇒ 传送门。
接下来横屏app
,且只有横屏app
需要配置替换一个图片,即图集界面强制广告图片,路径assets/benad.jpg
,尺寸建议800x1164
。
修改APP其它信息
修改android/app/build.gradle
文件,大致如下:
#修改applicationId,为唯一的应用ID,一旦设置,后期就不能改了,更新app的时候,依然用这个ID
applicationId "com.moemv.flutter"
给app配置图片cdn加速
这里使用的cdn
会给你把app
所有封面,截图等全部转换成体积非常小,每张图大概10kb
左右的webp
,可以使app
图片加载极快,体验非常好。
首选,需要一个网络不错的vps
服务器,配置不是很需求,主要是网络好点,然后搭建图片cdn
加速,搭建教程 ⇒ 传送门。
编辑lib/core/utils/helper.dart
文件,大致如下:
#横屏和竖屏app配置有区别,注意区分,不要乱删字符,如&url=,不然封面,截图都不会显示了
#竖屏app配置,image.efvcms.com为图片cdn域名,iqi360bytheway为图片cdn的apikey
String cdnUrl = 'https://image.efvcms.com/api?apikey=iqi360bytheway&url=' +
#横屏app配置,且有2个地方,iqi360bytheway为图片cdn的apikey
String cdnUrl =
'$cdn/api?apikey=iqi360bytheway&url=' + url + '&force=true';
String cdnUrl = '$cdn$url?apikey=iqi360bytheway&force=true';
配置app的基础信息
注意:对接期间,必须给EFV域名和分离CMS域名添加ssl证书,开启https访问,不然app获取不了数据。
编辑lib/core/values/strings.dart
文件,大致如下:
#该参数为EFV所绑定的域名地址,且必须使用ssl证书并开启https
const host = 'https://app.leimulamu.com';
#该参数为app检测的版本号,
const version = 230601;
#<仅竖屏app需配置>app标题
const title = "雷姆拉姆";
#该参数为EFV所绑定的域名地址,不需要http://,只写域名,该选项仅横屏海报app存在
const emailRoot = 'app.leimulamu.com';
#<仅横屏app需配置>app的上传域名配置,即改成EFV所绑定的域名地址
const uploadUrl = 'https://app.leimulamu.com/api2/uploads';
#<仅横屏app需配置>图片cdn域名配置,可搭建多个图片cdn加速,并设置多个,用户可在个人中心进行图片线路切换
const cdnUrls = [
'https://cdn1.efvcms.com',
'https://cdn2.efvcms.com',
'https://cdn3.efvcms.com'
];
图片cdn域名按照默认的格式,一行一个,自行删减,且都需要放在英文单引号中间,末尾需要用英文逗号结尾,最后一个域名可不用英文逗号,其它都要;如果只有一个图片cdn域名,可参考以下配置:
const cdnUrls = [
'https://cdn.efvcms.com'
];
注意这里的版本号是app
更新的配置,更新具体可参考 ⇒ 传送门。
配置app的api域名
该api
接口会从EFV
高级版读取全部信息,并缓存下来,然后会被app
读取,且并发和运行效率极高,可使app
读取越快,体验更好。
提示:如果你的服务器有限,api系统可以和图片cdn加速共用一个服务器。
首选,需要一个网络不错的vps
服务器,配置不是很需求,主要是网络好点,然后搭建api
系统,搭建教程 ⇒ 传送门。
再编辑竖屏lib/app/data/provider/dio_provider.dart
或横屏lib/app/data/provider/api_dio.dart
文件,大致如下:
#该参数为app的api接口绑定的域名,且必须使用ssl证书并开启https
const baseUrl = 'https://m3u8.efvcms.com/api/';
#该参数为EFV的apikey,可在EFV的转码设置获取
const apiKey = 'domybestth';
给app签名
提示:首次打包需要签名,更新打包的时候,直接用该签名的文件即可。
日后为了方便给用户更新app
,我们需要给app
签名。
点击电脑左下角,搜索powershell
,打开该工具,然后使用命令:
keytool -genkey -v -keystore C:\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
输入签名的密匙及其它相关信息,使用拼音就行了,最后问你是否正确的时候,你输入 是,再输入密匙确认即可。
最后会在我们的C
盘根目录生成一个密匙文件upload-keystore.jks
,保管好就行,不然会影响以后的升级操作。
然后我们解压app
源码包后,然后编辑根目录android
文件夹中key.properties
文件,修改内容:
storePassword=efvcms
keyPassword=efvcms
keyAlias=upload
storeFile=C:/upload-keystore.jks
efvcms
均为签名密匙,C:/upload-keystore.jks
为密匙路径,注意路径格式请使用正斜杠/
代替反斜杠\
,如有变动可自行修改。
给app配置google统计
先前往google
统计官网 ⇒ 传送门,然后创建项目,名称随便填。
进去后,就可以看到添加应用提示,根据操作系统选择,比如我点击安卓图标,Android 软件包名称
为上面设置的applicationId
参数,如: com.moemv.flutter
,其它可选,自己看着办。
然后注册后,下载google-services.json
文件,丢到app
源码包的android/app
文件夹即可。
开始构建app
提示:如果是国内网络构建的话,建议挂上梯子,不然会很慢,甚至构建失败;且有时候因为插件要升级导致打包失败的,可以联系我们。
比如我把app
源码存放到了D
盘根目录,且文件夹命名为moeapp
,则app
具体路径为D:\moeapp
。
接下来继续在powershell
依次使用命令:
#接下来进入到app源码目录,自行修改,以下为本文默认路径
cd D:\moeapp
#打包
flutter packages pub run flutter_launcher_icons:main
flutter pub get
flutter build apk --split-per-abi
这里注意,如果你powershell
中途关闭过,则重新打开powershell
后,需要设置以下环境后,再继续打包,使用命令:
#注意第一行命令后面的为解压出来的flutter文件夹,自行修改,以下为本文默认路径
$env:Path += ";D:\flutter\bin"
#使用国内镜像,国外服务器可以跳过
$env:PUB_HOSTED_URL="https://pub.flutter-io.cn"
$env:FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"
等待打包完成即可,第一次打包会有点慢,第二次就快了,如果中途有修改相关信息,重新按照此方法打包构建即可。
最后apk
文件在build\app\outputs\flutter-apk
文件夹,共有3
个版本,都是针对不同的移动CPU
架构,一般可以直接用arm64-v8a
即可,具体架构说明如下:
armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。
3 - 使用Docker快速构建APP
由于墙的关系,尽量使用中国大陆以外的服务器进行打包操作,VPS
和独立服务器均可,直接在转码服务器上打包也可以,推荐CentOS 7+
、AlmaLinux
、Rocky Linux
、Debian
、Ubuntu
系统。
构建步骤
不要漏掉任何一个设置步骤,不然很可能打包后,使用会有问题。
修改APP名称
修改android/app/src/main/AndroidManifest
文件,大致如下:
#找到中间位置,即android:label一行,此处为app名称,自行修改
<application
...
android:label="flutter学习视频"
...
<activity
修改APP图标和相关图片
准备一个app
的图标,png
格式,命名icon.png
,覆盖到app
源码目录assets
文件夹即可。
还有app展示图
和app logo
修改,横屏app
修改 ⇒ 传送门,竖屏app
修改 ⇒ 传送门。
接下来横屏app
,且只有横屏app
需要配置替换一个图片,即图集界面强制广告图片,路径assets/benad.jpg
,尺寸建议800x1164
。
修改APP其它信息
修改android/app/build.gradle
文件,大致如下:
#修改applicationId,为唯一的应用ID,一旦设置,后期就不能改了,更新app的时候,依然用这个ID
applicationId "com.moemv.flutter"
给app配置图片cdn加速
这里使用的cdn
会给你把app
所有封面,截图等全部转换成体积非常小,每张图大概10kb
左右的webp
,可以使app
图片加载极快,体验非常好。
首选,需要一个网络不错的vps
服务器,配置不是很需求,主要是网络好点,然后搭建图片cdn
加速,搭建教程 ⇒ 传送门。
编辑lib/core/utils/helper.dart
文件,大致如下:
#横屏和竖屏app配置有区别,注意区分,不要乱删字符,如&url=,不然封面,截图都不会显示了
#竖屏app配置,image.efvcms.com为图片cdn域名,iqi360bytheway为图片cdn的apikey
String cdnUrl = 'https://image.efvcms.com/api?apikey=iqi360bytheway&url=' +
#横屏app配置,且有2个地方,iqi360bytheway为图片cdn的apikey
String cdnUrl =
'$cdn/api?apikey=iqi360bytheway&url=' + url + '&force=true';
String cdnUrl = '$cdn$url?apikey=iqi360bytheway&force=true';
配置app的基础信息
注意:对接期间,必须给EFV域名和分离CMS域名添加ssl证书,开启https访问,不然app获取不了数据。
编辑lib/core/values/strings.dart
文件,大致如下:
#该参数为EFV所绑定的域名地址,且必须使用ssl证书并开启https
const host = 'https://app.leimulamu.com';
#该参数为app检测的版本号,
const version = 230601;
#<仅竖屏app需配置>app标题
const title = "雷姆拉姆";
#该参数为EFV所绑定的域名地址,不需要http://,只写域名,该选项仅横屏海报app存在
const emailRoot = 'app.leimulamu.com';
#<仅横屏app需配置>app的上传域名配置,即改成EFV所绑定的域名地址
const uploadUrl = 'https://app.leimulamu.com/api2/uploads';
#<仅横屏app需配置>图片cdn域名配置,可搭建多个图片cdn加速,并设置多个,用户可在个人中心进行图片线路切换
const cdnUrls = [
'https://cdn1.efvcms.com',
'https://cdn2.efvcms.com',
'https://cdn3.efvcms.com'
];
图片cdn域名按照默认的格式,一行一个,自行删减,且都需要放在英文单引号中间,末尾需要用英文逗号结尾,最后一个域名可不用英文逗号,其它都要;如果只有一个图片cdn域名,可参考以下配置:
const cdnUrls = [
'https://cdn.efvcms.com'
];
注意这里的版本号是app
更新的配置,更新具体可参考 ⇒ 传送门。
配置app的api域名
该api
接口会从EFV
高级版读取全部信息,并缓存下来,然后会被app
读取,且并发和运行效率极高,可使app
读取越快,体验更好。
提示:如果你的服务器有限,api系统可以和图片cdn加速共用一个服务器。
首选,需要一个网络不错的vps
服务器,配置不是很需求,主要是网络好点,然后搭建api
系统,搭建教程 ⇒ 传送门。
再编辑竖屏lib/app/data/provider/dio_provider.dart
或横屏lib/app/data/provider/api_dio.dart
文件,大致如下:
#该参数为app的api接口绑定的域名,且必须使用ssl证书并开启https
const baseUrl = 'https://m3u8.efvcms.com/api/';
#该参数为EFV的apikey,可在EFV的转码设置获取
const apiKey = 'domybestth';
给app签名
提示:首次打包需要签名,更新打包的时候,直接用该签名的文件即可。
日后为了方便给用户更新app
,我们需要给app
签名,先使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
#CentOS 7+、AlmaLinux、Rocky Linux系统
yum install java-11-openjdk -y
#Debian、Ubuntu系统
apt update -y
apt install default-jre -y
然后使用命令签名:
keytool -genkey -v -keystore /root/upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
输入签名的密匙及其它相关信息,使用拼音就行了,最后问你是否正确的时候,你输入 是,再输入密匙确认即可。
提示:请保管好upload-keystore.jks文件,不然会影响以后的app更新操作。
最后会在我们的根目录/root
文件夹生成一个密匙文件upload-keystore.jks
。
接下来我们解压app
源码包,再将密匙文件upload-keystore.jks
存放到app
源码根目录。
然后编辑根目录android
文件夹中key.properties
文件,修改内容:
storePassword=efvcms
keyPassword=efvcms
keyAlias=upload
storeFile=/efvapp/upload-keystore.jks
efvcms
均为签名密匙,/efvapp/upload-keystore.jks
为密匙路径,即key.properties
文件在app
源码根目录的路径,别乱放就行。
给app配置google统计
先前往google
统计官网 ⇒ 传送门,然后创建项目,名称随便填。
进去后,就可以看到添加应用提示,根据操作系统选择,比如我点击安卓图标,Android 软件包名称
为上面设置的applicationId
参数,如: com.moemv.flutter
,其它可选,自己看着办。
然后注册后,下载google-services.json
文件,丢到app
源码包的android/app
文件夹即可。
构建打包app
提示:在配置绝对没问题情况下,有时候会因为网络啥的问题而打包失败,可以重新运行打包命令;且有时候因为插件要升级导致打包失败的,可以联系我们
首先安装Docker
⇒ 传送门,再将修改好的app
源码上传到服务器,比如我app
源码路径为/opt/efvapp
,则在SSH
使用命令:
#竖屏app使用该命令
docker run -v /opt/efvapp:/efvapp moerats/efvapp:3.1
#横屏app使用该命令
docker run -v /opt/efvapp:/efvapp moerats/efvapp:3.3.3
注意-v
前面的/opt/efvapp
为源码路径,自行修改,其它不要动,该命令第一次运行时间比较长,等待即可,直到打包完成。
如果后面有修改app
参数的,可以重新执行上面的命令进行重新构建,第二次及以后的打包时间会大大缩短。
最后apk
文件在build\app\outputs\flutter-apk
文件夹,共有3
个版本,都是针对不同的移动CPU
架构,一般可以直接用arm64-v8a
即可,具体架构说明如下:
armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。
4 - 横屏APP设置及注意事项
提示:如果你只想使用app,不想用内置cms,可以关闭内置cms,且用户组等设置依旧在后台cms相关栏进行设置。
APP
打包成功后,需要前往EFV
后台,CMS
管理的app
广告管理,设置开屏广告、app
广告、播放器广告才能正常使用,设置方法看下面。
且横屏海报app
默认用的封面1
,封面1
相关介绍 ⇒ 传送门。
图集和推广切换
最新版横屏app
已将以前的推广页面
现在换成了 图集页面
,如果你不使用图集
功能,只用视频功能,那么可以把图集页面
改成 推广页面
。
页面展示
左侧是图集
页面,右侧是推广
页面,如图:
修改方法
修改lib/app/modules/container/controller.dart
文件,如下:
#24行上下,后期可能会有变动
原代码:final List<Widget> pages = [HomePage(), HotPage(), ImagesPage(), UserPage()];
修改后:final List<Widget> pages = [HomePage(), HotPage(), AdPage(), UserPage()];
修改lib/app/modules/container/page.dart
文件,如下:
#40行上下,后期可能会有变动,title为下方导航显示字体,可自行修改
原代码:TabItem(icon: LineIcons.image, title: '图集'),
修改后:TabItem(icon: LineIcons.ad, title: '推广'),
修改lib/app/modules/splash/binding.dart
文件,如下:
#19-20行上下,后期可能会有变动,即这2行注释符号//互换,也就是取消图集,推广生效
原代码:
// Get.lazyPut<AdController>(() => AdController());
Get.lazyPut<ImagesController>(() => ImagesController());
修改后:
Get.lazyPut<AdController>(() => AdController());
// Get.lazyPut<ImagesController>(() => ImagesController());
最后修改完成,就可以打包了,图集功能也成功移除。
展示图及广告设置等
注意:展示图中的推广页面已被图集板块代替,如果你按照上面方法切换回推广,可继续生效。
设置相关图片及广告
对于广告,如果你没适合的广告商,可以随便设置下,顺便美化下app
,广告位置如下:
上面的布局图中,app
展示图和app logo
是固定的,也就是打包后就改不了了,其它广告图片可以直接在EFV
后台进行修改设置。
#展示图显示时间由用户请求分离cms的api的延迟决定,如果分离cms的服务器网络足够快,用户请求api时间越短,展示图显示时间越短
1、app展示图(图片参考大小488x680),修改app源码包assets/splash.png,自行将自己的展示图替换进去即可
2、app logo(图片参考大小180x60),修改app源码包assets/logo.png,自行将自己的logo替换进去即可。
#广告设置入口,点击左侧特别功能 ⇒ APP广告管理 ⇒添加app广告
3、开屏广告(图片参考大小680x1030),只需要选择开屏广告、设置广告标题、上传图片、广告链接、广告持续时间。
#app广告我们可以用来推广app下载、购物商品推广、其它相关产品推广,也可以填写与本站有关的说明,会随机出现在app各种内页展示
4、app广告(图片参考大小200x200),只需要选择app广告、设置广告标题(app广告名称),广告词(app广告介绍)、上传图片(app广告图标)、广告链接(app广告链接)。
5、播放器广告(图片参考大小640x360),设置广告标题、上传图片、广告链接、广告持续时间。
开屏广告、app
广告、播放器广告,在使用期间可任意设置和修改,且可以同时设置多个,随机展示。
最后注意广告等图尽量压缩下,不然用户网络不好的时候,图片又大的话,可能会出现加载过慢或者不加载的问题,图片压缩网站 ⇒ 传送门。
检查app广告设置是否生效
注意:开屏广告和播放器广告必须设置时长,开屏不设置会有问题。
我们设置好广告后,可以刷新下app
的api
缓存,登录api
在的服务器,使用命令:
redis-cli
flushall
然后浏览器访问相关地址,检查下是否有广告数据,如下:
#开屏广告
https://xx.com/api/getad?type=splash
#app广告
https://xx.com/api/appads?type=app
#播放器广告
https://xx.com/api/flowads
https://xx.com
为api
域名,如果3
个广告接口都有数据,那么则设置完毕,否则有一个没数据都会出现访问问题。
首页幻灯片设置
幻灯片就是顶部展示一直轮流滑动的5
个电影,如图:
幻灯片设置
幻灯片其实也就是推荐功能,可以前往视频管理,点击要推荐的电影右侧选项,再点击推荐视频即可。
首页公告说明
关于首页幻灯片下方的公告说明,公告可在EFV高级版
后台,CMS
相关处找到公告管理
并设置,可设置多个公告,会依次循环滑动,相关截图:
图集说明
如果你使用图集
功能,则必须上传至少一个图集,不然该页面可能会一直转圈。
且图集内页自带一个强制图片广告功能,即任何普通用户想看完整图集,都会先看N
秒图片广告,直到图片广告消失,才可以看具体内容。
且只要该用户付费了,也就是在任意一个付费用户组,该图片广告会自动消失,付费到期后,该图片广告会重新出现。
图片广告说明
图集界面强制广告图片为固定的,路径assets/benad.jpg
,尺寸建议800x1164
,且点击后默认跳转购买vip
界面。
如果你不想跳转到购买vip
界面,想跳转其它外部链接,则可以修改lib/app/modules/detail/page.dart
文件,如下:
#181行上下,后期可能会有变动,后面为广告跳转链接,注意使用https,不然可能因安全问题跳不了。
原代码:Get.toNamed("/buy_vip");
修改后:launchURL('https://www.baidu.com');
最后重新打包app
就可以了。
系列说明
系列展示在视频播放页下方,也就是如果你在EFV
后台添加一个系列,并将与该系列有关的视频添加进去,那么该系列里的视频播放列表会展示该系列的其它视频,方便用户查看,样式如图:
系列设置
前往程序后台 ⇒ 点击左侧转码相关 ⇒ 系列管理,点击添加系列,如图:
然后电影
的话,前往视频管理,点击要添加的电影右侧选项,找到添加系列,然后进行搜索添加,如图:
同样,对于剧集
也一样,前往剧集管理,点击要添加的剧集右侧选项,找到添加系列,然后进行搜索添加,如图:
设置好了后,等缓存生效,则会自动显示在app
播放列表。
用户权限及支付设置
提示:app会员模式已精简,和cms互通的就是以下2种模式,也就是只有这2种有效,其它可能会无效。
目前app
支付方式支持信支付和好支付,运营可以走2
种模式,分别如下:
第1种:视频全部免费观看 + 广告推广。
第2种:视频默认全部只能试看n秒 + 升级会员看完整版 + 广告推广 + 部分视频限时免费。
相关设置跟随CMS
,也就是通用,可以参考 ⇒ 用户组会员说明及推荐设置。
注意进入支付管理设置支付的时候,必须设置一下APP
支付页显示信息,即用户支付时看到的提示信息,不然会有问题。
免费模式相关说明
由于app
默认是给付费模式用的,如果走免费模式,可能需要改下app
少许样式,如图:
播放页面的修改lib/app/modules/play/page.dart
,如下:
#找到并删掉以下代码即可
_.havePermission
? Container()
: Container(
padding: EdgeInsets.all(8.0),
child: GradientButton(
increaseWidthBy: double.infinity,
increaseHeightBy: 5.0,
child: Text('购买会员,观看完整影片!'),
callback: () {
Get.toNamed("/buy_vip");
},
gradient: Gradients.byDesign,
shadowColor: Gradients.byDesign.colors.last
.withOpacity(0.25),
),
),
用户页面的可以修改lib/app/modules/user/page.dart
,如下:
#找到并删掉以下代码即可
ListTile(
leading: Icon(Icons.account_circle),
title: Text('购买会员'),
tileColor: Colors.white,
trailing: Icon(Icons.navigate_next),
onTap: () {
Get.toNamed('/buy_vip');
},
),
最后重新构建app
就可以了,然后上述截图有关付费按钮就去掉了。
付费模式相关说明
付费模式下,试看
必须打开,如果你给部分视频设置限时免费,则建议新建一个限时免费
的分类,再把设置过限时免费的视频添加到该分类,方便用户区分。
5 - 竖屏APP设置及注意事项
提示:如果你只想使用app,不想用内置cms,可以关闭内置cms,且用户组等设置依旧在后台cms相关栏进行设置。
APP
打包成功后,需要前往EFV
后台,CMS
管理的app
广告管理,设置开屏广告、app
广告、播放器广告才能正常使用,设置方法看下面。
且竖屏海报app
默认用的封面2
,封面2
相关介绍 ⇒ 传送门。
展示图及广告设置等
对于广告,如果你没适合的广告商,可以随便设置下,顺便美化下app
,相关广告位置如下:
上面的布局图中,app
展示图和app logo
是固定的,也就是打包后就改不了了,其它广告图片可以直接在EFV
后台进行修改设置。
#展示图显示时间由用户请求分离cms的api的延迟决定,如果分离cms的服务器网络足够快,用户请求api时间越短,展示图显示时间越短
1、app展示图(图片参考大小488x680),修改app源码包assets/splash.png,自行将自己的展示图替换进去即可
2、app logo(图片参考大小180x60),修改app源码包assets/logo.png,自行将自己的logo替换进去即可。
#广告设置入口,点击左侧特别功能 ⇒ APP广告管理 ⇒添加app广告
3、开屏广告(图片参考大小680x1030),只需要选择开屏广告、设置广告标题、上传图片、广告链接、广告持续时间。
#app广告我们可以用来推广app下载、购物商品推广、其它相关产品推广,也可以填写与本站有关的说明,会随机出现在app各种内页展示
4、app广告(图片参考大小200x200),只需要选择app广告、设置广告标题(app广告名称),广告词(app广告介绍)、上传图片(app广告图标)、广告链接(app广告链接)。
5、播放器广告(图片参考大小640x360),设置广告标题、上传图片、广告链接、广告持续时间。
开屏广告、app
广告、播放器广告,在使用期间可任意设置和修改,且可以同时设置多个,随机展示。
最后注意广告等图尽量压缩下,不然用户网络不好的时候,图片又大的话,可能会出现加载过慢或者不加载的问题,图片压缩网站 ⇒ 传送门。
检查app广告设置是否生效
注意:开屏广告和播放器广告必须设置时长,开屏不设置会有问题。
我们设置好广告后,可以刷新下app
的api
缓存,登录api
在的服务器,使用命令:
redis-cli
flushall
然后浏览器访问相关地址,检查下是否有广告数据,如下:
#开屏广告
https://xx.com/api/getad?type=splash
#app广告
https://xx.com/api/appads?type=app
#播放器广告
https://xx.com/api/flowads
https://xx.com
为api
域名,如果3
个广告接口都有数据,那么则设置完毕,否则有一个没数据都会出现访问问题。
首页幻灯片说明
幻灯片就是顶部展示一直轮流滑动的5
个电影,如图:
幻灯片板块为推荐视频,也就是前往视频管理 ⇒ 更多选项,找对你想推荐的视频,点击推荐,最后等缓存生效即可。
追剧列表说明
该功能只适合剧集,可以将还未完结的剧集,展示在首页,并提前预告更新时间,方便用户追剧。
追剧设置
前往程序后台 ⇒ 点击左侧CMS
相关 ⇒ 剧集管理,只需要编辑剧集信息,然后对于没有完结的剧集,选择连载中
,并填写更新周期
,如图:
提示:更新周期请设置周一、周二、周三、周四、周五、周六、周日
则对于连载中
的视频会自动显示在首页追剧列表
,且会根据你设置的更新周期
自动归类,直到完结后会自动消失在追剧列表
。
用户权限及支付设置
提示:app会员模式已精简,和cms互通的就是以下2种模式,也就是只有这2种有效,其它可能会无效。
目前app
支付方式只支持易支付,运营可以走2
种模式,分别如下:
第1种:视频全部免费观看 + 广告推广。
第2种:视频默认全部只能试看n秒 + 升级会员看完整版 + 广告推广 + 部分视频限时免费。
相关设置跟随CMS
,也就是通用,可以参考 ⇒ 用户组会员说明及推荐设置。
免费模式相关说明
由于app
默认是给付费模式用的,如果走免费模式,可能需要改下app
少许样式,如图:
播放页面的修改lib/app/modules/play/page.dart
,如下:
#找到并删掉以下代码即可
_.havePermission ? Container() : buyVipButton(),
用户页面的可以修改lib/app/modules/user/page.dart
,如下:
#找到并删掉以下代码即可
ListTile(
leading: Icon(Icons.account_circle),
title: Text('购买会员'),
trailing: Icon(Icons.navigate_next),
onTap: () {
Get.toNamed('/buy_vip');
},
),
最后重新构建app
就可以了,然后上述截图有关付费按钮就去掉了。
付费模式相关说明
付费模式下,试看
必须打开,如果你给部分视频设置限时免费,则建议新建一个限时免费
的分类,再把设置过限时免费的视频添加到该分类,方便用户区分。
6 - app的api接口搭建教程
app
的api
接口是单独搭建的,主要目的是可以加速app
的读取,从而使app
能够更快的读取相应的数据。
大致原理就是,我们将api
接口搭建到一个网络好的vps
里,该接口会从EFV
高级版读取全部信息,并缓存下来,然后会被app
读取,也就是api
接口的服务器网络越好,app
读取越快。
安装api
提示:api可安装到任何低配置服务器,且不建议和转码服务器安装在一起,不然就失去意义了。
系统要求:CentOS 7+
,Debian 8+
,Ubuntu 16+
,AlmaLinux 8+
,Rocky Linux 8+
。
友情提示
如果你的服务器在中国大陆以外,包括中国香港,中国台湾,建议先安装BBR
,可优化TCP
连接,尽可能让用户流畅的观看视频。
如果你是CentOS 7
系统,建议BBR
在新装系统的服务器上安装,毕竟超小概率会造成换内核访问不了服务器。
使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh
该脚本会自动给你更换BBR
内核,并开启BBR
,CentOS 7
系统安装完成后需要重启服务器,其它系统不需要。
如果第一行命令出现wget: unable to resolve host address
报错,则解决方法 ⇒ 传送门。
开始安装
使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
#下载脚本
wget --no-check-certificate -O '/tmp/efvapp-api.sh' 'https://file.efvcms.com/moeapp/shell/efvapp-api.sh'
#运行前请将后面1个参数修改成自己的,即源码安装路径/home,路径自定义,为绝对路径写法,不存在会自动创建
bash /tmp/efvapp-api.sh /home
Enter
运行,直到脚本运行结束,期间会给你安装所有环境。
编辑主要配置文件
如果我的安装目录为/home/efvapp-api
,则配置文件为/home/efvapp-api/config.js
,在SSH
客户端使用命令:
vi /home/efvapp-api/config.js
首先按一下键盘的i
键,进入编辑模式,这时候可以使用键盘进行编辑,编辑代码详解如下:
module.exports = {
host: 'https://www.leimulamu.com', //EFV高级版绑定域名,注意带上http://或https://,后面不带/
rootHost: 'https://www.leimulamu.com', //自适应M3U8域名,一般为EFV高级版绑定域名,注意带上http://或https://,后面不带/
apiKey: 'domybestthingsisgood2', //EFV高级版apikey,自行在转码设置处设置和查看,且需要打开api开关
tokenkey: 'a1b2c3d4', //随便设置或默认
imageHost: 'https://www.leimulamu.com', //封面、截图域名,一般为EFV高级版绑定域名,注意带上http://或https://,后面不带/
apiHost: 'https://lmlm.zhuanma.co', //app的api接口域名,可提示设置,最后将该域名反代绑定到api即可
dburl: "127.0.0.1", //mongodb数据库ip,不用修改,默认即可
db: "efvapp", //mongodb数据库名称,不用修改,默认即可
dbuser: "efvapp", //mongodb数据库用户名,不用修改,默认即可
dbpassword: "efvapp", //mongodb数据库密码,不用修改,默认即可
}
全部编辑好了后,按一下键盘的esc
键退出编辑模式,接下来输入英文:wq
,enter
保存退出。
最后如果你不是很会命令行,依然不会修改,可以使用FTP
软件或宝塔文件管理,找到该文件后手动修改即可。
启动接口
使用SSH
客户端,继续使用命令:
#进入源码目录
cd /home/efvapp-api
#启动
pm2 start ecosystem.config.js --env production
#开机自启
pm2 save
pm2 startup
如果运行命令期间提示-bash: pm2: command not found
,则需要先运行一下source /etc/profile
,然重新打包即可。
启动后,可以访问服务器ip:3010/api/movies
接口,注意访问之前,需要先去视频管理,推荐至少2
个已发布的电影,不然接口会没数据。
推荐后,/api/movies
接口如果显示相关数据,则安装成功;如果一直在读取,且读取不出数据,则可运行命令:
#将下面命令一起复制粘贴进SSH运行
source /etc/profile
cat <<EOF > createdb
use efvapp
db.createUser( { user: "efvapp", pwd: "efvapp", roles: [ { role: "readWrite", db: "efvapp" } ] } )
EOF
mongo<createdb && rm -rf createdb
pm2 reload all
操作后可再试试访问接口,最后访问地址就是服务器ip:3010
,接下来要正常使用需要绑定一个域名,绑定教程 ⇒ 传送门,反代地址修改为127.0.0.1:3010
即可。
当然你有宝塔的话,可以直接使用宝塔添加域名,并设置反向代理,URL
填入https://127.0.0.1:3010
。
7 - 推广app专用cms搭建教程
该cms
采用Nextjs+React+TailwindCSS
开发,将速度优化到了极致,全页面预渲染,点击任何链接,都是秒开!毫无夸张!详情 ⇒ 传送门,演示地址 ⇒ 传送门
这里cms
无后台,通过EFV
的api
获取数据,可以搭建到任何服务器,仅需要网络好点的vps
即可。
使用场景如下:
第一种、转码的时候,转码一个240或者480等清晰度很差的视频,提供给用户观看,然后将用户引流到app观看高清版本。
第二种、打开EFV的试看功能,提供给用户观看试看版本,然后将用户引流到app付费观看完整版本。
安装CMS
系统要求:CentOS 7+
,Debian 8+
,Ubuntu 16+
,AlmaLinux 8+
,Rocky Linux 8+
。
友情提示
如果你的服务器在中国大陆以外,包括中国香港,中国台湾,建议先安装BBR
,可优化TCP
连接,尽可能让用户流畅的观看视频。
如果你是CentOS 7
系统,建议BBR
在新装系统的服务器上安装,毕竟超小概率会造成换内核访问不了服务器。
使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh
该脚本会自动给你更换BBR
内核,并开启BBR
,CentOS 7
系统安装完成后需要重启服务器,其它系统不需要。
如果第一行命令出现wget: unable to resolve host address
报错,则解决方法 ⇒ 传送门。
开始安装
使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
#下载脚本
wget --no-check-certificate -O '/tmp/plus-seo.sh' 'https://file.efvcms.com/moeapp/shell/plus-seo.sh'
#运行前请将后面1个参数修改成自己的,即源码安装路径/home,路径自定义,为绝对路径写法,不存在会自动创建
bash /tmp/plus-seo.sh /home
Enter
运行,直到脚本运行结束,期间会给你安装所有环境。
编辑配置文件
如果我的安装目录为/home/plusseo
,则配置文件为/home/plusseo/seo.config.js
,在SSH
客户端使用命令:
vi /home/plusseo/seo.config.js
首先按一下键盘的i
键,进入编辑模式,这时候可以使用键盘进行编辑,编辑代码详解如下:
const seo = {
host: 'https://www.leimulamu.com', //EFV绑定域名,注意带上http://或https://,后面不带/
apiKey: 'domybestthingsisgood2', //EFV的apikey,自行在转码设置处设置和查看,且需要打开api开关
title: '蜂次元', //plus-seo cms的网站标题
description: '看无删减番剧,就上蜂次元', //plus-seo cms的网站描述
appAd: '下载APP,高清免费无删减!', //plus-seo cms播放页下载app的提示语句
hd: 640, // 320对应240P 480对应360P 640对应480P 1138对应640P //plus-seo cms播放页所提供的m3u8视频分辨率,建议最低分辨率,用来给app引流
app: 'https://www.leimulamu.com/app/android.apk', //plus-seo cms播放页所提供的app下载地址
cdn: 'https://image.beeacg.net/api?url=' //封面图片加速cdn
}
module.exports = seo;
注意封面图片cdn
需要自己搭建,搭建教程 ⇒ 传送门,搭建好节点后,再将节点域名填进去就行。
最后全部编辑好了后,按一下键盘的esc
键退出编辑模式,接下来输入英文:wq
,enter
保存退出。
最后如果你不是很会命令行,依然不会修改,可以使用FTP
软件或宝塔文件管理,找到该文件后手动修改即可。
开始打包和启动
使用SSH
客户端,继续使用命令:
#进入源码目录
cd /home/plusseo
#安装依赖
yarn
#打包
npm run build
#启动程序
pm2 start ecosystem.config.js --env production
#设置开机自启
pm2 save
pm2 startup
如果运行第二个命令提示-bash: npm: command not found
,则需要先运行一下source /etc/profile
,然重新打包即可。
启动完成后,访问地址就是服务器ip:3005
,接下来要正常使用需要绑定一个域名,,绑定教程 ⇒ 传送门,反代地址修改为127.0.0.1:3005
即可。
当然你有宝塔的话,可以直接使用宝塔添加域名,并设置反向代理,URL
填入https://127.0.0.1:3005
。
相关说明
CMS
使用了静态页面缓存,所以你EFV高级版
有数据更新,这边需要点时间自动刷新缓存才可显示,所以遇到数据不及时显示可耐心等待。
关于首页的公告说明,公告可在EFV
后台,CMS
相关处找到,并设置,可设置多个公告,会依次循环滑动,相关截图:
修改重启
如果我们需要修改相关配置,则修改后使用SSH
客户端,继续使用命令:
#进入源码目录
cd /home/plusseo
#打包
npm run build
#重启程序
pm2 reload all
8 - app推送升级版本教程
推送更新
打包时候的applicationId
和签名文件
必须所有app
都要一致,不然更新会失败,所以都要保管好。
修改app检测更新的版本号
提示:该版本号仅用来检测更新使用。
修改文件lib/core/values/strings.dart
,如下:
#建议按年份后2位+月+日格式,修改为最新日期即可
const version = 211211;
注意,app
检测更新是通过检测EFV
后台设置的app
版本号,在和这里设置的版本号进行对比,如果后台设置的版本号大于此处的版本号,则会给用户提示更新。
所以到时候app打包完成后,需要前往EFV
后台将app
版本号和这里设置一样就行,这样此前的app
全部会提示更新。
修改app在系统中显示的版本号
修改app
源码根目录pubspec.yaml
文件,大致如下:
#1.0.0为app在手机系统中显示的版本号,+1为app更新次数,如果不知道更新次数,比前一次app的更新次数大就行
version: 1.0.0+1
关于版本号的修改问题,大更新可以改第一位,小更新改第二位,bug
修复改第三位
将打包好的新app源码丢进更新文件夹
最后我们将新app
打包好后,存放到EFV
的public/app
目录,改名android.apk
就可以了,用户更新的app
会从这里下载。
9 - app卡开屏和不显示图片
APP卡开屏
目前常见的APP
卡开屏有3
种情况,广告未设置,CDN
未配置或运行异常,SSL
证书链问题。
广告未设置
注意:开屏广告和播放器广告必须设置时长,开屏不设置会有问题。
如果你确定设置了广告,且开屏广告和播放器广告的时长都设置正确,那么使用浏览器访问相关地址,如下:
#开屏广告
https://xx.com/api/getad?type=splash
#app广告
https://xx.com/api/appads?type=app
#播放器广告
https://xx.com/api/flowads
https://xx.com
为api
域名,如果3
个广告接口都有数据,那么可以先跳过该问题。
CDN未配置或异常
我们先使用SSH
登录CDN
在的服务器,使用命令:
pm2 log
会输出CDN
的运行日志,然后这时候打开APP
,你会看到请求开屏广告链接的日志,如:
#https://www.leimulamu.com是配置的EFV域名,iqi360bytheay为cdn的apikey值
efvcdn | GET /api?apikey=iqi360bytheay&url=https://www.leimulamu.com/mark/photo-7f0.jpg&force=true&width=640
如果你前面的样式不是/api?apikey=xxx&url=
或者最后面不是&force=true&width=640
,则是APP
的CDN
配置有问题,或者被你误删了点字符串,可修改重新打包。
如果链接没问题,且cdn
的apikey
配置及相关域名配置也正常,那么我使用浏览器访问该地址,如下:
#访问广告链接,也就是&url=后面的链接
https://www.leimulamu.com/mark/photo-7f0.jpg
#访问CDN处理后的广告链接,https://cdn.leimulamu.com为CDN的绑定域名,后面为上面日志看到的链接
https://cdn.leimulamu.com/api?apikey=iqi360bytheay&url=https://www.leimulamu.com/mark/photo-7f0.jpg&force=true&width=640
如果CDN处理后链接访问不了,则可以查看CDN
的运行日志报错,看不懂的可将错误发给我们,协助快速处理问题,能访问则暂时跳过该问题。
ssl证书链有问题
我们先找个检测SSL
证书的在线网站,比如 ⇒ 传送门,分别检测EFV
、API
和CDN
的域名,如果提示证书链等问题,则为该问题,可以重新签发证书,或者换个域名签发。
APP不显示封面
目前常见的APP
不显示封面有2
种情况,CDN
未配置或运行异常,SSL
证书链问题。
CDN未配置或异常
我们先使用SSH
登录CDN
在的服务器,使用命令:
pm2 log
会输出CDN
的运行日志,然后这时候打开APP
,你会看到请求开屏广告链接的日志,如:
#https://www.leimulamu.com是配置的EFV域名,iqi360bytheay为cdn的apikey值
efvcdn | GET /api?apikey=iqi360bytheway&url=https://www.leimulamu.com/poster/5ca1892b1729b7c67c/poster.jpg&force=true&width=360
efvcdn | GET /api?apikey=iqi360bytheway&url=https://www.leimulamu.com/videos/202008/27/5f4761b75a92e5052e2/cover.jpg&force=true&width=360
efvcdn | GET /api?apikey=iqi360bytheway&url=https://www.leimulamu.com/videos/202008/30/5f4a05d45a9b5535d22/350.jpg&force=true&width=360
如果你前面的样式不是/api?apikey=xxx&url=
或者最后面不是&force=true&width=640
,则是APP
的CDN
配置有问题,或者被你误删了点字符串,可修改重新打包。
如果链接没问题,且cdn
的apikey
配置及相关域名配置也正常,那么我使用浏览器访问该地址,如下:
#访问图片链接,也就是&url=后面的链接
https://www.leimulamu.com/poster/5ca1892b1729b7c67c/poster.jpg
#访问CDN处理后的图片链接,#https://cdn.leimulamu.com为CDN的绑定域名,后面为上面日志看到的链接
https://cdn.leimulamu.com/api?apikey=iqi360bytheway&url=https://www.leimulamu.com/poster/5ca1892b1729b7c67c/poster.jpg&force=true&width=360
如果CDN处理后链接访问不了,则可以查看CDN
的运行日志报错,看不懂的可将错误发给我们,协助快速处理问题,能访问则暂时跳过该问题。
ssl证书链有问题
我们先找个检测SSL
证书的在线网站,比如 ⇒ 传送门,分别检测EFV
、API
和CDN
的域名,如果提示证书链等问题,则为该问题,可以重新签发证书,或者换个域名签发。
10 - app移除封面图片cdn配置
app
一般会强制使用我们的自研cdn
,好处也说过,cdn
会给你把app
所有封面,截图等全部转换成体积非常小,每张图大概10kb
左右的webp
,可以使app
图片加载极快,体验非常好。
当然也有人不喜欢自建cdn
,会使用商用cdn
,这里就说下怎么移除内置cdn
配置,改用商用cdn
。
横屏app移除cdn
编辑lib/core/utils/helper.dart
文件,编辑如下:
源代码
String getCDNUrl(String url, {int width = 0, int height = 0}) {
String cdnUrl = 'https://cdn.lkkacg.com/api?apikey=iqi360killtheway&url=' +
url +
'&force=true';
if (width > 0) {
cdnUrl += '&width=' + width.toString();
}
if (height > 0) {
cdnUrl += '&height=' + height.toString();
}
return cdnUrl;
}
String getCDNUrl2(String url, {int width = 0, int height = 0}) {
String cdnUrl =
'https://cdn.lkkacg.com$url?apikey=iqi360killtheway&force=true';
if (width > 0) {
cdnUrl += '&width=' + width.toString();
}
if (height > 0) {
cdnUrl += '&height=' + height.toString();
}
return cdnUrl;
}
修改后的代码
String getCDNUrl(String url, {int width = 0, int height = 0}) {
String cdnUrl = url.replaceAll('efvcms.com', 'efvcdn.com');
return cdnUrl;
}
String getCDNUrl2(String url, {int width = 0, int height = 0}) {
String cdnUrl = 'https://efvcdn.com' + '$url';
return cdnUrl;
}
演示中的efvcms.com
为你app
配置的EFV
高级版绑定域名,efvcdn.com
为你的cdn
域名。
竖屏app移除cdn
编辑lib/core/utils/helper.dart
文件,编辑如下:
源代码
String getCDNUrl(String url, {int width = 0, int height = 0}) {
String cdnUrl = 'https://cdn.lkkacg.com/api?apikey=iqi360killtheway&url=' +
url +
'&force=true';
if (width > 0) {
cdnUrl += '&width=' + width.toString();
}
if (height > 0) {
cdnUrl += '&height=' + height.toString();
}
return cdnUrl;
}
修改后的代码
String getCDNUrl(String url, {int width = 0, int height = 0}) {
String cdnUrl = url.replaceAll('efvcms.com', 'efvcdn.com');
return cdnUrl;
}
演示中的efvcms.com
为你app
配置的EFV
高级版绑定域名,efvcdn.com
为你的cdn
域名。
11 - app修改数据默认缓存时间
现在app
默认的数据缓存时间为1
小时,也就是用户开启app
后,会立即缓存当前数据,需要等1
个小时后才会刷新缓存,才从EFV
高级版获取新的数据,你也可以自己进行修改,这里说下方法。
编辑lib/app/data/provider/dio_provider.dart
文件,批量搜索关键词hours: 1
,且将所有该关键词改成minutes: 20
,也就是将默认1
小时改成20
分钟。
修改完成后,重新打包即可。
12 - 隐藏app用的EFV域名前端
由于一些因素,我们只想让app
配置的EFV
切片域名只提供app
使用,不想让它显示CMS
前台任何页面,这里可以用nginx
规则实现。
我们可以编辑app
配置的EFV
切片域名的反向代理配置,将以下代码全部替换即可,代码如下:
location /
{
location ~ ^/(en|tc|cn|admin|cms|tv)(/.*)?$ {
return 403;
}
location = / {
return 403;
}
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_cache_convert_head off;
proxy_request_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
}
配置好了后,我们访问前台CMS
和后台任何页面都会显示403
,但m3u8
,jpg
,api
接口等都依旧正常可用。