Flutter可扩展聚合广告插件GTAds

编程入门 行业动态 更新时间:2024-10-08 04:26:24

Flutter可扩展聚合广告<a href=https://www.elefans.com/category/jswz/34/1771202.html style=插件GTAds"/>

Flutter可扩展聚合广告插件GTAds

由于之前flutter_universalad开发时未考虑到扩展性,后面在接入新的广告商时发现接入很麻烦,所以对插件进行重构,开发了GTAds,能够按需加载需要的广告,也可以通过简单的接入就实现自定义广告,开发者无需关注广告的展示,插件会根据配置自动选择不同的广告商广告进行展示,暂时不支持bidding模式。
广告的展示选择通过传入的展示概率来选择展示。

一、支持插件

  • gtads(本体)
  • gtads_csj(穿山甲广告支持)
  • gtads_ylh(优量汇广告支持)
  • gtads_sigmob(Sigmob广告支持)

二、使用

1、pubspec.yaml

除gtads本体必须引入外,其余广告可以按需引入。如果想要的广告不支持,则可以通过通过扩展接口进行自定义广告接入。

 //广告基础库 必须引入gtads: ^0.0.6//需要使用的广告按需引入,以下可选//穿山甲广告gtads_csj: ^0.0.5//优量汇广告gtads_ylh: ^0.0.2//Sigmob广告gtads_sigmob: ^0.0.1

2、引入

import 'package:gtads/gtads.dart';

3、添加广告

广告初始化前必须完成添加

GTAds.addProvider([GTAdsCsjProvider("csj","5098580","5098580")]);

GTAdsCsjProviderc参数
alias: 广告别名,必须保证唯一,后续广告加载回调将返回这个别名 识别是哪家的广告
androidId: andorid appId
iosId: ios appId

4、初始化

//isDebug 是否开启debug日志
await GTAds.init(isDebug: true);
//return [{csj: true}],添加的广告初始化结果

5、横幅广告

 GTAdsBannerWidget(//需要的广告位数组codes: [GTAdsCode(alias: "csj", probability: 5,androidId: "945410197",iosId: "945410197")],//宽width: 300,//高height: 400,//超时时间 当广告失败后会依次重试其他广告 直至所有广告均加载失败 设置超时时间可提前取消timeout: 5,//回调callBack: GTAdsCallBack(onShow: (code) {print("Banner显示 ${code.toJson()}");},onClick: (code) {print("Banner点击 ${code.toJson()}");},onFail: (code,message) {print("Banner错误 ${code.toJson()} $message");},onClose: (code) {print("Banner关闭 ${code.toJson()}");},
)),

6、激励广告

  var b = await GTAds.rewardAd(//需要的广告位数组codes: [GTAdsCode(alias: "csj", probability: 5,androidId: "945418088",iosId: "945418088")],//奖励名称rewardName: "100金币",//奖励数量rewardAmount: 100,//用户iduserId: "user100",//扩展参数customData: "123",//超时时间 当广告失败后会依次重试其他广告 直至所有广告均加载失败 设置超时时间可提前取消timeout: 5,callBack: GTAdsCallBack(onShow: (code) {print("激励广告显示 ${code.toJson()}");}, onFail: (code, message) {print("激励广告失败 ${code.toJson()} $message");}, onClick: (code) {print("激励广告点击 ${code.toJson()}");}, onClose: (code) {print("激励广告关闭 ${code.toJson()}");}, onVerify: (code, verify, transId, rewardName,rewardAmount) {print("激励广告关闭 ${code.toJson()} $verify $transId $rewardName $rewardAmount");}, onExpand: (code, param) {print("激励广告自定义参数 ${code.toJson()} $param");}),
);
if (b) {print("激励广告开始请求");
}else{print("激励广告开始请求失败");
}

7、插屏广告

