Flutter广告插件ksad的使用
Flutter广告插件ksad的使用
快手广告Flutter版本
官方文档
版本更新
本地开发环境
[✓] Flutter (Channel stable, 3.24.3, on macOS 14.6.1 23G93 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 16.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] Android Studio (version 2023.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2024.2.4)
[✓] VS Code (version 1.95.2)
[✓] Connected device (4 available)
[✓] Network resources
集成步骤
1、pubspec.yaml
ksad: ^latest
引入:
import 'package:ksad/ksad.dart';
注:
如果andorid出现NoClassDefFoundError闪退
java.lang.NoClassDefFoundError: Failed resolution of:Landroidx/localbroadcastmanager/content/LocalBroadcastManager
则在app下build.gradle中引入库
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
使用
1、SDK初始化
await KSAd.register(
//androidId
androidId: "1070600001",
//iosId
iosId: "1070600001",
//是否显示日志log
debug: true,
//是否显示个性化推荐广告
personal: true,
//是否开启程序化广告
programmatic: true,
)
2、获取SDK版本
await KSAd.getSDKVersion();
3、信息流广告(模版)
KSAdNativeWidget(
//andorid广告位id
androidId: "10706000004",
//ios广告位id
iosId: "10706000004",
//广告宽
viewWidth: 300,
//广告高 加载成功后会自动修改为sdk返回广告高
viewHeight: 200,
//广告回调
callBack: KSAdNativeCallBack(
onShow: (){
print("信息流广告显示");
},
onClose: (){
print("信息流广告关闭");
},
onFail: (message){
print("信息流广告出错 $message");
},
onClick: (){
print("信息流广告点击");
}
),
)
4、开屏广告
KSAdSplashWidget(
androidId: "10511000010",
iosId: "10511000009",
callBack: KSAdSplashCallBack(
onShow: (){
print("开屏广告显示");
},
onClick: (){
print("开屏广告点击");
},
onSkip: () {
print("开屏广告跳过");
Navigator.of(context).pop();
},
onClose: (){
print("开屏广告关闭");
Navigator.of(context).pop();
},
onFail: (msg){
print("开屏广告错误 $msg");
Navigator.of(context).pop();
}
),
)
5、激励广告
预加载广告
await KSAd.loadRewardAd(
//android广告id
androidId: "10706000001",
//ios广告id
iosId: "10706000001",
//用户id
userID: "123",
//奖励
rewardName: "100金币",
//奖励数
rewardAmount: 100,
//json扩展参数 服务器回调使用
customData: "",
);
显示广告
await KSAd.showRewardAd();
广告监听
KSAdStream.initAdStream(
//激励广告
rewardCallBack: KSAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onClick: () {
print("激励广告点击");
},
onFail: (message) {
print("激励广告失败 $message");
},
onClose: () {
print("激励广告关闭");
},
onReady: () async {
print("激励广告预加载准备就绪");
await KSAd.showRewardAd();
},
onUnReady: () {
print("激励广告预加载未准备就绪");
},
onVerify: (hasReward, rewardName, rewardAmount) {
print("激励广告奖励 $hasReward $rewardName $rewardAmount");
},
),
);
6、插屏广告
预加载广告
await KSAd.loadInsertAd(
//android广告id
androidId: "10706000001",
//ios广告id
iosId: "10706000001",
);
显示广告
await KSAd.showInsertAd();
广告监听
KSAdStream.initAdStream(
//插屏广告
insertCallBack: KSAdInsertCallBack(
onShow: () {
print("插屏广告显示");
},
onClick: () {
print("插屏广告点击");
},
onFail: (message) {
print("插屏广告失败 $message");
},
onClose: () {
print("插屏广告关闭");
},
onReady: () async {
print("插屏广告预加载准备就绪");
await KSAd.showInsertAd();
},
onUnReady: () {
print("插屏广告预加载未准备就绪");
},
)
)
插件链接
Flutter插件 | 地址 |
---|---|
字节-穿山甲广告插件 | flutter_unionad |
腾讯-优量汇广告插件 | flutter_tencentad |
百度-百青藤广告插件 | baiduad |
字节-Gromore聚合广告 | gromore |
Sigmob广告 | sigmobad |
信天翁广告 | quakerbirdad |
快手广告 | ksad |
聚合广告插件(迁移至GTAds) | flutter_universalad |
GTAds聚合广告 | GTAds |
字节穿山甲内容合作插件 | flutter_pangrowth |
文档预览插件 | file_preview |
滤镜 | gpu_image |
开源不易,觉得有用的话可以请作者喝杯奶茶🧋
联系方式
- Email: gstory0404@gmail.com
- blog:https://www.gstory.cn/
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:ksad/ksad.dart';
import 'package:ksad_example/native_page.dart';
import 'package:ksad_example/splash_page.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
bool _isRegister = false;
String _sdkVersion = "";
StreamSubscription? _adStream;
[@override](/user/override)
void initState() {
super.initState();
_register();
_adStream = KSAdStream.initAdStream(
//激励广告
rewardCallBack: KSAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onClick: () {
print("激励广告点击");
},
onFail: (message) {
print("激励广告失败 $message");
},
onClose: () {
print("激励广告关闭");
},
onReady: () async {
print("激励广告预加载准备就绪");
await KSAd.showRewardAd();
},
onUnReady: () {
print("激励广告预加载未准备就绪");
},
onVerify: (hasReward, rewardName, rewardAmount) {
print("激励广告奖励 $hasReward $rewardName $rewardAmount");
},
),
//插屏广告
insertCallBack: KSAdInsertCallBack(
onShow: () {
print("插屏广告显示");
},
onClick: () {
print("插屏广告点击");
},
onFail: (message) {
print("插屏广告失败 $message");
},
onClose: () {
print("插屏广告关闭");
},
onReady: () async {
print("插屏广告预加载准备就绪");
await KSAd.showInsertAd();
},
onUnReady: () {
print("插屏广告预加载未准备就绪");
},
),
);
}
///初始化
Future<void> _register() async {
_isRegister = await KSAd.register(
//androidId
androidId: "2296000003",
//iosId
iosId: "2296000003",
//是否显示日志log
debug: true,
//是否显示个性化推荐广告
personal: true,
//是否开启程序化广告
programmatic: true,
);
_sdkVersion = await KSAd.getSDKVersion();
setState(() {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('快手广告插件'),
),
body: Center(
child: Column(
children: [
Text('快手SDK初始化: $_isRegister\n'),
Text('SDK版本: $_sdkVersion\n'),
//激励广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('激励广告'),
onPressed: () async {
await KSAd.loadRewardAd(
//android广告id
androidId: "22960000015",
//ios广告id
iosId: "22960000015",
//用户id
userID: "123",
//奖励
rewardName: "100金币",
//奖励数
rewardAmount: 100,
//json扩展参数 服务器回调使用
customData: "",
);
},
),
//信息流广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('信息流广告'),
onPressed: () async {
Navigator.push(context, MaterialPageRoute(builder: (_) {
return const NativePage();
}));
},
),
//开屏广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('开屏广告'),
onPressed: () async {
Navigator.push(context, MaterialPageRoute(builder: (_) {
return const SplashPage();
}));
},
),
//插屏广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('插屏广告'),
onPressed: () async {
await KSAd.loadInsertAd(
//android广告id
androidId: "22960000020",
//ios广告id
iosId: "22960000019",
);
},
),
],
),
),
);
}
}
更多关于Flutter广告插件ksad的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告插件ksad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中使用 ksad
插件来集成广告功能,通常是指集成了快手广告 SDK(KSAdSDK)。以下是一个基本的使用步骤和指南,帮助你快速在 Flutter 项目中集成和展示快手广告。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 ksad
插件的依赖项。假设你使用的是官方提供的 ksad
插件(如果没有官方插件,可以使用第三方插件或手动集成 SDK)。
dependencies:
flutter:
sdk: flutter
ksad: ^版本号 # 替换为实际的版本号
然后运行 flutter pub get
来安装依赖。
2. 初始化 KSAdSDK
在使用广告之前,你需要在 main.dart
或者某个初始化代码块中初始化 KSAdSDK。
import 'package:ksad/ksad.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 KSAdSDK
await KSAd.initialize(
appId: 'your_app_id', // 替换为你的快手广告 App ID
debug: true, // 是否开启调试模式
);
runApp(MyApp());
}
3. 加载和展示广告
ksad
插件通常提供多种广告类型,例如 Banner 广告、插屏广告、激励视频广告等。以下是如何加载和展示这些广告的基本示例。
3.1 Banner 广告
import 'package:flutter/material.dart';
import 'package:ksad/ksad.dart';
class BannerAdExample extends StatefulWidget {
@override
_BannerAdExampleState createState() => _BannerAdExampleState();
}
class _BannerAdExampleState extends State<BannerAdExample> {
KSAdBannerAd? _bannerAd;
@override
void initState() {
super.initState();
_loadBannerAd();
}
void _loadBannerAd() {
_bannerAd = KSAdBannerAd(
adUnitId: 'your_banner_ad_unit_id', // 替换为你的 Banner 广告单元 ID
adSize: KSAdBannerAdSize.banner, // 广告尺寸
listener: KSAdBannerAdListener(
onAdLoaded: (ad) {
print('BannerAd loaded.');
},
onAdFailedToLoad: (ad, error) {
print('BannerAd failed to load: $error');
},
),
);
_bannerAd?.load();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Banner Ad Example'),
),
body: Center(
child: _bannerAd != null
? AdWidget(ad: _bannerAd!)
: CircularProgressIndicator(),
),
);
}
@override
void dispose() {
_bannerAd?.dispose();
super.dispose();
}
}
3.2 插屏广告
import 'package:flutter/material.dart';
import 'package:ksad/ksad.dart';
class InterstitialAdExample extends StatefulWidget {
@override
_InterstitialAdExampleState createState() => _InterstitialAdExampleState();
}
class _InterstitialAdExampleState extends State<InterstitialAdExample> {
KSAdInterstitialAd? _interstitialAd;
void _loadInterstitialAd() {
_interstitialAd = KSAdInterstitialAd(
adUnitId: 'your_interstitial_ad_unit_id', // 替换为你的插屏广告单元 ID
listener: KSAdInterstitialAdListener(
onAdLoaded: (ad) {
print('InterstitialAd loaded.');
},
onAdFailedToLoad: (ad, error) {
print('InterstitialAd failed to load: $error');
},
onAdClosed: (ad) {
print('InterstitialAd closed.');
},
),
);
_interstitialAd?.load();
}
void _showInterstitialAd() {
if (_interstitialAd != null) {
_interstitialAd?.show();
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Interstitial Ad Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
_loadInterstitialAd();
_showInterstitialAd();
},
child: Text('Show Interstitial Ad'),
),
),
);
}
@override
void dispose() {
_interstitialAd?.dispose();
super.dispose();
}
}
4. 处理广告回调
ksad
插件提供了多种回调方法来处理广告加载、展示、点击、关闭等事件。你可以根据需要在 KSAdBannerAdListener
、KSAdInterstitialAdListener
等回调中处理这些事件。
5. 测试广告
在开发过程中,建议使用测试广告单元 ID 来测试广告功能,确保一切正常工作。你可以在快手广告平台的开发者后台获取测试广告单元 ID。
6. 发布应用
在发布应用之前,确保将测试广告单元 ID 替换为正式的广告单元 ID,并关闭调试模式。
await KSAd.initialize(
appId: 'your_app_id', // 替换为你的快手广告 App ID
debug: false, // 关闭调试模式
);