Flutter广告插件gtads_ylh的使用
Flutter广告插件gtads_ylh的使用
相关插件
- flutter_tencentad:腾讯优量汇广告本体,内部已集成无需额外引入,配置相关查看插件说明。
- GTAds:聚合广告插件,必须引入。
使用
pubspec.yaml
dependencies:
// 广告基础库 必须引入
gtads: ^1.5.0
// 优量汇广告
gtads_ylh: ^1.5.x
引入
import 'package:gtads_ylh/gtads_ylh.dart';
使用
仅需通过以下方法插入广告至聚合插件,无需关注具体广告的调用:
// 别名、androidId、iosId
GTAdsYlhProvider("ylh", "1200009850", "1200718557",
// 安卓隐私管理
androidPrivacy: {
// 优量汇SDK将不采集mac地址
"mac_address": false,
// 允许优量汇SDK采集android_id
"android_id": false,
// 允许收集ip
"wipaddr": false
},
// 安卓隐私合规 是否开启收集应用安装状态
enableCollectAppInstallStatus: false,
)
完整示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:gtads/gtads.dart';
import 'package:gtads_ylh/gtads_ylh.dart';
import 'package:gtads_ylh_example/banner_page.dart';
import 'package:gtads_ylh_example/native_page.dart';
import 'package:gtads_ylh_example/splash_page.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Index(),
);
}
}
class Index extends StatefulWidget {
[@override](/user/override)
_IndexState createState() => _IndexState();
}
class _IndexState extends State<Index> {
List<Map<String, bool>> initAd = [];
[@override](/user/override)
void initState() {
super.initState();
init();
}
Future<void> init() async {
GTAds.addProvider(GTAdsYlhProvider(
"ylh",
"1200009850",
"1200718557",
androidPrivacy: {
// 优量汇SDK将不采集mac地址
"mac_address": false,
// 允许优量汇SDK采集android_id
"android_id": false,
// 允许收集ip
"wipaddr": false
},
// 安卓隐私合规 是否开启收集应用安装状态
enableCollectAppInstallStatus: false,
));
initAd = await GTAds.init(isDebug: true);
setState(() {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('GTAds_ylh demo'),
),
body: Center(
child: SingleChildScrollView(
child: Column(
children: [
Text("初始化结果$initAd"),
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('横幅广告'),
onPressed: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const BannerPage(),
),
);
},
),
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('激励广告'),
onPressed: () async {
var b = await GTAds.rewardAd(
codes: [
GTAdsCode(
alias: "ylh",
probability: 5,
androidId: "5042816813706194",
iosId: "3035541744552914")
],
// 奖励名称
rewardName: "100金币",
// 奖励数量
rewardAmount: 100,
// 用户id
userId: "user100",
// 扩展参数
customData: "123",
timeout: 10,
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("激励广告开始请求失败");
}
},
),
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('插屏广告'),
onPressed: () async {
var b = await GTAds.insertAd(
codes: [
GTAdsCode(
alias: "ylh",
probability: 5,
androidId: "2015540734459587",
iosId: "5095940784157969")
],
isFull: false,
timeout: 6,
callBack: GTAdsCallBack(
onShow: (code) {
print("插屏广告显示 ${code.toJson()}");
},
onFail: (code, message) {
print("插屏广告失败 ${code?.toJson()} $message");
},
onClick: (code) {
print("插屏广告点击 ${code.toJson()}");
},
onClose: (code) {
print("插屏广告关闭 ${code.toJson()}");
},
));
if (b) {
print("插屏广告开始请求");
}
},
),
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('开屏广告'),
onPressed: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const SplashPage(),
),
);
},
),
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('信息流广告'),
onPressed: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const NativePage(),
),
);
},
),
],
),
),
),
),
);
}
}
更多关于Flutter广告插件gtads_ylh的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter广告插件gtads_ylh的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用gtads_ylh
插件的一个基本示例。这个插件通常用于集成广告服务,例如Google Ads或第三方广告服务。不过,由于gtads_ylh
可能是一个特定于某个广告网络或第三方服务的插件,因此具体实现可能会有所不同。以下示例将基于一般Flutter插件的使用方式来展示如何集成和使用它。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加gtads_ylh
依赖项(请注意,gtads_ylh
可能是一个假设的插件名,你需要替换为实际的插件名):
dependencies:
flutter:
sdk: flutter
gtads_ylh: ^x.y.z # 替换为实际的版本号
然后运行flutter pub get
来获取依赖项。
2. 导入插件
在你的Dart文件中导入该插件:
import 'package:gtads_ylh/gtads_ylh.dart';
3. 初始化插件
通常,广告插件需要在应用启动时进行初始化。你可以在main.dart
文件的void main()
函数中进行初始化:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化广告插件
await GtAdsYlh.instance.init(
appId: '你的广告应用ID', // 替换为你的广告应用ID
// 其他初始化参数,根据插件文档添加
);
runApp(MyApp());
}
4. 显示广告
在你的Flutter应用中显示广告。例如,显示一个横幅广告:
import 'package:flutter/material.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Ads Example'),
),
body: Center(
child: BannerAdWidget(), // 自定义的横幅广告组件
),
),
);
}
}
class BannerAdWidget extends StatefulWidget {
@override
_BannerAdWidgetState createState() => _BannerAdWidgetState();
}
class _BannerAdWidgetState extends State<BannerAdWidget> {
BannerAd? _bannerAd;
@override
void initState() {
super.initState();
_loadBannerAd();
}
void _loadBannerAd() {
// 创建横幅广告实例
_bannerAd = BannerAd(
adUnitId: '你的横幅广告单元ID', // 替换为你的横幅广告单元ID
size: AdSize.banner,
listener: BannerAdListener(
onAdLoaded: () {
// 广告加载成功
_bannerAd?.show();
},
onAdFailedToLoad: (AdError error) {
// 广告加载失败
print('Ad failed to load: ${error.message}');
},
),
)..load();
}
@override
Widget build(BuildContext context) {
return Container(
height: _bannerAd?.size?.height ?? 0,
child: AdWidget(ad: _bannerAd),
);
}
@override
void dispose() {
_bannerAd?.dispose();
super.dispose();
}
}
5. 处理广告生命周期事件
确保处理广告的生命周期事件,例如在应用暂停和恢复时暂停和恢复广告:
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.paused) {
GtAdsYlh.instance.pauseAllAds();
} else if (state == AppLifecycleState.resumed) {
GtAdsYlh.instance.resumeAllAds();
}
super.didChangeAppLifecycleState(state);
}
注意
gtads_ylh
插件的具体方法和属性可能有所不同,因此请参考该插件的官方文档进行详细的集成和使用。- 广告ID和单元ID需要替换为你从广告网络获取的实际值。
- 确保遵守广告网络的政策和指南,以避免违规和广告展示问题。
这个示例提供了一个基本的框架,你可以根据gtads_ylh
插件的实际文档和API进行调整和扩展。