Flutter广告展示插件cs_okspin_ad的使用

A new Flutter plugin project.

使用步骤

1. 添加依赖

pubspec.yaml 文件中添加 cs_okspin_ad 插件依赖:

dependencies:
  cs_okspin_ad: ^版本号

运行以下命令以获取依赖:

flutter pub get

2. 初始化插件

main.dart 文件中初始化插件并设置监听器。

import 'dart:developer';

import 'package:cs_okspin_ad/cs_okspin_ad_listener.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:cs_okspin_ad/cs_okspin_ad.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with CsOkSpinAdListener {
  final _csOkspinAdPlugin = CsOkspinAd();

  var showIconView = false;

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 初始化插件
  Future<void> initPlatformState() async {
    try {
      // 设置监听器
      await _csOkspinAdPlugin.setOkSpinAdListener(this);
      // 开启调试模式
      await _csOkspinAdPlugin.setDebug(true);
      // 初始化插件,传入您的广告位ID
      await _csOkspinAdPlugin.initialize("xxxxxxx");

      if (!mounted) return;

      setState(() {});
    } catch (e) {
      debugPrint("初始化失败: $e");
    }
  }

  /// 初始化成功回调
  @override
  void onInitSuccess() {
    debugPrint("cs_okspin onInitSuccess");
  }

  /// 初始化失败回调
  @override
  void onInitFailed(int errCode, String errMsg) {
    debugPrint("cs_okspin onInitFailed - code:$errCode; msg:$errMsg");
  }

  /// 广告位加载成功回调
  @override
  void onIconReady(String placement) {
    debugPrint("cs_okspin onIconReady - placement:$placement");
    showIconView = true;
    setState(() {});
  }

  /// 广告位加载失败回调
  @override
  void onIconLoadFailed(String placement, int errCode, String errMsg) {
    debugPrint("cs_okspin onIconLoadFailed - placement:$placement; code:$errCode; msg:$errMsg");
  }

  /// 广告展示失败回调
  @override
  void onIconShowFailed(String placementId, int errCode, String errMsg) {
    debugPrint("cs_okspin onIconShowFailed - placement:$placementId; code:$errCode; msg:$errMsg");
  }

  /// 广告被点击回调
  @override
  void onIconClick(String placement) {
    debugPrint("cs_okspin onIconClick - placement:$placement");
  }

  /// 互动广告页面打开回调
  @override
  void onInteractiveOpen(String placement) {
    debugPrint("cs_okspin onInteractiveOpen - placement:$placement");
  }

  /// 互动广告页面打开失败回调
  @override
  void onInteractiveOpenFailed(String placementId, int errCode, String errMsg) {
    debugPrint("cs_okspin onInteractiveOpenFailed - placement:$placementId; code:$errCode; msg:$errMsg");
  }

  /// 互动广告页面关闭回调
  @override
  void onInteractiveClose(String placement) {
    debugPrint("cs_okspin onInteractiveClose - placement:$placement");
  }

  /// 互动墙页面打开回调
  @override
  void onOfferWallOpen(String placementId) {
    debugPrint("cs_okspin onOfferWallOpen - placement:$placementId");
  }

  /// 互动墙页面打开失败回调
  @override
  void onOfferWallOpenFailed(String placementId, int errCode, String errMsg) {
    debugPrint("cs_okspin onOfferWallOpenFailed - placement:$placementId; code:$errCode; msg:$errMsg");
  }

  /// 互动墙页面关闭回调
  @override
  void onOfferWallClose(String placementId) {
    debugPrint("cs_okspin onOfferWallClose - placement:$placementId");
  }

  /// GSpace页面打开回调
  @override
  void onGSpaceOpen(String placementId) {
    debugPrint("cs_okspin onGSpaceOpen - placement:$placementId");
  }

  /// GSpace页面打开失败回调
  @override
  void onGSpaceOpenFailed(String placementId, int errCode, String errMsg) {
    debugPrint("cs_okspin onGSpaceOpenFailed - placement:$placementId; code:$errCode; msg:$errMsg");
  }

  /// GSpace页面关闭回调
  @override
  void onGSpaceClose(String placementId) {
    debugPrint("cs_okspin onGSpaceClose - placement:$placementId");
  }

  /// 用户交互行为回调
  @override
  void onUserInteraction(String placementId, String interaction) {
    debugPrint("cs_okspin onUserInteraction - placement:$placementId; interaction:$interaction");
  }

  @override
  Widget build(BuildContext context) {
    final children = <Widget>[
      Positioned(
        child: TextButton(
          onPressed: () {
            log("点击加载 icon");
            _csOkspinAdPlugin.loadIcon("9214");
          },
          child: const Text("加载Icon", style: TextStyle(color: Colors.black, fontSize: 20)),
        ),
      )
    ];

    if (showIconView) {
      log("加载 okspin icon");
      children.add(
        const Positioned(
          bottom: 20,
          width: 300,
          height: 120,
          child: AndroidView(
            viewType: "com.cangshengnian.cs_okspin_ad/customAd",
            creationParams: <String, dynamic>{
              "placementId": "9214",
              "width": 300,
              "height": 120
            },
            creationParamsCodec: StandardMessageCodec(),
          ),
        ),
      );
    }

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Container(
          width: 300,
          height: 400,
          color: Colors.pink,
          child: Stack(
            alignment: Alignment.center,
            children: children,
          ),
        ),
      ),
    );
  }
}

