union_ad_ssgf/lib/flutter_union_ad.dart
2024-11-25 17:53:47 +08:00

218 lines
7.0 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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", {});
}
}