这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

APP构建及使用教程

APP详情及演示,构建教程,推送升级,移除自带CDN配置,屏蔽APP的切片域名前端,卡开屏界面等相关问题。

1 - APP详情介绍及演示

横屏APP,竖屏APP,文字介绍,图片演示,下载演示。

特别提示

对于使用app的,则强烈建议全部的视频必须转码,而不是只秒切,转码可以矫正相关参数,100%可以在app中播放;不转码只秒切可能有一定几率会出现播放不了的情况。

如果你只想使用app,不想用内置cms,可以关闭内置cms,且用户组等设置依旧在后台cms相关栏进行设置。

相关说明

APP为免费赠送品,累计购买高级版高阶授权以上的用户可免费领取,后期也免费更新。

APPIos/Android双端源码,使用Flutter开发,非h5weex构建可比拟,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系统手动打包安卓APP,推荐使用Docker快速打包。

特别提示

这里主要讲解Windows系统上手动打包Android appIOS 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 101112,点击右下角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,搜索并安装DartFlutter插件即可。

安装JAVA

JAVA下载地址 ⇒ 传送门,选择对应的系统版本,找到JREsmi链接,下载安装即可。

检查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

如果FlutterAndroid toolchainHTTP 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位的平板。 

然后接下来,需要相关设置就可以用,横屏app设置教程 ⇒ 传送门,竖屏app设置教程 ⇒ 传送门

3 - 使用Docker快速构建APP

安卓端APP推荐使用Docker快速打包,只需要配置好相关文件,就可以直接打包成APP。

由于墙的关系,尽量使用中国大陆以外的服务器进行打包操作,VPS和独立服务器均可,直接在转码服务器上打包也可以,推荐CentOS 7+AlmaLinuxRocky LinuxDebianUbuntu系统。

构建步骤

不要漏掉任何一个设置步骤,不然很可能打包后,使用会有问题。

修改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位的平板。 

然后接下来,需要相关设置就可以用,横屏app设置教程 ⇒ 传送门,竖屏app设置教程 ⇒ 传送门

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广告设置是否生效

注意:开屏广告和播放器广告必须设置时长,开屏不设置会有问题。

我们设置好广告后,可以刷新下appapi缓存,登录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.comapi域名,如果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广告设置是否生效

注意:开屏广告和播放器广告必须设置时长,开屏不设置会有问题。

我们设置好广告后,可以刷新下appapi缓存,登录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.comapi域名,如果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是一个单独中转加速EFV数据的应用,可以使用户更快获取数据,使APP体验更好。

appapi接口是单独搭建的,主要目的是可以加速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内核,并开启BBRCentOS 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键退出编辑模式,接下来输入英文:wqenter保存退出。

最后如果你不是很会命令行,依然不会修改,可以使用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通过提供最低清晰度或试看的视频给用户看,看高清或完整版需下载APP,达到引流目的。

cms采用Nextjs+React+TailwindCSS开发,将速度优化到了极致,全页面预渲染,点击任何链接,都是秒开!毫无夸张!详情 ⇒ 传送门,演示地址 ⇒ 传送门

这里cms无后台,通过EFVapi获取数据,可以搭建到任何服务器,仅需要网络好点的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内核,并开启BBRCentOS 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键退出编辑模式,接下来输入英文:wqenter保存退出。

最后如果你不是很会命令行,依然不会修改,可以使用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推送升级版本教程

第一版APP公布后,后面如果我们需要更换相关信息、或更新源码等,都可以给旧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打包好后,存放到EFVpublic/app目录,改名android.apk就可以了,用户更新的app会从这里下载。

9 - app卡开屏和不显示图片

使用APP过程中,如果相关广告不设置、CDN配置错误或运行失败,均会导致卡开屏等问题。

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.comapi域名,如果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,则是APPCDN配置有问题,或者被你误删了点字符串,可修改重新打包。

如果链接没问题,且cdnapikey配置及相关域名配置也正常,那么我使用浏览器访问该地址,如下:

#访问广告链接,也就是&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证书的在线网站,比如 ⇒ 传送门,分别检测EFVAPICDN的域名,如果提示证书链等问题,则为该问题,可以重新签发证书,或者换个域名签发。

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,则是APPCDN配置有问题,或者被你误删了点字符串,可修改重新打包。

如果链接没问题,且cdnapikey配置及相关域名配置也正常,那么我使用浏览器访问该地址,如下:

#访问图片链接,也就是&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证书的在线网站,比如 ⇒ 传送门,分别检测EFVAPICDN的域名,如果提示证书链等问题,则为该问题,可以重新签发证书,或者换个域名签发。

10 - app移除封面图片cdn配置

为了使APP的图片加载更快,我们强制使用自研CDN,如果你有使用服务商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小时,也就是你修改任何EFV的设置,发布视频均会1小时后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使用。

由于一些因素,我们只想让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,但m3u8jpgapi接口等都依旧正常可用。