Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ethan
/
appframe
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit c653cd80
authored
2026-01-06 18:32:46 +0800
by
tanghuan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
集成开屏广告
1 parent
ca90354c
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
456 additions
and
7 deletions
android/app/build.gradle.kts
android/app/proguard-rules.pro
android/app/src/main/AndroidManifest.xml
android/build.gradle.kts
android/config.gradle.kts
lib/bloc/web_cubit.dart
pubspec.yaml
android/app/build.gradle.kts
View file @
c653cd8
...
...
@@ -108,4 +108,29 @@ dependencies {
//implementation("com.tencent.timpush:meizu:8.7.7201")
// Google Firebase Cloud Messaging (Google FCM)
//implementation("com.tencent.timpush:fcm:8.7.7201")
// 聚合SDK start
implementation("com.yfanads.ads:sdk-core:${rootProject.ext["sdk_versionName"]}")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
// 聚合SDK end
//百度广告SDK(适配+原sdk)
implementation("com.yfanads.ads:adapter-bd:${rootProject.ext["bd_sdk_version"]}")
//穿山甲广告SDK(适配+原sdk)
implementation("com.yfanads.ads:adapter-csj:${rootProject.ext["csj_sdk_version"]}")
implementation("com.squareup.okhttp3:okhttp:3.12.1")
//快手广告SDK(适配+原sdk)
implementation("com.yfanads.ads:adapter-ks:${rootProject.ext["ks_sdk_version"]}")
implementation("androidx.localbroadcastmanager:localbroadcastmanager:1.1.0")
//优量汇广告SDK(适配+原sdk)
implementation("com.yfanads.ads:adapter-ylh:${rootProject.ext["ylh_sdk_version"]}")
//京东广告SDK(适配+原来sdk)
implementation("com.yfanads.ads:adapter-jd:${rootProject.ext["jd_sdk_version"]}")
//华为广告SDK(适配+原来sdk)
implementation("com.yfanads.ads:adapter-hw:${rootProject.ext["hw_sdk_version"]}")
//小米广告SDK(适配+原来sdk)
implementation("com.yfanads.ads:adapter-xm:${rootProject.ext["xm_sdk_version"]}")
//oppo广告SDK(适配+原来sdk)
implementation("com.yfanads.ads:adapter-oppo:${rootProject.ext["oppo_sdk_version"]}")
//荣耀广告 (适配+源sdk)
implementation("com.yfanads.ads:adapter-ry:${rootProject.ext["ry_sdk_version"]}")
}
\ No newline at end of file
android/app/proguard-rules.pro
View file @
c653cd8
...
...
@@ -25,4 +25,211 @@
}
# 可选:如果遇到兼容性问题,可以忽略警告
-
dontwarn
com
.
tencent
.
mm
.
**
\ No newline at end of file
-
dontwarn
com
.
tencent
.
mm
.
**
# 亿帆广告
-
keepattributes
Signature
# For using GSON @Expose annotation
-
keepattributes
*
Annotation
*
# Gson specific classes
-
dontwarn
sun
.
misc
.
**
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-
keep
class
com
.
google
.
gson
.
examples
.
android
.
model
.
**
{
<
fields
>
;
}
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-
keep
class
*
extends
com
.
google
.
gson
.
TypeAdapter
-
keep
class
*
implements
com
.
google
.
gson
.
TypeAdapterFactory
-
keep
class
*
implements
com
.
google
.
gson
.
JsonSerializer
-
keep
class
*
implements
com
.
google
.
gson
.
JsonDeserializer
# Prevent R8 from leaving Data object members always null
-
keepclassmembers
,
allowobfuscation
class
*
{
@
com
.
google
.
gson
.
annotations
.
SerializedName
<
fields
>
;
}
# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-
keep
,
allowobfuscation
,
allowshrinking
class
com
.
google
.
gson
.
reflect
.
TypeToken
-
keep
,
allowobfuscation
,
allowshrinking
class
*
extends
com
.
google
.
gson
.
reflect
.
TypeToken
##---------------End: proguard configuration for Gson ----------
## ------聚合开始
-
keep
class
com
.
yfanads
.
android
.
**
{
*
;
}
-
keep
class
com
.
yfanads
.
ads
.
**
{
*
;
}
## ------聚合结束
# -------三方依赖开始
-
keep
class
com
.
google
.
**
{
*
;
}
-
dontwarn
okio
.
**
-
dontwarn
com
.
ak
.
**
-
dontwarn
android
.
webkit
.
**
-
dontwarn
com
.
bytedance
.
sdk
.
**
-
keep
class
android
.
**
{
*
;
}
-
keep
public
class
*
implements
com
.
bumptech
.
glide
.
module
.
GlideModule
-
keep
public
enum
com
.
bumptech
.
glide
.
load
.
resource
.
bitmap
.
ImageHeaderParser
$
**
{
**
[]
$
VALUES
;
public
*
;
}
# -------三方依赖结束
# csj sdk start
#3500以及以下版本混淆规则如下:
-
keep
class
com
.
bytedance
.
sdk
.
openadsdk
.
**
{
*
;
}
-
keep
public
interface
com
.
bytedance
.
sdk
.
openadsdk
.
downloadnew
.
**
{
*
;}
-
keep
class
com
.
pgl
.
sys
.
ces
.
*
{
*
;}
-
keep
class
com
.
bytedance
.
embed_dr
.
**
{
*
;}
-
keep
class
com
.
bytedance
.
embedapplog
.
**
{
*
;}
#3600版本-3800版本混淆规则如下:
-
keep
class
com
.
bytedance
.
sdk
.
openadsdk
.
**
{
*
;
}
-
keep
public
interface
com
.
bytedance
.
sdk
.
openadsdk
.
downloadnew
.
**
{
*
;}
-
keep
class
ms
.
bd
.
c
.
**
{
*
;}
-
keep
class
com
.
bytedance
.
mobsec
.
**
{
*
;}
-
keep
class
com
.
bytedance
.
embed_dr
.
**
{
*
;}
-
keep
class
com
.
bytedance
.
embedapplog
.
**
{
*
;}
-
keep
interface
com
.
bytedance
.
frameworks
.
baselib
.
network
.
http
.
cronet
.
I
*
{
*
;}
-
keepnames
class
com
.
bytedance
.
framwork
.
core
.
sdkmonitor
.
SDKMonitorUtils
#3900版本及以上版本混淆规则如下:
-
keep
class
com
.
bytedance
.
sdk
.
openadsdk
.
**
{
*
;
}
-
keep
class
com
.
bytedance
.
frameworks
.
**
{
*
;
}
-
keep
class
ms
.
bd
.
c
.
Pgl
.
**
{
*
;}
-
keep
class
com
.
bytedance
.
mobsec
.
metasec
.
ml
.
**
{
*
;}
-
keep
class
com
.
ss
.
android
.
**
{
*
;}
-
keep
class
com
.
bytedance
.
embedapplog
.
**
{
*
;}
-
keep
class
com
.
bytedance
.
embed_dr
.
**
{
*
;}
-
keep
class
com
.
bykv
.
vk
.
**
{
*
;}
-
keep
class
bykvm
*.**
-
keep
class
com
.
bytedance
.
msdk
.
adapter
.
**
{
public
*
;
}
-
keep
class
com
.
bytedance
.
msdk
.
api
.
**
{
public
*
;
}
-
keep
class
com
.
bytedance
.
msdk
.
base
.
TTBaseAd
{
*
;}
-
keep
class
com
.
bytedance
.
msdk
.
adapter
.
TTAbsAdLoaderAdapter
{
public
*
;
protected
<
fields
>
;
}
# csj sdk end
#baidu start
-
keep
class
com
.
baidu
.
mobads
.
**
{
*
;
}
# ks SDK
-
keep
class
org
.
chromium
.
**
{
*
;}
-
keep
class
org
.
chromium
.
**
{
*
;
}
-
keep
class
aegon
.
chrome
.
**
{
*
;
}
-
keep
class
com
.
kwai
.
**
{
*
;
}
-
dontwarn
com
.
kwai
.
**
-
dontwarn
com
.
kwad
.
**
-
dontwarn
com
.
ksad
.
**
-
dontwarn
aegon
.
chrome
.
**
# GDT sdk start
-
dontwarn
com
.
qq
.
e
.
**
-
keep
class
com
.
qq
.
e
.
**
{
*
;}
-
dontpreverify
# JD SDK
-
keep
class
com
.
jd
.
ad
.
sdk
.
**
{
*
;
}
# Xm SDK
-
keep
class
com
.
miui
.
zeus
.
**
{
*
;
}
# Oppo SDK
-
keep
class
com
.
opos
.
**
{
*
;}
-
keep
class
com
.
heytap
.
msp
.
mobad
.
**
{
*
;}
-
keep
class
com
.
heytap
.
openid
.
**
{
*
;}
-
keep
class
okio
.
**
{
*
;
}
-
keeppackagenames
com
.
heytap
.
nearx
.
tapplugin
# HuaWei SDK
-
keep
class
com
.
huawei
.
openalliance
.
ad
.
**
{
*
;
}
-
keep
class
com
.
huawei
.
hms
.
ads
.
**
{
*
;
}
# Vivo SDK
-
dontwarn
okhttp3
.
**
-
dontwarn
android
.
support
.
v4
.
**
-
dontwarn
com
.
squareup
.
okhttp
.
**
-
keep
class
com
.
vivo
.
*.**
{
*
;
}
-
dontwarn
com
.
bytedance
.
article
.
common
.
nativecrash
.
NativeCrashInit
-
keep
class
com
.
bytedance
.
sdk
.
openadsdk
.
**
{
*
;}
-
keep
public
interface
com
.
bytedance
.
sdk
.
openadsdk
.
downloadnew
.
**
{
*
;}
-
keep
class
com
.
pgl
.
sys
.
ces
.
*
{
*
;}
-
keep
class
com
.
qq
.
e
.
**
{
public
protected
*
;
}
-
keep
class
android
.
support
.
v4
.
**
{
public
*
;
}
-
dontwarn
com
.
vivo
.
secboxsdk
.
**
-
keep
class
com
.
vivo
.
secboxsdk
.
SecBoxCipherException
{
*
;
}
-
keep
class
com
.
vivo
.
secboxsdk
.
jni
.
SecBoxNative
{
*
;
}
-
keep
class
com
.
vivo
.
secboxsdk
.
BuildConfig
{
*
;
}
-
keep
class
android
.
support
.
v7
.
widget
.
**
{
*
;}
# TanX
##优化配置,可进行字段优化、内联、类合并、代码简化、算法指令精简等操作。
-
optimizations
code
/
removal
/
simple
,
code
/
removal
/
advanced
,
method
/
removal
/
parameter
,
method
/
inlining
/
short
,
method
/
inlining
/
tailrecursion
##执行优化的次数,默认1次,多次能达到更好的优化效果。
-
optimizationpasses
5
# 混合时不使用大小写混合,混合后的类名为小写
-
dontusemixedcaseclassnames
#保持参数名 指定keep已经被keep的方法的参数类型和参数名称,在混淆library库时非常有用,可供IDE帮助用户进行信息提示和代码自动填充。
-
keepparameternames
#指定保留属性,多个属性可以用多个-keepattributes配置,也可以用逗号分隔,可以使用? * **通配符,并且可以使用否定符(!)。
#
比如,在混淆
ibrary库时
,应该至少
keep
Exceptions
,
InnerClasses
,
Signature
;如果在追踪代码,还需要
keep符号表
;使用到注解时也需要
keep
。
-
keepattributes
Exceptions
,
InnerClasses
,
Signature
,
Deprecated
,
SourceFile
,
LineNumberTable
,
*
Annotation
*,
EnclosingMethod
#优化时允许访问并修改有修饰符的类和类的成员, 混淆后的类名还会改变地方,到其他包中 需要,所有被混淆的都到一个包去,不需要保留原来的结构
-
allowaccessmodification
#混淆前后类、方法、类成员等的对照
-
printmapping
mapping
.
txt
##屏蔽警告
-
ignorewarnings
#指定在混淆过程中输出更多信息,配置这个选项后,在遇到异常时,将输出完整的堆栈,而不仅仅是异常消息
-
verbose
# 指定不去忽略非公共的库类(不跳过library中的非public的类)
-
dontskipnonpubliclibraryclasses
#指定不去忽略非公共库的类成员
-
dontskipnonpubliclibraryclassmembers
-
dontwarn
com
.
alibaba
.
fastjson
.
**
-
keep
class
com
.
alibaba
.
fastjson
.
**
{
*
;}
-
keep
class
com
.
bumptech
.
glide
.
**
{
*
;}
-
keep
class
com
.
alimm
.
tanx
.
**
{
*
;}
# 自动曝光数据的防混淆
-
keep
class
*
implements
java
.
io
.
Serializable
{
<
fields
>
;
<
methods
>
;
}
#荣耀 start
-
keep
class
com
.
hihonor
.
adsdk
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
adsdk
.
base
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
adsdk
.
banner
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
adsdk
.
intersititial
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
adsdk
.
reward
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
adsdk
.
picturetextad
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
adsdk
.
splash
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
adsdk
.
common
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
hianalytics
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
updater
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
secure
.
android
.
common
.
encrypt
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
secure
.
android
.
common
.
ssl
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
ads
.
identifier
.
**
{
*
;}
-
keep
,
allowshrinking
class
com
.
hihonor
.
dlinstall
.
**
{
*
;}
-
keep
class
com
.
squareup
.
wire
.
**
{
*
;
}
-
keep
class
com
.
opensource
.
svgaplayer
.
proto
.
**
{
*
;
}
\ No newline at end of file
android/app/src/main/AndroidManifest.xml
View file @
c653cd8
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
package=
"cn.banxe.bxe"
>
<!-- 网络权限 -->
<uses-permission
android:name=
"android.permission.INTERNET"
/>
...
...
@@ -18,12 +20,32 @@
<uses-permission
android:name=
"android.permission.READ_MEDIA_IMAGES"
/>
<uses-permission
android:name=
"android.permission.READ_MEDIA_VIDEO"
/>
<!-- 广告SDK推荐的权限 -->
<uses-permission
android:name=
"android.permission.READ_PHONE_STATE"
/>
<!-- 广告SDK可选权限 -->
<uses-permission
android:name=
"android.permission.REQUEST_INSTALL_PACKAGES"
/>
<!--注意: 该权限不强制获取,即使没有获取也能正常运行;获取该权限将帮助优化投放广告精准度。-->
<uses-permission
android:name=
"android.permission.SYSTEM_ALERT_WINDOW"
/>
<!--穿山甲的必要权限,解决安全风险漏洞,发送和注册广播事件需要调用带有传递权限的接口-->
<permission
android:name=
"${applicationId}.openadsdk.permission.TT_PANGOLIN"
android:protectionLevel=
"signature"
/>
<uses-permission
android:name=
"${applicationId}.openadsdk.permission.TT_PANGOLIN"
/>
<!-- 如果有视频相关的广告且使用textureView播放,请务必添加,否则黑屏 -->
<uses-permission
android:name=
"android.permission.WAKE_LOCK"
/>
<!-- 安全隐患,需要删除 -->
<uses-permission
android:name=
"android.permission.BROADCAST_STICKY"
tools:node=
"remove"
/>
<application
android:label=
"班小二"
android:name=
"cn.banxe.bxe.MyApplication"
android:icon=
"@mipmap/launcher_icon"
android:networkSecurityConfig=
"@xml/network_security_config"
>
android:networkSecurityConfig=
"@xml/network_security_config"
android:allowBackup=
"false"
tools:replace=
"android:allowBackup,android:label"
>
<activity
android:name=
".MainActivity"
android:exported=
"true"
...
...
@@ -38,9 +60,9 @@
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name=
"io.flutter.embedding.android.NormalTheme"
android:resource=
"@style/NormalTheme"
/>
android:name=
"io.flutter.embedding.android.NormalTheme"
android:resource=
"@style/NormalTheme"
/>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
...
...
@@ -51,6 +73,55 @@
<meta-data
android:name=
"flutterEmbedding"
android:value=
"2"
/>
<!--穿山甲-->
<provider
android:name=
"com.bytedance.sdk.openadsdk.TTFileProvider"
android:authorities=
"${applicationId}.TTFileProvider"
android:exported=
"false"
android:grantUriPermissions=
"true"
>
<meta-data
android:name=
"android.support.FILE_PROVIDER_PATHS"
android:resource=
"@xml/ea_csj_file_paths"
/>
</provider>
<provider
android:name=
"com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
android:authorities=
"${applicationId}.TTMultiProvider"
android:exported=
"false"
/>
<!--优量汇-->
<provider
android:name=
"com.qq.e.comm.GDTFileProvider"
android:authorities=
"${applicationId}.gdt.fileprovider"
android:exported=
"false"
android:grantUriPermissions=
"true"
>
<meta-data
android:name=
"android.support.FILE_PROVIDER_PATHS"
android:resource=
"@xml/gdt_file_path"
/>
</provider>
<!-- 小米 -->
<provider
android:name=
"androidx.core.content.FileProvider"
android:authorities=
"${applicationId}.fileprovider"
android:exported=
"false"
android:grantUriPermissions=
"true"
>
<meta-data
android:name=
"android.support.FILE_PROVIDER_PATHS"
android:resource=
"@xml/xm_file_paths"
/>
</provider>
<!--亿帆-->
<provider
android:name=
"com.yfanads.android.adx.download.AdxFileProvider"
android:authorities=
"${applicationId}.AdxFileProvider"
android:exported=
"false"
android:grantUriPermissions=
"true"
>
<meta-data
android:name=
"android.support.FILE_PROVIDER_PATHS"
android:resource=
"@xml/adxfilepaths"
/>
</provider>
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
...
...
@@ -63,4 +134,4 @@
<data
android:mimeType=
"text/plain"
/>
</intent>
</queries>
</manifest>
</manifest>
\ No newline at end of file
android/build.gradle.kts
View file @
c653cd8
apply(from = "config.gradle.kts")
allprojects {
repositories {
google()
mavenCentral()
// 京东
maven { url = uri("https://jitpack.io") }
// 穿山甲
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
// 荣耀仓库
maven { url = uri("https://developer.hihonor.com/repo/") }
// 米盟 - 需要特殊处理认证
maven {
url = uri("https://repos.xiaomi.com/maven")
credentials {
username = "mimo-developer"
password =
"AKCp8ih1PFG9tV8qaLyws67dLGZi8udFM39SfsHgihN15cgsiRvHuxj8JzFmuZjaViVeNawaA"
}
}
// 华为
maven { url = uri("https://developer.huawei.com/repo") }
maven { url = uri("https://maven.aliyun.com/repository/public/") }
maven { url = uri("https://maven.yfanads.com/repository/maven-public/") }
}
}
...
...
android/config.gradle.kts
0 → 100644
View file @
c653cd8
rootProject.extra.apply {
set("compileSdk", 31)
set("minSdk", 21)
set("targetSdk", 31)
set("supportLibVersion", "28.0.0")
set("glide_version", "4.9.0")
set("glide_transformations", "3.0.1")
set("app_versionName", "6.0.7.1")
// 亿帆广告
set("sdk_versionName", "6.0.7.1")
// 百度
set("bd_sdk_version", "9.42.0-${this["sdk_versionName"]}")
// 快手
set("ks_sdk_version", "v4.9.20.1-${this["sdk_versionName"]}")
// 穿山甲
set("csj_sdk_version", "7.1.3.2-${this["sdk_versionName"]}")
// 优量汇
set("ylh_sdk_version", "4.660.1530-${this["sdk_versionName"]}")
// 京东
set("jd_sdk_version", "2.6.32-${this["sdk_versionName"]}")
// 华为
set("hw_sdk_version", "13.4.78.301-${this["sdk_versionName"]}")
// oppo
set("oppo_sdk_version", "810004-${this["sdk_versionName"]}")
// 小米
set("xm_sdk_version", "5.3.7-${this["sdk_versionName"]}")
// 荣耀
set("ry_sdk_version", "1.0.24.300-${this["sdk_versionName"]}")
}
\ No newline at end of file
lib/bloc/web_cubit.dart
View file @
c653cd8
...
...
@@ -15,8 +15,10 @@ import 'package:appframe/services/recorder_service.dart';
import
'package:device_info_plus/device_info_plus.dart'
;
import
'package:dio/dio.dart'
;
import
'package:equatable/equatable.dart'
;
import
'package:flutter/foundation.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
import
'package:fluttertoast/fluttertoast.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'package:permission_handler/permission_handler.dart'
;
import
'package:shared_preferences/shared_preferences.dart'
;
...
...
@@ -25,6 +27,13 @@ import 'package:volume_controller/volume_controller.dart';
import
'package:webview_flutter/webview_flutter.dart'
;
import
'package:wechat_assets_picker/wechat_assets_picker.dart'
;
import
'package:wechat_camera_picker/wechat_camera_picker.dart'
;
import
'package:yf_ads/bean/yf_ads_init_sdk_android_bean.dart'
;
import
'package:yf_ads/bean/yf_ads_init_sdk_base_bean.dart'
;
import
'package:yf_ads/bean/yf_ads_init_sdk_ios_bean.dart'
;
import
'package:yf_ads/bean/yf_ads_splash_bean.dart'
;
import
'package:yf_ads/callbacks/yf_ads_callback.dart'
;
import
'package:yf_ads/managers/yf_splash.dart'
;
import
'package:yf_ads/yf_ads.dart'
;
class
WebState
extends
Equatable
{
final
int
selectedIndex
;
...
...
@@ -202,6 +211,8 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver {
HttpServer
?
_server
;
PlayerService
?
_playerService
;
RecorderService
?
_recorderService
;
// 亿帆广告
YFAds
?
_adsFlutterPlugin
;
WebViewController
get
controller
=>
_controller
;
...
...
@@ -215,10 +226,79 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver {
router
.
go
(
'/loginMain'
);
});
}
else
{
_initAdsSdk
().
then
((
value
)
=>
_loadColdSplashAd
(
true
));
_init
();
}
}
Future
<
void
>
_initAdsSdk
()
async
{
_adsFlutterPlugin
=
YFAds
.
instance
;
YFAdsInitSDKBaseBean
?
reaperInitSdkBaseBean
;
if
(
Platform
.
isAndroid
)
{
const
RELEASE_APP_ID
=
"edd7b801541f4371a1f40212a76869fd"
;
reaperInitSdkBaseBean
=
const
YFAdsInitSDKAndroidBean
(
appId:
RELEASE_APP_ID
,
appKey:
''
,
enableLog:
true
);
}
else
if
(
Platform
.
isIOS
)
{
const
RELEASE_APP_ID
=
"b23c5c5c7ebd4dff9cf51ee9ee15aa77"
;
reaperInitSdkBaseBean
=
const
YFAdsInitSDKIOSBean
(
appId:
RELEASE_APP_ID
,
appKey:
''
);
}
await
_adsFlutterPlugin
?.
initAdsSDK
(
reaperInitSdkBaseBean
!);
}
Future
<
void
>
_loadColdSplashAd
(
bool
loadAndShow
)
async
{
String
?
positionId
;
if
(
Platform
.
isAndroid
)
{
positionId
=
"90906223b4e6427da7a1885b44afacc8"
;
}
else
if
(
Platform
.
isIOS
)
{
positionId
=
"5212de4238344338913289d4358f3e45"
;
}
var
reaperSplashBean
=
YFAdsSplashBean
(
positionId:
positionId
,
loadAndShow:
loadAndShow
,
callBack:
_splashAdCallBack
);
await
YFSplashManager
.
loadSplashAd
(
reaperSplashBean
);
}
void
_splashAdCallBack
(
YFAdsCallBack
data
)
{
debugPrint
(
"splashAdCallBack:
${data.method}
${data.tag}
"
);
if
(
defaultTargetPlatform
==
TargetPlatform
.
android
&&
data
.
method
==
YFAdsCallBack
.
YF_ADS_ANDROID_SUCCESS
)
{
Fluttertoast
.
showToast
(
msg:
"加载成功"
,
toastLength:
Toast
.
LENGTH_SHORT
);
}
if
(
defaultTargetPlatform
==
TargetPlatform
.
iOS
)
{
switch
(
data
.
method
)
{
case
'yfSplashAdDidLoad'
:
Fluttertoast
.
showToast
(
msg:
"开屏广告加载成功"
,
toastLength:
Toast
.
LENGTH_SHORT
);
break
;
case
'yfSplashAdExpose'
:
{
if
(
Platform
.
isIOS
)
{
// emit(state.copyWith(pageAbsorbing: true));
}
Fluttertoast
.
showToast
(
msg:
"开屏广告曝光成功"
,
toastLength:
Toast
.
LENGTH_SHORT
);
}
break
;
case
'yfSplashAdLoadFail'
:
{
if
(
defaultTargetPlatform
==
TargetPlatform
.
iOS
)
{
// emit(state.copyWith(pageAbsorbing: false));
}
Fluttertoast
.
showToast
(
msg:
"开屏广告加载失败"
,
toastLength:
Toast
.
LENGTH_SHORT
);
}
break
;
case
'yfSplashAdDidClick'
:
Fluttertoast
.
showToast
(
msg:
"开屏广告点击"
,
toastLength:
Toast
.
LENGTH_SHORT
);
break
;
case
'yfSplashAdDidClose'
:
{
if
(
defaultTargetPlatform
==
TargetPlatform
.
iOS
)
{
// emit(state.copyWith(pageAbsorbing: false));
}
Fluttertoast
.
showToast
(
msg:
"开屏广告关闭"
,
toastLength:
Toast
.
LENGTH_SHORT
);
}
break
;
default
:
}
}
}
Future
<
void
>
_init
()
async
{
// 当前使用的H5版本
var
curVersion
=
getIt
.
get
<
SharedPreferences
>().
getString
(
Constant
.
h5VersionKey
)
??
Constant
.
h5Version
;
...
...
pubspec.yaml
View file @
c653cd8
...
...
@@ -84,6 +84,10 @@ dependencies:
open_file
:
^3.5.10
cupertino_icons
:
^1.0.8
# --- 亿帆广告插件 ---
yf_ads
:
^0.4.1
fluttertoast
:
^8.2.5
dev_dependencies
:
flutter_test
:
sdk
:
flutter
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment