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
更多关于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.xml
和 Info.plist
中添加必要的权限和配置。
10. 测试广告
在开发过程中,你可以使用测试广告单元 ID 来测试广告的展示效果。
CsOkspinBannerAd(
adUnitId: 'ca-app-pub-3940256099942544/6300978111', // 测试横幅广告单元ID
adSize: AdSize.banner,
);