var b = await GTAds.insertAd(//需要的广告位组codes: [GTAdsCode(alias: "csj", probability: 5,androidId: "946201351",iosId: "946201351")],isFull: false,width: 300,height: 500,//超时时间 当广告失败后会依次重试其他广告 直至所有广告均加载失败 设置超时时间可提前取消timeout: 5,callBack: GTAdsCallBack(onShow: (code) {print("插屏广告显示 ${code.toJson()}");},onFail: (code, message) {print("插屏广告失败 ${code.toJson()} $message");},onClick: (code) {print("插屏广告点击 ${code.toJson()}");},onClose: (code) {print("插屏广告关闭 ${code.toJson()}");},
));

8、开屏广告

GTAdsSplashWidget(//需要的广告位组codes: [GTAdsCode(alias: "csj", probability: 5,androidId: "887367774",iosId: "887367774")],width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height,//超时时间 当广告失败后会依次重试其他广告 直至所有广告均加载失败 设置超时时间可提前取消timeout: 5,callBack: GTAdsCallBack(onShow: (code) {print("开屏显示 ${code.toJson()}");},onClick: (code) {print("开屏点击 ${code.toJson()}");},onFail: (code, message) {print("开屏错误 ${code.toJson()} $message");Navigator.pop(context);},onClose: (code) {print("开屏关闭 ${code.toJson()}");Navigator.pop(context);},),
),

9、信息流

GTAdsNativeWidget(//需要的广告位组codes: [GTAdsCode(alias: "csj", probability: 5,androidId: "945417699",iosId: "945417699")],width: 300,height: 200,//超时时间 当广告失败后会依次重试其他广告 直至所有广告均加载失败 设置超时时间可提前取消timeout: 5,callBack: GTAdsCallBack(onShow: (code) {print("信息流显示 ${code.toJson()}");},onClick: (code) {print("信息流点击 ${code.toJson()}");},onFail: (code,message) {print("信息流错误 ${code.toJson()} $message");},onClose: (code) {print("信息流关闭 ${code.toJson()}");},),
),

三、广告位GTAdsCode说明

如果不想展示某个广告商的广告,则可以通过不传入该广告的code来显示

//别名 需要与GTAds.addProvider传入的Provider别名保持一致 不然无法加载对应广告
String alias = "";
//当前广告位 androidid
String? androidId;
//当前广告位 iosid
String? iosId;
//当前广告位出现的概率 必须大于0,如果小于0则不会加载该广告
int probability = 0;

四、广告扩展

通过继承实现GTAdsProvider类来实现自定义广告接入

class MYAdProvider extends GTAdsProvider{MYAdProvider({required String alias,String? androidId,String? iosId}): super(alias, androidId, iosId); @overrideFuture<bool> initAd(bool isDebug) {// TODO: 调用广告初始化,返回是否成功throw UnimplementedError();}@overrideWidget? bannerAd(GTAdsCode adCode, double width, double height, GTAdsCallBack? callBack) {// TODO: 返回一个横幅广告Widget,如果不支持则返回nullthrow UnimplementedError();}@overrideFuture<bool> insertAd(GTAdsCode adCode, bool isFull, double? width, double? height, GTAdsCallBack? callBack) {// TODO: 调用插屏广告方法,如果不支持则返回nullthrow UnimplementedError();}@overrideWidget? nativeAd(GTAdsCode adCode, double width, double height, GTAdsCallBack? callBack) {// TODO: 返回一个信息流广告Widget,如果不支持则返回nullthrow UnimplementedError();}@overrideFuture<bool> rewardAd(GTAdsCode adCode, String rewardName, int rewardAmount, String userId, String customData, GTAdsCallBack? callBack) {// TODO: 调用激励广告方法,如果不支持则返回nullthrow UnimplementedError();}@overrideWidget? splashAd(GTAdsCode adCode, double width, double height, GTAdsCallBack? callBack) {// TODO: 返回一个开屏广告Widget,如果不支持则返回nullthrow UnimplementedError();}}

五、说明

个人开发时间有限目前仅显示了穿山甲、优量汇、Sigmob的广告接入,后续有空会实现其他的广告。如果有小伙伴实现了其他的广告,欢迎pr、或者提供插件链接,如果没问题可以加入的插件支持列表中。

更多推荐

Flutter可扩展聚合广告插件GTAds

本文发布于:2024-03-23 19:41:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742047.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:插件   广告   Flutter   GTAds

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!