3. 运行示例

将上述代码保存到 lib/main.dart 文件中,并运行应用:

flutter run

更多关于Flutter广告展示插件cs_okspin_ad的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告展示插件cs_okspin_ad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


cs_okspin_ad 是一个用于在 Flutter 应用中展示广告的插件。它通常用于集成广告 SDK,以便在应用中显示横幅广告、插页式广告、激励视频广告等。以下是如何在 Flutter 项目中使用 cs_okspin_ad 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 cs_okspin_ad 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  cs_okspin_ad: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化广告 SDK

在使用广告之前,通常需要初始化广告 SDK。你可以在应用的 main.dart 文件中进行初始化。

import 'package:flutter/material.dart';
import 'package:cs_okspin_ad/cs_okspin_ad.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化广告 SDK
  await CsOkspinAd.initialize(
    appId: 'YOUR_APP_ID',  // 替换为你的应用ID
    isDebug: true,  // 调试模式
  );
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

3. 展示横幅广告

你可以在应用的任何页面中展示横幅广告。

import 'package:flutter/material.dart';
import 'package:cs_okspin_ad/cs_okspin_ad.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Hello, world!',
            ),
            // 展示横幅广告
            CsOkspinBannerAd(
              adUnitId: 'YOUR_BANNER_AD_UNIT_ID',  // 替换为你的横幅广告单元ID
              adSize: AdSize.banner,
            ),
          ],
        ),
      ),
    );
  }
}

4. 展示插页式广告

你可以在用户执行某些操作时展示插页式广告。

import 'package:flutter/material.dart';
import 'package:cs_okspin_ad/cs_okspin_ad.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Hello, world!',
            ),
            ElevatedButton(
              onPressed: () async {
                // 展示插页式广告
                await CsOkspinInterstitialAd.show(
                  adUnitId: 'YOUR_INTERSTITIAL_AD_UNIT_ID',  // 替换为你的插页式广告单元ID
                );
              },
              child: Text('Show Interstitial Ad'),
            ),
          ],
        ),
      ),
    );
  }
}

5. 展示激励视频广告

激励视频广告通常用于奖励用户观看广告。

import 'package:flutter/material.dart';
import 'package:cs_okspin_ad/cs_okspin_ad.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Hello, world!',
            ),
            ElevatedButton(
              onPressed: () async {
                // 展示激励视频广告
                await CsOkspinRewardedAd.show(
                  adUnitId: 'YOUR_REWARDED_AD_UNIT_ID',  // 替换为你的激励视频广告单元ID
                  onRewarded: (reward) {
                    // 处理奖励
                    print('Reward: $reward');
                  },
                );
              },
              child: Text('Show Rewarded Ad'),
            ),
          ],
        ),
      ),
    );
  }
}

6. 处理广告事件

你可以监听广告的加载、展示、点击等事件。

CsOkspinBannerAd(
  adUnitId: 'YOUR_BANNER_AD_UNIT_ID',
  adSize: AdSize.banner,
  onAdLoaded: () {
    print('Banner Ad Loaded');
  },
  onAdFailedToLoad: (error) {
    print('Banner Ad Failed to Load: $error');
  },
  onAdClicked: () {
    print('Banner Ad Clicked');
  },
);

7. 释放资源

在页面销毁时,确保释放广告资源。

@override
void dispose() {
  // 释放广告资源
  CsOkspinBannerAd.dispose();
  super.dispose();
}

8. 调试与发布

在开发过程中,你可以使用调试模式来查看广告的加载情况。发布应用时,请确保关闭调试模式。

await CsOkspinAd.initialize(
  appId: 'YOUR_APP_ID',
  isDebug: false,  // 发布时关闭调试模式
);

9. 处理权限

确保在 AndroidManifest.xmlInfo.plist 中添加必要的权限和配置。

10. 测试广告

在开发过程中,你可以使用测试广告单元 ID 来测试广告的展示效果。

CsOkspinBannerAd(
  adUnitId: 'ca-app-pub-3940256099942544/6300978111',  // 测试横幅广告单元ID
  adSize: AdSize.banner,
);
回到顶部