zmxn 0.0.3
zmxn: ^0.0.3 copied to clipboard
Ads Implementation
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:zmxn/ads/const.dart';
import 'package:zmxn/zmxn.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
MobileAds.instance.initialize();
FacebookAds.instance.initialize();
runApp(MaterialApp(home: const MyApp()));
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final String placeholderText = 'Lorem ipsum dolor sit amet';
Widget _nativeAd = Container(height: 0);
Widget _nativeAd2 = Container(height: 0);
Widget _nativeAd4 = Container(height: 0);
Widget _bannerAd = Container(height: 0);
@override
void initState() {
super.initState();
Future.delayed(
const Duration(seconds: 1),
() => {
convertAdsSettings(appVersionCode: 1, jsonData: """
{
"is_all_ads": true,
"is_follow_loop_sequence_ads": false,
"ads_sequence": ["facebook_ads", "ad_manager_ads", "app_lovin_ads"],
"intra_ads_sequence": ["facebook_ads", "ad_manager_ads", "google_ads"],
"rewards_ads_sequence": ["facebook_ads", "ad_manager_ads"],
"native_ads_sequence": ["google_ads"],
"banner_ads_sequence": ["app_lovin_ads","ad_manager_ads", "google_ads"],
"open_ads_sequence": ["facebook_ads", "google_ads"],
"more_app_url": "https://play.google.com/store/apps/developer?id=Bit+Links",
"more_live_apps": "https://gitlab.com/vs.bitcoding/live_apps/-/raw/main/live_apps.json",
"ad_setting": {
"app_version_code": 5,
"onesignal_id": "07de0128-c4bc-45f0-8baa-6867a262a6b7",
"intra_dismiss_impression": 0,
"ads_loading_text": "Ad is loading...",
"ads_loading_text_minimum_millseconds": 4000,
"ads_retry_maximum_millseconds": 5000,
"ads_retry": 1,
"intra_interval_click": 2,
"intra_time_interval": 0,
"native_interval_grid": 3
},
"google_ads": {
"banner_ad_id": "/6499/example/banner",
"intra_ad_id": "/6499/example/interstitial",
"open_ad_id": "/6499/example/app-open",
"native_ad_id": "/6499/example/native",
"reward_ad_id": "ca-app-pub-3940256099942544/5224354917",
"native_video_ad_id": "/6499/example/native-video",
"is_redirect_custom_impression": false,
"is_banner_ad": true,
"is_open_ad": true,
"is_intra_ad": true,
"is_reward_ad": true,
"is_native_ad": true,
"intra_interval_click": 2,
"intra_time_interval": 0
},
"ad_manager_ads": {
"banner_ad_id": "/6499/example/banner",
"intra_ad_id": "/6499/example/interstitial",
"open_ad_id": "/6499/example/app-open",
"native_ad_id": "/6499/example/native",
"reward_ad_id": "ca-app-pub-3940256099942544/5224354917",
"native_video_ad_id": "/6499/example/native-video",
"is_redirect_custom_impression": false,
"is_banner_ad": true,
"is_open_ad": true,
"is_intra_ad": true,
"is_reward_ad": true,
"is_native_ad": true,
"intra_interval_click": 2,
"intra_time_interval": 0
},
"facebook_ads": {
"banner_ad_id": "IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID",
"intra_ad_id": "IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID",
"open_ad_id": "",
"native_ad_id": "IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID",
"reward_ad_id": "IMG_16_9_APP_INSTALL#YOUR_PLACEMENT_ID",
"native_video_ad_id": "/6499/example/native-video",
"is_redirect_custom_impression": false,
"is_banner_ad": true,
"is_open_ad": true,
"is_intra_ad": true,
"is_reward_ad": true,
"is_native_ad": true,
"intra_interval_click": 2,
"intra_time_interval": 0
},
"app_lovin_ads": {
"sdk_key": "vLSFvlX2XT2wT8PymW4kBiP0b2mcxQ2lbd1VSrvwA1fQ46J9lPPiB8BNnrTyDDsIF9R8WuPULt2GCNrgrEdzcR",
"banner_ad_id": "c3fbe43e7fd2e314",
"mrec_banner_ad_id": "c3fbe43e7fd2e314",
"is_redirect_custom_impression": false,
"intra_ad_id": "f4c06b322d61c5af",
"open_ad_id": "cd532027901441ce",
"native_ad_id": "1f55b34f63a9eb73",
"reward_ad_id": "4589bdf3b7056ef5",
"is_banner_ad": true,
"is_open_ad": true,
"is_intra_ad": true,
"is_reward_ad": true,
"is_native_ad": true,
"intra_interval_click": 2,
"intra_time_interval": 0
}
}
""").then((value) => {
if ((getAdsSettings()?.appLovin?.sdkKey ?? "").isNotEmpty)
{
AppLovinAds.instance
.initialize(
getAdsSettings()?.appLovin?.sdkKey ?? "")
.then((value) async {
initOpenAds(
context: context,
onOpenAdLoaded: () {
showOpenAds(context);
});
loadIntraAds();
loadRewardAds();
showNativeAds(
customOptions: {
"btn_colors": ["#00F0F0"],
"btn_corner_radius" : 18.5,
"btn_text_color" : "#8bc34ae0",
"btn_gradient_orientation" : GradientOrientation.TOP_BOTTOM.index,
"text_heading_colors" : "#8bc34ae0",
"text_body_colors" : "#8bc34ae0",
"text_store_colors" : "#8bc34ae0",
"text_fonts" : "mooli_regular.ttf",
},
onAdLoadedCallback: (p0) {
setState(() {
_nativeAd = p0;
});
},
);
showBannerAds(
size: AdSize.mediumRectangle,
margin: EdgeInsets.symmetric(vertical: 24),
onAdLoadedCallback: (p0) {
setState(() {
_bannerAd = p0;
});
},
);
})
},
})
});
}
@override
void dispose() {
super.dispose();
destroyAd();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Ads example app'),
actions: <Widget>[
PopupMenuButton<String>(
onSelected: (String result) {
switch (result) {
case 'InterstitialAd':
showIntraAds(
context: context,
callback: () => {
print(
"as dasd asd asd asd asd Old Show Completed true")
});
break;
case 'RewardedAd':
showRewardAds(
context: context,
callback: () => {print("Show Completed true")},
onSkippedCallback: () => {print("Skipped Ad true")},
onFailedCallback: () => {
showIntraAds(
context: context,
isCompulsory: true,
callback: () =>
{print("Show Completed onFailedCallback")})
});
break;
default:
throw AssertionError('unexpected button: $result');
}
},
itemBuilder: (BuildContext context) => <PopupMenuEntry<String>>[
const PopupMenuItem<String>(
value: 'InterstitialAd',
child: Text('InterstitialAd'),
),
const PopupMenuItem<String>(
value: 'RewardedAd',
child: Text('RewardedAd'),
),
],
),
],
),
body: SafeArea(
child: SingleChildScrollView(
child: Column(children: [
_nativeAd,
SizedBox(height: 20),
Text(placeholderText),
SizedBox(height: 20),
_nativeAd2,
SizedBox(height: 20),
TextButton(
style: ButtonStyle(
overlayColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.focused)) return Colors.red;
return null; // Defer to the widget's default.
}),
),
onPressed: () {
showIntraAds(context: context, callback: () {});
},
child: const Text('INTRA ADS'),
),
SizedBox(height: 20),
TextButton(
style: ButtonStyle(
overlayColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.focused)) return Colors.red;
return null; // Defer to the widget's default.
}),
),
onPressed: () {
showRewardAds(
context: context,
callback: () {},
onFailedCallback: () {
print("sdf sdf sdf sdfsd f");
});
},
child: const Text('REWARD ADS'),
),
SizedBox(height: 20),
_nativeAd4,
]),
),
),
bottomNavigationBar: _bannerAd,
);
}
}