调整 广告逻辑

This commit is contained in:
Jin857
2024-11-25 11:54:02 +08:00
parent d4d67247a2
commit e834f3b943
63 changed files with 4078 additions and 1644 deletions

275
lib/flutter_union_ad.dart Normal file
View File

@@ -0,0 +1,275 @@
export 'flutter_union_ad_stream.dart';
export 'flutter_union_ad_code.dart.dart';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:union_ad_ssgf/banner/banner_ad_view.dart';
import 'package:union_ad_ssgf/splash/splash_ad_view.dart';
import 'flutter_union_ad_code.dart.dart';
import 'express/express_ad_view.dart';
part 'flutter_union_ad_callback.dart';
part 'flutter_unio_ad_bidding_controller.dart';
class FlutterUnionAd {
static const MethodChannel _channel = MethodChannel('flutter_union_ad');
///
/// # SDK注册初始化
///
/// [androidId] androidId 必填
///
/// [iosId] iosId 必填
///
/// [channelId] channelId 渠道id [FlutterTencentadChannel]
///
/// [personalized] personalized 是否开启个性化广告 [FlutterTencentadPersonalized]
///
static Future<bool> register({
required String androidId,
required String iosId,
int? personalized,
bool? debug,
int? channelId,
}) async {
return await _channel.invokeMethod("register", {
"androidId": androidId,
"iosId": iosId,
"debug": debug ?? false,
"channelId": channelId ?? FlutterTencentadChannel.other,
"personalized": personalized ?? FlutterTencentadPersonalized.show,
});
}
///
/// # 获取SDK版本号
///
static Future<String> getSDKVersion() async {
return await _channel.invokeMethod("getSDKVersion");
}
///
/// # 激励视频广告预加载
///
/// [androidId] android广告ID
///
/// [iosId] ios广告ID
///
/// [rewardName] 奖励名称
///
/// [rewardAmount] 奖励金额
///
/// [userID] 用户id
///
/// [customData] 扩展参数,服务器回调使用
///
/// [downloadConfirm] 下载二次确认弹窗 默认false
///
/// [videoMuted] 是否静音 默认false
///
/// [isBidding] 是否开启竞价模式 默认false
static Future<bool> loadRewardVideoAd({
required String androidId,
required String iosId,
required String rewardName,
required int rewardAmount,
required String userID,
String? customData,
bool? downloadConfirm,
bool? videoMuted,
bool? isBidding,
}) async {
return await _channel.invokeMethod("loadRewardVideoAd", {
"androidId": androidId,
"iosId": iosId,
"rewardName": rewardName,
"rewardAmount": rewardAmount,
"userID": userID,
"customData": customData ?? "",
"videoMuted": videoMuted ?? false,
"downloadConfirm": downloadConfirm ?? false,
"isBidding": isBidding ?? false,
});
}
///
/// # 显示激励广告
///
/// [result] 竞价成功、失败后调用 [FlutterTencentBiddingResult] ,isBidding = true时必传
static Future<bool> showRewardVideoAd(
{FlutterTencentBiddingResult? result}) async {
return await _channel.invokeMethod(
"showRewardVideoAd", result?.toJson() ?? {});
}
///
/// # 预加载插屏广告
///
/// [androidId] android广告ID
///
/// [iosId] ios广告ID
///
/// [isFullScreen] 是否全屏
///
/// [downloadConfirm] 下载二次确认弹窗 默认false
///
/// [isBidding] 是否开启竞价模式 默认false
///
static Future<bool> loadUnifiedInterstitialAD({
required String androidId,
required String iosId,
required bool isFullScreen,
bool? downloadConfirm,
bool? isBidding,
}) async {
return await _channel.invokeMethod("loadInterstitialAD", {
"androidId": androidId,
"iosId": iosId,
"isFullScreen": isFullScreen,
"downloadConfirm": downloadConfirm ?? false,
"isBidding": isBidding ?? false,
});
}
///
/// # 显示新模板渲染插屏
///
///
/// [result] 竞价成功、失败后调用 [FlutterTencentBiddingResult] ,isBidding = true时必传
///
static Future<bool> showUnifiedInterstitialAD(
{FlutterTencentBiddingResult? result}) async {
return await _channel.invokeMethod(
"showInterstitialAD", result?.toJson() ?? {});
}
///
/// # banner广告
///
/// [androidId] android广告ID
///
/// [iosId] ios广告ID
///
/// [viewWidth] 广告宽 单位dp
///
/// [viewHeight] 广告高 单位dp 宽高比应该为6.4:1
///
/// [FlutterTencentAdBannerCallBack] 广告回调
///
/// [downloadConfirm] 下载二次确认弹窗 默认false
///
/// [isBidding] 是否开启竞价模式 默认false
///
/// [bidding] 竞价成功、失败后调用 [FlutterTencentAdBiddingController] ,isBidding = true时必传
///
static Widget bannerAdView({
required String androidId,
required String iosId,
required double viewWidth,
required double viewHeight,
bool? downloadConfirm,
bool? isBidding,
FlutterUnioAdBiddingController? bidding,
FlutterUnionAdBannerCallBack? callBack,
}) {
return BannerAdView(
androidId: androidId,
iosId: iosId,
viewWidth: viewWidth,
viewHeight: viewHeight,
callBack: callBack,
downloadConfirm: downloadConfirm ?? false,
isBidding: isBidding ?? false,
bidding: bidding,
);
}
///
/// # 开屏广告
///
/// [androidId] android广告ID
///
/// [iosId] ios广告ID
///
/// [fetchDelay] 设置开屏广告从请求到展示所花的最大时长(并不是指广告曝光时长),
/// 取值范围为[1500, 5000]ms。如果需要使用默认值可以调用上一个构造方法
/// 或者给 fetchDelay 设为0。
///
/// [FlutterTencentAdSplashCallBack] 广告回调
///
/// [downloadConfirm] 下载二次确认弹窗 默认false
///
/// [isBidding] 是否开启竞价模式 默认false
///
/// [bidding] 竞价成功、失败后调用 [FlutterTencentAdBiddingController] ,isBidding = true时必传
///
static Widget splashAdView({
required String androidId,
required String iosId,
required int fetchDelay,
bool? downloadConfirm,
bool? isBidding,
FlutterUnioAdBiddingController? bidding,
FlutterUnionAdSplashCallBack? callBack,
}) {
return SplashAdView(
androidId: androidId,
iosId: iosId,
fetchDelay: fetchDelay,
callBack: callBack,
downloadConfirm: downloadConfirm ?? false,
isBidding: isBidding ?? false,
bidding: bidding,
);
}
///
/// # 动态信息流/横幅/视频贴片广告
///
/// [androidId] android广告ID
///
/// [iosId] ios广告ID
///
/// [viewWidth] 广告宽 单位dp
///
/// [viewHeight] 广告高 单位dp
///
/// [FlutterTencentAdExpressCallBack] 回调事件
///
/// [downloadConfirm] 下载二次确认弹窗 默认false
///
/// [isBidding] 是否开启竞价模式 默认false
///
/// [bidding] 竞价成功、失败后调用 [FlutterTencentAdBiddingController] ,isBidding = true时必传
///
static Widget expressAdView({
required String androidId,
required String iosId,
required int viewWidth,
required int viewHeight,
bool? downloadConfirm,
bool? isBidding,
FlutterUnioAdBiddingController? bidding,
FlutterUnionAdExpressCallBack? callBack,
}) {
return ExpressAdView(
androidId: androidId,
iosId: iosId,
viewWidth: viewWidth,
viewHeight: viewHeight,
callBack: callBack,
downloadConfirm: downloadConfirm ?? false,
isBidding: isBidding ?? false,
bidding: bidding,
);
}
///进入APP下载列表页
static Future<bool> enterAPPDownloadListPage() async {
return await _channel.invokeMethod("enterAPPDownloadListPage", {});
}
}