218 lines
7.0 KiB
Dart
218 lines
7.0 KiB
Dart
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] 竞价成功、失败后调用 [FlutterUnioAdBiddingResult] ,isBidding = true时必传
|
||
static Future<bool> showRewardVideoAd({
|
||
FlutterUnioAdBiddingResult? 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] 竞价成功、失败后调用 [FlutterUnioAdBiddingResult] ,isBidding = true时必传
|
||
static Future<bool> showUnifiedInterstitialAD({
|
||
FlutterUnioAdBiddingResult? result,
|
||
}) async {
|
||
return await _channel.invokeMethod(
|
||
"showInterstitialAD",
|
||
result?.toJson() ?? {},
|
||
);
|
||
}
|
||
|
||
///
|
||
/// banner广告
|
||
/// [androidId] android广告ID
|
||
/// [iosId] ios广告ID
|
||
/// [viewWidth] 广告宽 单位dp
|
||
/// [viewHeight] 广告高 单位dp 宽高比应该为6.4:1
|
||
/// [FlutterUnionAdBannerCallBack] 广告回调
|
||
/// [downloadConfirm] 下载二次确认弹窗 默认false
|
||
/// [isBidding] 是否开启竞价模式 默认false
|
||
/// [bidding] 竞价成功、失败后调用 [FlutterUnioAdBiddingController] ,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。
|
||
/// [FlutterUnionAdSplashCallBack] 广告回调
|
||
/// [downloadConfirm] 下载二次确认弹窗 默认false
|
||
/// [isBidding] 是否开启竞价模式 默认false
|
||
/// [bidding] 竞价成功、失败后调用 [FlutterUnioAdBiddingController] ,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
|
||
/// [FlutterUnionAdExpressCallBack] 回调事件
|
||
/// [downloadConfirm] 下载二次确认弹窗 默认false
|
||
/// [isBidding] 是否开启竞价模式 默认false
|
||
/// [bidding] 竞价成功、失败后调用 [FlutterUnioAdBiddingController] ,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", {});
|
||
}
|
||
}
|