flutter_ironsource_x 0.0.5 flutter_ironsource_x: ^0.0.5 copied to clipboard
IronSource Ads & Mediation Plugin for Flutter
IronSource Ads for Flutter #
Flutter plugin for showing IronSource ads (Android only)
Progress #
- ✅ Interstitial
- ❌ Banner (Still experimenting)
- ✅ Offerwall
- ✅ Rewarded video
Using Examples #
Init #
void init() async {
var userId = await IronSource.getAdvertiserId();
await IronSource.validateIntegration();
await IronSource.setUserId(userId);
await IronSource.initialize(appKey: "appKey", listener: this,
gdprConsent: true, ccpaConsent: false);
rewardeVideoAvailable = await IronSource.isRewardedVideoAvailable();
offerwallAvailable = await IronSource.isOfferwallAvailable();
setState(() {});
}
By default gdprConsent and ccpaConsent are true
Interstitial #
IronSource.loadInterstitial();
void showInterstitial() async {
if (await IronSource.isInterstitialReady()) {
IronSource.showInterstitial();
} else {
print(
"Interstial is not ready. use 'Ironsource.loadInterstial' before showing it",
);
}
}
@override
void onInterstitialAdClicked() {
print("onInterstitialAdClicked");
}
@override
void onInterstitialAdClosed() {
print("onInterstitialAdClosed");
}
@override
void onInterstitialAdLoadFailed(IronSourceError error) {
print("onInterstitialAdLoadFailed : ${error.toString()}");
}
@override
void onInterstitialAdOpened() {
print("onInterstitialAdOpened");
setState(() {
interstitialReady = false;
});
}
@override
void onInterstitialAdReady() {
print("onInterstitialAdReady");
setState(() {
interstitialReady = true;
});
}
@override
void onInterstitialAdShowFailed(IronSourceError error) {
print("onInterstitialAdShowFailed : ${error.toString()}");
setState(() {
interstitialReady = false;
});
}
@override
void onInterstitialAdShowSucceeded() {
print("nInterstitialAdShowSucceeded");
Reward Video #
void showRewardedVideo() async {
if (await IronSource.isRewardedVideoAvailable()) {
IronSource.showRewardedVideol();
} else {
print("RewardedVideo not available");
}
}
@override
void onRewardedVideoAdClicked(Placement placement) {
print("onRewardedVideoAdClicked");
}
@override
void onRewardedVideoAdClosed() {
print("onRewardedVideoAdClosed");
}
@override
void onRewardedVideoAdEnded() {
print("onRewardedVideoAdEnded");
}
@override
void onRewardedVideoAdOpened() {
print("onRewardedVideoAdOpened");
}
@override
void onRewardedVideoAdRewarded(Placement placement) {
print("onRewardedVideoAdRewarded: ${placement.placementName}");
}
@override
void onRewardedVideoAdShowFailed(IronSourceError error) {
print("onRewardedVideoAdShowFailed : ${error.toString()}");
}
@override
void onRewardedVideoAdStarted() {
print("onRewardedVideoAdStarted");
}
@override
void onRewardedVideoAvailabilityChanged(bool available) {
print("onRewardedVideoAvailabilityChanged : $available");
setState(() {
rewardeVideoAvailable = available;
});
}
Banner #
IronSourceBannerAd(keepAlive: true, listener: BannerAdListener());
Banner Size Type: #
- BANNER
IronSourceBannerAd(keepAlive: true, listener: BannerAdListener(), size: BannerSize.BANNER);
- LARGE
IronSourceBannerAd(keepAlive: true, listener: BannerAdListener(), size: BannerSize.LARGE);
- LEADERBOARD
IronSourceBannerAd(keepAlive: true, listener: BannerAdListener(), size: BannerSize.LEADERBOARD);
- RECTANGLE
IronSourceBannerAd(keepAlive: true, listener: BannerAdListener(), size: BannerSize.RECTANGLE);
- SMART
IronSourceBannerAd(keepAlive: true, listener: BannerAdListener(), size: BannerSize.SMART);
- CUSTOM
IronSourceBannerAd(
keepAlive: true,
listener: BannerAdListener(),
size: BannerSize.BANNER,
size: BannerSize(
type: BannerSizeType.BANNER,
width: 400,
height: 50,
),
);
Banner Background Color #
IronSourceBannerAd(
keepAlive: true,
listener: BannerAdListener(),
size: BannerSize.BANNER,
backgroundColor: Colors.amber, //Background Color
);
class BannerAdListener extends IronSourceBannerListener {
@override
void onBannerAdClicked() {
print("onBannerAdClicked");
}
@override
void onBannerAdLeftApplication() {
print("onBannerAdLeftApplication");
}
@override
void onBannerAdLoadFailed(Map<String, dynamic> error) {
print("onBannerAdLoadFailed");
}
@override
void onBannerAdLoaded() {
print("onBannerAdLoaded");
}
@override
void onBannerAdScreenDismissed() {
print("onBannerAdScreenDismisse");
}
@override
void onBannerAdScreenPresented() {
print("onBannerAdScreenPresented");
}
}
OfferWall #
void showOfferwall() async {
if (await IronSource.isOfferwallAvailable()) {
IronSource.showOfferwall();
} else {
print("Offerwall not available");
}
}
@override
void onGetOfferwallCreditsFailed(IronSourceError error) {
print("onGetOfferwallCreditsFailed : ${error.toString()}");
}
@override
void onOfferwallAdCredited(OfferwallCredit reward) {
print("onOfferwallAdCredited : $reward");
}
@override
void onOfferwallAvailable(bool available) {
print("onOfferwallAvailable : $available");
setState(() {
offerwallAvailable = available;
});
}
@override
void onOfferwallClosed() {
print("onOfferwallClosed");
}
@override
void onOfferwallOpened() {
print("onOfferwallOpened");
}
@override
void onOfferwallShowFailed(IronSourceError error) {
print("onOfferwallShowFailed ${error.toString()}");
}
Update AndroidManifest.xml #
Manifest Permissions #
Add the following permissions to your AndroidManifest.xml file inside the manifest tag but outside the <application>
tag:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Manifest Activities #
Add the following activities inside the <application>
tag in your AndroidManifest:
<activity
android:name="com.ironsource.sdk.controller.ControllerActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true" />
<activity
android:name="com.ironsource.sdk.controller.InterstitialActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent" />
<activity
android:name="com.ironsource.sdk.controller.OpenUrlActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent" />
Add IronSource SDK #
File build.gradle
:
dependencies {
implementation 'com.ironsource.sdk:mediationsdk:7.0.4.1'
...
}
add Google Play Services #
Add xmlns:tools="http://schemas.android.com/tools"
on top for replace label.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.metamorfosis_labs.flutter_ironsource_x_example">
Add tools:replace="android:label"
at the <application>
tag
<application
tools:replace="android:label"
android:name="io.flutter.app.FlutterApplication"
android:label="flutter_ironsource_x_example"
android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="true"
android:icon="@mipmap/ic_launcher">
Add the following inside the <application>
tag in your AndroidManifest:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
please read this to add google play service
Mediation #
follow this to add mediation sdks
Using this plugin #
see directory example
Visit IronSource website to know more
Contributing #
Thanks to @karnadii & @DiMiTriFrog
I will continue updating this library.
Support #
If this package was helpful to you in delivering on your project or you just wanna to support this project, a cup of coffee would be highly appreciated ;-)