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

开源不易,觉得有用的话可以请作者喝杯奶茶🧋

打赏

联系方式

示例代码

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

1 回复

更多关于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 插件提供了多种回调方法来处理广告加载、展示、点击、关闭等事件。你可以根据需要在 KSAdBannerAdListenerKSAdInterstitialAdListener 等回调中处理这些事件。

5. 测试广告

在开发过程中,建议使用测试广告单元 ID 来测试广告功能,确保一切正常工作。你可以在快手广告平台的开发者后台获取测试广告单元 ID。

6. 发布应用

在发布应用之前,确保将测试广告单元 ID 替换为正式的广告单元 ID,并关闭调试模式。

await KSAd.initialize(
  appId: 'your_app_id', // 替换为你的快手广告 App ID
  debug: false, // 关闭调试模式
);
回到顶部