Flutter广告集成插件adsjmsdk的使用
Flutter广告集成插件adsjmsdk的使用
本项目是一个Flutter插件包,它包含针对Android和/或iOS平台的特定实现代码。
详细接入文档:
- Android 接入文档
- iOS 接入文档
初始化SDK
SjmAdSdk.init("AppId");
示例
开屏广告(Splash Ad)
SplashAdView(
adId: "adId", // 替换为你的广告ID
width: width, // 替换为实际宽度
height: height, // 替换为实际高度
onSjmAdLoaded: (String id) {
print("SplashAd 加载成功");
},
onSjmAdShow: (String id) {
print("SplashAd 展示");
},
onSjmAdClicked: (String id) {
print("SplashAd 点击");
},
onSjmAdClosed: (String id) {
print("SplashAd 关闭");
},
onSjmAdError: (String id, int code, String message) {
print("SplashAd 错误 " + message);
}
)
激励视频广告(Reward Video Ad)
SjmAdSdk.showRewardVideoAd(
"adId", // 替换为你的广告ID
"userId", // 用户ID
onSjmAdTradeId: (String id) {
print("RewardVideoAd 交易ID");
},
onSjmAdLoaded: (String id) {
print("RewardVideoAd 加载成功");
},
onSjmAdShow: (String id) {
print("RewardVideoAd 展示");
},
onSjmAdReward: (String id) {
print("RewardVideoAd 奖励");
},
onSjmAdClicked: (String id) {
print("RewardVideoAd 点击");
},
onSjmAdVideoComplete: (String id) {
print("RewardVideoAd 视频播放完成");
},
onSjmAdClosed: (String id) {
print("RewardVideoAd 关闭");
},
onSjmAdError: (String id, int code, String message) {
print("RewardVideoAd 错误 " + message);
},
);
插屏广告(Interstitial Ad)
SjmAdSdk.loadInterstitalAd(
"adId", // 替换为你的广告ID
onSjmAdLoaded: (String id) {
print("InterstitialAd 加载成功");
},
onSjmAdShow: (String id) {
print("InterstitialAd 展示");
},
onSjmAdClicked: (String id) {
print("InterstitialAd 点击");
},
onSjmAdClosed: (String id) {
print("InterstitialAd 关闭");
},
onSjmAdError: (String id, int code, String message) {
print("InterstitialAd 错误 " + message);
},
);
信息流广告(Native Express Ad)
NativeExpressAdView(
adId: "adId", // 替换为你的广告ID
width: 350, // 替换为实际宽度
height: 300, // 替换为实际高度
onSjmAdLoaded: (String id) {
print("native_express 加载成功");
},
onSjmAdShow: (String id) {
print("native_express 展示");
},
onSjmAdClicked: (String id) {
print("native_express 点击");
},
onSjmAdClosed: (String id) {
print("native_express 关闭");
},
onSjmAdError: (String id, int code, String message) {
print("native_express 错误 " + message);
},
)
Banner广告
BannerAdView(
adId: "adId", // 替换为你的广告ID
width: 400, // 替换为实际宽度
height: 60, // 替换为实际高度
onSjmAdLoaded: (String id) {
print("BannerAd 加载成功");
},
onSjmAdShow: (String id) {
print("BannerAd 展示");
},
onSjmAdClicked: (String id) {
print("BannerAd 点击");
},
onSjmAdClosed: (String id) {
print("BannerAd 关闭");
},
onSjmAdError: (String id, int code, String message) {
print("BannerAd 错误 " + message);
},
)
完整示例代码
import 'package:flutter/foundation.dart';
import 'H5Content.dart';
import 'banner.dart';
import 'content_novel.dart';
import 'interstital.dart';
import 'native_express.dart';
import 'splash.dart';
import 'tab.dart';
import 'package:flutter/material.dart';
import 'package:adsjmsdk/sjm_ad.dart';
import 'full_video.dart';
import 'news.dart';
import 'reward_video.dart';
import 'volice.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.grey,
visualDensity: VisualDensity.adaptivePlatformDensity,
buttonTheme: ButtonThemeData(minWidth: 200),
),
home: MyHomePage(),
routes: <String, WidgetBuilder>{
'/homepage': (BuildContext context) => MyHomePage(),
'/splash': (BuildContext context) => SplashPage(),
'/reward-video': (BuildContext context) => RewardVideoPage(),
'/full-video': (BuildContext context) => FullVideoPage(),
'/banner': (BuildContext context) => BannerPage(),
'/native_express': (BuildContext context) => NativeExpressPage(),
'/interstitial': (BuildContext context) => InterstitalPage(),
'/h5Content': (BuildContext context) => H5ContentPage(),
'/tab': (BuildContext context) => Tabs(),
'/volice': (BuildContext context) => VolicePage(),
'/news': (BuildContext context) => NewsPage(),
'/novel': (BuildContext context) => ContentNovelPage(),
},
);
}
}
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/splash');
},
child: Text("开屏 广告-1")),
ElevatedButton(
onPressed: () {
var adId = 'sjmad_test009'; //sjmad_test009 sjmad_test002
if (defaultTargetPlatform == TargetPlatform.iOS) {
adId = "SJM_S002";
}
SjmAdSdk.showSplashAd(
adId,
5,
onSjmAdLoaded: (String id) {
print("SplashAd 加载成功");
},
onSjmAdShow: (String id) {
print("SplashAd 展示");
},
onSjmAdClicked: (String id) {
print("SplashAd 点击");
},
onSjmAdClosed: (String id) {
print("SplashAd 关闭");
},
onSjmAdError: (String id, int code, String message) {
print("SplashAd 错误 " + message);
},
);
},
child: Text("[ios]开屏 广告-2")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/reward-video');
},
child: Text("激励视频广告")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/full-video');
},
child: Text("全屏视频广告")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/banner');
},
child: Text("Banner 广告")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/interstitial');
},
child: Text("插屏广告")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/native_express');
},
child: Text("信息流广告")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/h5Content');
},
child: Text("[Android]H5Content")),
ElevatedButton(
onPressed: () {
SjmAdSdk.loadVideocontentAd("sjmad_test012");
},
child: Text("[Android]视频内容跳转")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/tab');
},
child: Text("[Android]视频内容tab嵌入")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/volice');
},
child: Text("[Android]语音红包")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/news');
},
child: Text("[Android]新闻咨询")),
ElevatedButton(
onPressed: () {
Navigator.of(context).pushNamed('/novel');
},
child: Text("[Android]小说")),
],
),
),
);
}
}
更多关于Flutter广告集成插件adsjmsdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter广告集成插件adsjmsdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 应用中集成广告插件 adsjmsdk
可以帮助你轻松地展示广告并实现广告变现。以下是一个基本的步骤指南,介绍如何在 Flutter 项目中使用 adsjmsdk
插件。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 adsjmsdk
插件的依赖。
dependencies:
flutter:
sdk: flutter
adsjmsdk: ^1.0.0 # 请根据实际情况使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 SDK
在应用的入口文件(通常是 main.dart
)中初始化 adsjmsdk
。
import 'package:flutter/material.dart';
import 'package:adsjmsdk/adsjmsdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化广告 SDK
await AdsJmSdk.initialize(
appId: 'your_app_id', // 替换为你的应用 ID
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Ads Demo',
home: HomeScreen(),
);
}
}
3. 展示横幅广告
在需要展示横幅广告的页面中,使用 BannerAdWidget
。
import 'package:flutter/material.dart';
import 'package:adsjmsdk/adsjmsdk.dart';
class HomeScreen extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Ads Demo'),
),
body: Column(
children: [
Expanded(
child: Center(
child: Text('Your content here'),
),
),
// 展示横幅广告
BannerAdWidget(
adUnitId: 'your_banner_ad_unit_id', // 替换为你的横幅广告单元 ID
adSize: AdSize.BANNER,
listener: (AdEvent event) {
// 处理广告事件
switch (event) {
case AdEvent.loaded:
print('Banner Ad loaded');
break;
case AdEvent.failed:
print('Banner Ad failed to load');
break;
case AdEvent.clicked:
print('Banner Ad clicked');
break;
}
},
),
],
),
);
}
}
4. 展示插屏广告
在需要展示插屏广告的地方,调用 InterstitialAd
的方法。
import 'package:flutter/material.dart';
import 'package:adsjmsdk/adsjmsdk.dart';
class HomeScreen extends StatelessWidget {
Future<void> showInterstitialAd() async {
await InterstitialAd.load(
adUnitId: 'your_interstitial_ad_unit_id', // 替换为你的插屏广告单元 ID
listener: (AdEvent event) {
// 处理广告事件
switch (event) {
case AdEvent.loaded:
print('Interstitial Ad loaded');
InterstitialAd.show();
break;
case AdEvent.failed:
print('Interstitial Ad failed to load');
break;
case AdEvent.closed:
print('Interstitial Ad closed');
break;
}
},
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Ads Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: showInterstitialAd,
child: Text('Show Interstitial Ad'),
),
),
);
}
}
5. 展示激励视频广告
在需要展示激励视频广告的地方,调用 RewardedAd
的方法。
import 'package:flutter/material.dart';
import 'package:adsjmsdk/adsjmsdk.dart';
class HomeScreen extends StatelessWidget {
Future<void> showRewardedAd() async {
await RewardedAd.load(
adUnitId: 'your_rewarded_ad_unit_id', // 替换为你的激励视频广告单元 ID
listener: (AdEvent event, {RewardItem? reward}) {
// 处理广告事件
switch (event) {
case AdEvent.loaded:
print('Rewarded Ad loaded');
RewardedAd.show();
break;
case AdEvent.failed:
print('Rewarded Ad failed to load');
break;
case AdEvent.closed:
print('Rewarded Ad closed');
break;
case AdEvent.rewarded:
print('User earned reward: ${reward?.amount} ${reward?.type}');
break;
}
},
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Ads Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: showRewardedAd,
child: Text('Show Rewarded Ad'),
),
),
);
}
}
6. 处理生命周期
确保在应用的生命周期中正确处理广告的加载和销毁。
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> with WidgetsBindingObserver {
[@override](/user/override)
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
[@override](/user/override)
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
[@override](/user/override)
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.paused) {
// 应用进入后台时暂停广告
AdsJmSdk.pause();
} else if (state == AppLifecycleState.resumed) {
// 应用回到前台时恢复广告
AdsJmSdk.resume();
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Ads Demo'),
),
body: Center(
child: Text('Your content here'),
),
);
}
}