easy_ads_flutter 1.0.0-facebook.0
easy_ads_flutter: ^1.0.0-facebook.0 copied to clipboard
Easy Ads is a wrapper around famous ad packages which let you integrate ads easily
Easy Ads Flutter #
Show some 💙, 👍 the package & ⭐️ the repo to support the project
To easily integrate ads from different ad networks into your flutter app.
Features #
- Google Mobile Ads (banner, interstitial, rewarded ad)
- Facebook Audience Network (banner, interstitial, rewarded ad)
- Unity Ads (banner, interstitial, rewarded ad)
- AppLovin Max Ads (interstitial, rewarded ad)
Prerequisites #
- Flutter 1.22.0 or higher
- Android
- Android Studio 3.2 or higher
- Target Android API level 19 or higher
- Set
compileSdkVersion
to 28 or higher - Android Gradle Plugin 4.1 or higher (this is the version supported by Flutter out of the box)
- Ios
- Latest version of Xcode with enabled command-line tools.
- Recommended: Create an AdMob account and register an Android and/or iOS app (To show live ads on a published app, it is required to register that app).
Platform Specific Setup #
iOS #
Update your Info.plist
Update your app's ios/Runner/Info.plist
file to add two keys:
- A
GADApplicationIdentifier
key with a string value of your AdMob app ID (identified in the AdMob UI). - A
SKAdNetworkItems
key with Google'sSKAdNetworkIdentifier
value ofcstr6suwn9.skadnetwork
and for applovin as well
<key>AppLovinSdkKey</key>
<string>YOUR_SDK_KEY</string>
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2U9PT9HC89.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4FZDC2EVR5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7UG5ZH24HU.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8s468mfl3y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9RD848Q2BZ.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9T245VHMPL.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>av6w8kgt66.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>F38H382JLK.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>KBD757YWX3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>M8DBW4SV7C.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mlmmfzh3r3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>prcb7njmu6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t38b2kh725.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>TL55SBB4FM.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>WZMMZ9FP6W.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>YCLNXRL5PM.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ydx93a7ass.skadnetwork</string>
</dict>
</array>
See https://developers.google.com/admob/ios/quick-start#update\_your\_infoplist for more information about configuring Info.plist
and setting up your App ID.
Android #
Update AndroidManifest.xml
The AdMob App ID must be included in the AndroidManifest.xml
. Failure to do so will result in a crash on launch of an app.
Add the AdMob App ID (identified in the AdMob UI) to the app's android/app/src/main/AndroidManifest.xml
file by adding a <meta-data>
tag with name com.google.android.gms.ads.APPLICATION_ID
, as shown below. You can find your App ID in the AdMob UI. For android:value
insert your own AdMob App ID in quotes, as shown below.
<manifest>
<application>
<meta-data android:name="applovin.sdk.key"
android:value="YOUR_SDK_KEY"/>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>
The same value when you initialize the plugin in your Dart code.
See https://goo.gl/fQ2neu for more information about configuring AndroidManifest.xml
and setting up the App ID.
Initialize Ad Ids #
import 'dart:io';
import 'package:easy_ads_flutter/easy_ads_flutter.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
class TestAdIdManager extends IAdIdManager {
const TestAdIdManager();
@override
AppAdIds? get admobAdIds => AppAdIds(
appId: Platform.isAndroid
? 'ca-app-pub-3940256099942544~3347511713'
: 'ca-app-pub-3940256099942544~1458002511',
bannerId: BannerAd.testAdUnitId,
interstitialId: InterstitialAd.testAdUnitId,
rewardedId: RewardedAd.testAdUnitId,
);
@override
AppAdIds? get unityAdIds => AppAdIds(
appId: Platform.isAndroid ? '4374881' : '4374880',
bannerId: Platform.isAndroid ? 'Banner_Android' : 'Banner_iOS',
interstitialId:
Platform.isAndroid ? 'Interstitial_Android' : 'Interstitial_iOS',
rewardedId: Platform.isAndroid ? 'Rewarded_Android' : 'Rewarded_iOS',
);
@override
AppAdIds? get appLovinAdIds => AppAdIds(
appId:
'OeKTS4Zl758OIlAs3KQ6-3WE1IkdOo3nQNJtRubTzlyFU76TRWeQZAeaSMCr9GcZdxR4p2cnoZ1Gg7p7eSXCdA',
interstitialId:
Platform.isAndroid ? 'c48f54c6ce5ff297' : 'e33147110a6d12d2',
rewardedId:
Platform.isAndroid ? 'ffbed216d19efb09' : 'f4af3e10dd48ee4f',
);
@override
AppAdIds? get fbAdIds => null;
}
Initialize the SDK #
Before loading ads, have your app initialize the Mobile Ads SDK by calling EasyAds.instance.initialize()
which initializes the SDK and returns a Future
that finishes once initialization is complete (or after a 30-second timeout). This needs to be done only once, ideally right before running the app.
import 'package:easy_ads_flutter/easy_ads_flutter.dart';
import 'package:flutter/material.dart';
const IAdIdManager adIdManager = TestAdIdManager();
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await EasyAds.instance.initialize(
adIdManager,
testMode: true,
adMobAdRequest: const AdRequest(),
admobConfiguration:
RequestConfiguration(testDeviceIds: ['adakjhdjkahdahkjdahkdhk']),
);
runApp(MyApp());
}
Interstital/Rewarded Ads #
Load ad #
EasyAds.instance.loadInterstitialAd();
Or
EasyAds.instance.loadRewardedAd();
Show ad #
EasyAds.instance.showInterstitialAd();
Or
EasyAds.instance.showRewardedAd();
By default, load & show methods load/show any ads of the available AdNetwork. If you want to load/show ads from specific AdNetwork, pass the required AdNetwork in parameters.
Dispose ad #
EasyAds.instance.disposeAds();
By default, it disposes all the ads. But if you want to dispose ad of specific AdNetwork and AdUnitType, pass the required in the parameters.
Banner Ads #
Declare ad #
Declare banner ad instance variable in the widget class and initialize it. Make sure you have specified ad ids in ad id manager
final EasyAdBase? _bannerAd = EasyAds.instance.createBanner(adNetwork: AdNetwork.admob);
Initialize & Load ad #
Load banner ad in the init state like this:
@override
void initState() {
super.initState();
_bannerAd?.load();
}
Show ad #
This is how you may show banner ad in widget-tree somewhere:
@override
Widget build(BuildContext context) {
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
SomeWidget(),
const Spacer(),
_bannerAd?.show() ?? const SizedBox(),
],
);
}
Dispose ad #
@override
void dispose() {
super.dispose();
_bannerAd?.dispose();
}
Listening to the callbacks #
Declare this object in the class
StreamSubscription? _streamSubscription;
We are showing InterstitialAd here and also checking if ad has been shown.
If true
, we are canceling the subscribed callbacks, if any.
Then, we are listening to the Stream and accessing the particular event we need
if (EasyAds.instance.showInterstitialAd()) {
// Canceling the last callback subscribed
_streamSubscription?.cancel();
// Listening to the callback from showInterstitialAd()
_streamSubscription =
EasyAds.instance.onEvent.listen((event) {
if (event.adUnitType == AdUnitType.interstitial &&
event.type == AdEventType.adDismissed) {
_streamSubscription?.cancel();
goToNextScreen(countryList[index]);
}
});
}
See Example for better understanding.