开屏广告
开屏广告
请确保SDK已初始化成功再请求广告
此章节将演示如何请求在Flutter
环境下请求与展示开屏广告
开屏广告分为原生开屏广告
和开屏广告组件
两种类型:
原生开屏广告是拉起一个新的AndroidActivity,接入相对简单,效率更高;
原生开屏组件可以集成在当前的页面中,使用更加灵活。
原生开屏广告
调用ZJAndroid.loadSplashAd
方法请求原生开屏广告并处理结果。其中请求失败与展示失败事件合并为了展示失败的Event:
class ZJAndroid {
/// 加载原生开屏
static void loadSplashAd(
/// 广告位ID
String posId,
{
/// 自定义背景图的原生资源类型,仅支持(default|mipmap|drawable),其他值无效
/// default时不需要配置bgResName,SDK会读取原生的默认启动页背景
/// mipmap或drawable时,需要配置资源名,默认或原生资源不存在时默认主题背景
String bgResType = "",
/// 自定义背景图的原生资源名,需要搭配 bgResType 传入,默认开屏页为白色背景
String bgResName = "",
/// 开屏回调。具体事件见 example
Function(ZJEvent ret)? splashListener});
}
原生开屏回调说明
ret.action | 说明 |
---|---|
ZJEventAction.onAdError | 广告展示失败 ret.code:错误码,非错误事件为0 ret.msg:错误信息,非错误事件为空字符串 |
ZJEventAction.onAdClose | 广告展示成功并已关闭 |
原生开屏广告示例
example/lib/ad/splash.dart
/// 原生加载广告
void _loadSplashAd(String posId) {
ZJAndroid.loadSplashAd(
// 广告位ID
posId,
// 自定义背景图的原生资源类型,仅支持(default|mipmap|drawable),其他值无效
// default时不需要配置bgResName,SDK会读取原生的默认启动页背景
// mipmap或drawable时,需要配置资源名,默认或原生资源不存在时默认主题背景
bgResType: "default",
// 回调
splashListener: (ret) {
// 原生加载仅回调请求失败和关闭
switch (ret.action) {
// 广告出错
case ZJEventAction.onAdError:
Fluttertoast.showToast(msg: "开屏错误:${ret.msg}");
if (kDebugMode) {
print("${ret.action}:${ret.code}-${ret.msg}");
}
break;
// 广告关闭
case ZJEventAction.onAdClose:
Fluttertoast.showToast(msg: "开屏关闭");
break;
default:
// ignore
}
});
}
开屏广告组件
相比原生接入,Widget接入更加灵活,可以直接嵌入到FlutterView中。但需要处理View的移除,且需要保证容器的宽度大于屏幕宽度(非当前界面,是包含顶部StatusBar的整体屏幕)的95%,高度大于屏幕高度的85%,否则会出现展示无效,不会计费的问题。
/// 开屏广告视图
class ZJSplashView extends StatelessWidget {
/// 广告位ID
final String posId;
/// 宽
final double width;
/// 高
final double height;
/// 回调
final Function(ZJEvent ret) splashListener;
const ZJSplashView(this.posId,
{Key? key,
required this.width,
required this.height,
required this.splashListener})
: super(key: key);
}
开屏组件回调说明
ret.action | 说明 |
---|---|
ZJEventAction.onAdError | 广告展示失败 ret.code:错误码,非错误事件为0 ret.msg:错误信息,非错误事件为空字符串 |
ZJEventAction.onAdShow | 广告展示成功 |
ZJEventAction.onAdClick | 广告点击 |
ZJEventAction.onAdClose | 广告关闭 |
开屏组件接入示例
example/lib/ad/splash.dart
child: ZJSplashView(
// 广告位ID
posId,
width: double.infinity,
height: double.infinity,
// 回调
splashListener: (ret) {
switch (ret.action) {
// 广告出错
case ZJEventAction.onAdError:
Fluttertoast.showToast(msg: "开屏错误:${ret.msg}");
if (kDebugMode) {
print("${ret.action}:${ret.code}-${ret.msg}");
}
_reset();
break;
// 展示成功
case ZJEventAction.onAdShow:
Fluttertoast.showToast(msg: "开屏展示");
break;
// 点击广告
case ZJEventAction.onAdClick:
Fluttertoast.showToast(msg: "开屏点击");
break;
// 关闭
case ZJEventAction.onAdClose:
Fluttertoast.showToast(msg: "开屏关闭");
_reset();
break;
default:
// ignore
}
},
),