SDK Integration | Appodeal

SDK Integration

  1. Manual

App key

Download SDK

To install Appodeal PhoneGap Plugin to your project add following to your config.xml:

<gap:plugin name="com.appodeal.plugin" source="npm"/>

Minimum OS requirements: Android API level 9 (Android OS 2.3).

AndroidManifest.xml

All required changes to AndroidManifest.xml are already included in the plugin

PhoneGap Integration

Ad Types

Appodeal.INTERSTITIAL

Appodeal.SKIPPABLE_VIDEO

Appodeal.BANNER

Appodeal.REWARDED_VIDEO

Appodeal.NON_SKIPPABLE_VIDEO

Ad types can be combined using "|" operator. For example

Note that it is better to use NON_SKIPPABLE_VIDEO or REWARDED_VIDEO, but if you are sure you want to use SKIPPABLE_VIDEO you must confirm usage by calling Appodeal.confirm(Appodeal.SKIPPABLE_VIDEO) before SDK initialization

SDK Initialization

To initialize SDK, call the following code:

var appKey = "fee50c333ff3825fd6ad6d38cff78154de3025546d47a84f";
Appodeal.initialize(appKey, Appodeal.INTERSTITIAL | Appodeal.BANNER);

To initialize only interstitials use Appodeal.initialize(appKey, Appodeal.INTERSTITIAL)

To initialize only skippable videos use Appodeal.initialize(appKey, Appodeal.SKIPPABLE_VIDEO)

To initialize only rewarded video use Appodeal.initialize(appKey, Appodeal.REWARDED_VIDEO)

To initialize only non-skippable video use Appodeal.initialize(appKey, Appodeal.NON_SKIPPABLE_VIDEO)

To initialize interstitials and videos use Appodeal.initialize(appKey, Appodeal.INTERSTITIAL | Appodeal.SKIPPABLE_VIDEO)

To initialize only banners use Appodeal.initialize(appKey, Appodeal.BANNER)

Display Ad

Appodeal.show(adTypes);

To display interstitial use Appodeal.show(Appodeal.INTERSTITIAL)

To display skippable video use Appodeal.show(Appodeal.SKIPPABLE_VIDEO)

To display rewarded video use Appodeal.show(Appodeal.REWARDED_VIDEO)

To display non-skippable video use Appodeal.show(Appodeal.NON_SKIPPABLE_VIDEO)

To display interstitial or video use Appodeal.show(Appodeal.INTERSTITIAL | Appodeal.SKIPPABLE_VIDEO)

To display banner at the bottom of the screen use Appodeal.show(Appodeal.BANNER_BOTTOM)

To display banner at the top of the screen use Appodeal.show(Appodeal.BANNER_TOP)

To display banner at the center of the screen use Appodeal.show(Appodeal.BANNER_CENTER)

Appodeal.show(adTypes, function(result){ // result is a boolean value, that is indicates whether show call was passed to appropriate SDK });

Hiding Banner

To hide banner you need to call the following code in activity:

Appodeal.hide(Appodeal.BANNER);

Samples

Display interstitial after it was loaded

Appodeal.setAutoCache(Appodeal.INTERSTITIAL, false);
Appodeal.initialize(appKey, Appodeal.INTERSTITIAL);
Appodeal.cache(Appodeal.INTERSTITIAL);
Appodeal.enableInterstitialCallbacks(true);
document.addEventListener('onInterstitialLoaded', function(){
  Appodeal.show(Appodeal.INTERSTITIAL);
});

Display interstitial after app launch

Appodeal.initialize(appKey, Appodeal.INTERSTITIAL);
Appodeal.show(Appodeal.INTERSTITIAL);

Advanced Features

Checking if ad is loaded

Appodeal.isLoaded(adTypes, function(result){
  // result is a boolean value, that equals true if ad is loaded
});

To check if interstitial is loaded use Appodeal.isLoaded(Appodeal.INTERSTITIAL, function(result){})

To check if skippable video is loaded use Appodeal.isLoaded(Appodeal.SKIPPABLE_VIDEO, function(result){})

To check if rewarded video is loaded use Appodeal.isLoaded(Appodeal.REWARDED_VIDEO, function(result){})

To check if non-skippable video is loaded use Appodeal.isLoaded(Appodeal.NON_SKIPPABLE_VIDEO, function(result){})

To check if banner is loaded use Appodeal.isLoaded(Appodeal.BANNER, function(result){})

Checking if loaded ad is precache

Appodeal.isPrecache(adTypes, function(result){
  // result is a boolean value, that equals true if ad is precache
})

Currently supported only for interstitials , Use Appodeal.isPrecache(Appodeal.INTERSTITIAL, function(result){})

Setting Interstitial callbacks

Appodeal.enableInterstitialCallbacks(true);

document.addEventListener('onInterstitialLoaded', function(){});
document.addEventListener('onInterstitialFailedToLoad', function(){});
document.addEventListener('onInterstitialShown', function(){});
document.addEventListener('onInterstitialClicked', function(){});
document.addEventListener('onInterstitialClosed', function(){});

Setting skippable video callbacks

Appodeal.enableSkippableVideoCallbacks(true);

document.addEventListener('onSkippableVideoLoaded', function(){});
document.addEventListener('onSkippableVideoFailedToLoad', function(){});
document.addEventListener('onSkippableVideoShown', function(){});
document.addEventListener('onSkippableVideoFinished', function(){});
document.addEventListener('onSkippableVideoClosed', function(){});

Setting rewarded video callbacks

Appodeal.enableRewardedVideoCallbacks(true);

document.addEventListener('onRewardedVideoLoaded', function(){});
document.addEventListener('onRewardedVideoFailedToLoad', function(){});
document.addEventListener('onRewardedVideoShown', function(){});
document.addEventListener('onRewardedVideoFinished', function(data){
  console.log('Reward:' + data.amount + ' ' + data.name);  //data.amount  - amount of reward, data.name - reward name
});
document.addEventListener('onRewardedVideoClosed', function(){});

Setting non-skippable video callbacks

Appodeal.enableNonSkippableVideoCallbacks(true);

document.addEventListener('onNonSkippableVideoLoaded', function(){});
document.addEventListener('onNonSkippableVideoFailedToLoad', function(){});
document.addEventListener('onNonSkippableVideoShown', function(){});
document.addEventListener('onNonSkippableVideoFinished', function(){});
document.addEventListener('onNonSkippableVideoClosed', function(){});

Setting banner callbacks

Appodeal.enableBannerCallbacks(true);

document.addEventListener('onBannerClicked', function(){});
document.addEventListener('onBannerFailedToLoad', function(){});
document.addEventListener('onBannerLoaded', function(){});
document.addEventListener('onBannerShown', function(){});

Manual ad caching

Appodeal.cache(adTypes);

You should disable automatic caching before SDK initialization using setAutoCache(adTypes, false).

To cache interstitial use Appodeal.cache(Appodeal.INTERSTITIAL)

To cache skippable video use Appodeal.cache(Appodeal.SKIPPABLE_VIDEO)

To cache rewarded video use Appodeal.cache(Appodeal.REWARDED_VIDEO)

To cache interstitial and video use Appodeal.cache(Appodeal.INTERSTITIAL | Appodeal.SKIPPABLE_VIDEO)

To cache banner use Appodeal.cache(Appodeal.BANNER)

Enabling or disabling automatic caching

Appodeal.setAutoCache(adTypes, false);

Should be used before SDK initialization

To disable automatic caching for interstitials use Appodeal.setAutoCache(Appodeal.INTERSTITIAL, false)

To disable automatic caching for skippable videos use Appodeal.setAutoCache(Appodeal.SKIPPABLE_VIDEO, false)

To disable automatic caching for rewarded videos use Appodeal.setAutoCache(Appodeal.REWARDED_VIDEO, false)

To disable automatic caching for banners use Appodeal.setAutoCache(Appodeal.BANNER, false)

Triggering onLoaded callback twice

Appodeal.setOnLoadedTriggerBoth(adTypes, true);

Currently supported only for interstitials

setOnLoadedTriggerBoth(Appodeal.INTERSTITIAL, false) - onInterstitialLoaded will trigger only when normal ad was loaded (default)..

setOnLoadedTriggerBoth(Appodeal.INTERSTITIAL, true) - onInterstitialLoaded will trigger twice, both when precache and normal ad were loaded..

Should be used before SDK initialization

Disabling networks

Appodeal.disableNetwork((String)network);

Available parameters: "amazon_ads", "applovin", "chartboost", "mopub", "unity_ads", "mailru", "facebook", "adcolony", "vungle", "yandex", "startapp", "avocarrot", "flurry", "pubnative", "cheetah", "inner-active", "revmob".

Should be used before SDK initialization

Disabling location permission check

To disable toast messages ACCESS_COARSE_LOCATION permission is missing, use the following method:

Appodeal.disableLocationPermissionCheck();

Should be used before SDK initialization.

Proguard Settings

If you are using Proguard

If you are using Proguard add the following to your Proguard config file:

# Appodeal
-keep class com.appodeal.** { *; }
-keep class org.nexage.** { *; }
-keepattributes EnclosingMethod, InnerClasses, Signature, JavascriptInterface

# Amazon
-keep class com.amazon.** { *; }
-dontwarn com.amazon.**

# Mopub
-keep public class com.mopub.**
-keepclassmembers class com.mopub.** { public *; }
-keep class * extends com.mopub.mobileads.CustomEventBanner {}
-keep class * extends com.mopub.mobileads.CustomEventInterstitial {}
-keep class * extends com.mopub.nativeads.CustomEventNative {}
-keep class * extends com.mopub.mobileads.CustomEventRewardedVideo {}
-dontwarn com.mopub.volley.toolbox.**

# Applovin
-keep class com.applovin.** { *; }
-dontwarn com.applovin.**

# Facebook
-keep class com.facebook.ads.** { *; }
-dontwarn com.facebook.ads.**

# Chartboost
-keep class com.chartboost.** { *; }
-dontwarn com.chartboost.**

# Unity Ads
-keepattributes JavascriptInterface
-keepattributes SourceFile,LineNumberTable
-keep class com.unity3d.** { *; }

# Yandex
-keep class com.yandex.metrica.** { *; }
-dontwarn com.yandex.metrica.**
-keep class com.yandex.mobile.ads.** { *; }
-dontwarn com.yandex.mobile.ads.**
-keepattributes *Annotation*

# StartApp
-keep class com.startapp.** { *;}
-dontwarn com.startapp.**
-keepattributes Exceptions, InnerClasses, Signature, Deprecated, SourceFile, LineNumberTable, *Annotation*, EnclosingMethod

# Flurry
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepclasseswithmembers class * {
  public <init>(android.content.Context, android.util.AttributeSet, int);
}

# Avocarrot
-keep class com.avocarrot.** { *; }
-keepclassmembers class com.avocarrot.** { *; }
-dontwarn com.avocarrot.**
-keep public class * extends android.view.View {
  public <init>(android.content.Context);
  public <init>(android.content.Context, android.util.AttributeSet);
  public <init>(android.content.Context, android.util.AttributeSet, int);
  public void set*(...);
}

# Adcolony
-keep class com.jirbo.adcolony.** { *;}
-keep class com.immersion.** { *;}
-dontnote com.immersion.**
-dontwarn android.webkit.**
-dontwarn com.jirbo.adcolony.**

# Vungle
-keep class com.vungle.** { public *; }
-keep class javax.inject.*
-keepattributes *Annotation*, Signature
-keep class dagger.*
-dontwarn com.vungle.**

# MyTarget
-keep class com.my.target.** { *; }
-dontwarn com.my.target.**
-keep class ru.mail.android.mytarget.** { *; }
-dontwarn ru.mail.android.mytarget.**

#Cheetah Mobile
-keep class com.cmcm.** { *; }
-dontwarn com.cmcm.**

# Tapjoy
-keep class com.tapjoy.** { *; }
-dontwarn com.tapjoy.**

# Revmob
-keep class com.revmob.** { *; }
-dontwarn com.revmob.**

# Admob
-keep class com.google.android.gms.ads.** { *; }

# Google
-keep class com.google.android.gms.common.GooglePlayServicesUtil {*;}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.google.android.gms.**

# Legacy
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
-dontwarn android.net.http.**

# Google Play Services library
-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
  public static final *** NULL;
}
-keepnames class * implements android.os.Parcelable
-keepclassmembers class * implements android.os.Parcelable {
  public static final *** CREATOR;
}
-keep @interface android.support.annotation.Keep
-keep @android.support.annotation.Keep class *
-keepclasseswithmembers class * {
  @android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
  @android.support.annotation.Keep <methods>;
}
-keep @interface com.google.android.gms.common.annotation.KeepName
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
  @com.google.android.gms.common.annotation.KeepName *;
}
-keep @interface com.google.android.gms.common.util.DynamiteApi
-keep public @com.google.android.gms.common.util.DynamiteApi class * {
  public <fields>;
  public <methods>;
}
-keep class com.google.android.gms.common.GooglePlayServicesNotAvailableException {*;}
-keep class com.google.android.gms.common.GooglePlayServicesRepairableException {*;} 

# Google Play Services library 9.0.0 only
-dontwarn android.security.NetworkSecurityPolicy
-keep public @com.google.android.gms.common.util.DynamiteApi class * { *; }

# support-v4
-keep class android.support.v4.app.Fragment { *; }
-keep class android.support.v4.app.FragmentActivity { *; }
-keep class android.support.v4.app.FragmentManager { *; }
-keep class android.support.v4.app.FragmentTransaction { *; }
-keep class android.support.v4.content.LocalBroadcastManager { *; }
-keep class android.support.v4.util.LruCache { *; }
-keep class android.support.v4.view.PagerAdapter { *; }
-keep class android.support.v4.view.ViewPager { *; }
-keep class android.support.v4.content.ContextCompat { *; }

# support-v7-recyclerview
-keep class android.support.v7.widget.RecyclerView { *; }
-keep class android.support.v7.widget.LinearLayoutManager { *; }

Admob Adapter

Admob adapter for Appodeal is included with our jar.

To use it, do the following:

1. Go to your adUnit, click on “Mediation ad sources”

2. Add New ad network

3. Add new Custom Event:

Class Name - com.google.ads.mediation.appodeal.AppodealCustomEvent

Label - AppodealCustomEvent

Parameter - fee50c333ff3825fd6ad6d38cff78154de3025546d47a84f

Admob1
Admob2

MoPub Adapter

MoPub adapter for Appodeal is included with our jar.

To use it, do the following:

1. On the MoPub Networks page click “Add Network”

2. Choose “Custom Native Network”

3. Enter the Custom Event Class information into the text boxes.

Custom Event Class - com.mopub.mobileads.AppodealCustomEventInterstitial

Custom Event Class Data - {"appKey":"fee50c333ff3825fd6ad6d38cff78154de3025546d47a84f"}

Mopub1
Mopub2

Changelog

1.15.9 (Feb 16, 2017)

  • Fixing rare OutOfMemoryError
  • Updating Chartboost to 6.61
  • Updating YandexMetrica to 2.62 and YandexAds to 2.50. Do not forget to change metrica:api:level in AndroidManifest to 52
  • Updating Avocarrot to 3.7.6
  • Small fixes

1.15.8 (Dec 15, 2016)

  • Fixing rare ConcurrentModificationException in native ads
  • Fixing rare OutOfMemoryError in native ads
  • Fixing rare NullPointerException from Adcolony when using Google Play Services 10+
  • Banner animation fixes
  • Updating Revmob to 9.2.3 to fix banner issues
  • Updating Yandex Metrica to 2.51 & Yandex Ads to 2.31 to fix crashes on Android 7. Update your AndroidManifest
  • Adding android:hardwareAccelerated="true" to com.my.target.ads.MyTargetActivity
  • Small fixes

1.15.7 (Oct 10, 2016)

  • Small fixes

1.15.6 (Oct 5, 2016)

  • Adding setLogLevel method. Available parameters: LogLevel.none, LogLevel.debug, LogLevel.verbose
  • Removing setLogging method
  • Chartboost integration fixes
  • Adding day and hour segment rules
  • Updating Proguard

1.15.5 (Sep 21, 2016)

  • Updating Unity Ads to 2.0.4

1.15.4 (Sep 16, 2016)

  • Integrating Revmob: banners, interstitials, skippable videos, rewarded videos
  • Adding per placement price floors
  • Banner change animation optimization
  • Performance optimizations
  • Updating Unity Ads to 2.0.2. AAR is no longer needed
  • Updating Proguard
  • Updating AndroidManifest

1.15.3 (Sep 6, 2016)

  • Fixing GoogleApiAvailability NoClassDefFoundError on old Google Play Services during initialization
  • Fixing rare crashes in VASTActivity
  • Renaming setCustomSegment to setCustomRule
  • Adding rewarded videos from Tapjoy. Do not forget to add new activities in AndroidManifest
  • Adding support for refresh period in banners and MRECs configured using placements
  • Sending pricefloor on impression with our offers to improve second price calculation
  • Minor fixes
  • Updating Avocarrot to 3.7.3
  • Updating Tapjoy to 11.8.0
  • Updating MyTarget to 4.5.10
  • Updating Chartboost to 6.5.1
  • Updating Amazon Ads to 5.8.1
  • Updating Applovin to 6.3.0
  • Updating Flurry to 6.5.0

1.15.2 (Aug 12, 2016)

  • Fixing NPE in cases where some network SDKs are not present

1.15.1 (Aug 08, 2016)

  • Removing Inmobi SDK. Do not forget to remove inmobi receivers from manifest
  • Adding support of videos from MyTarget
  • Dex loading improvements
  • Keeping screen on during video playback
  • Adding support for disabling network by ad type in segments
  • Adding container interface for native ads
  • Updating Unity Ads to 1.5.8
  • Updating Adcolony to 2.3.6
  • Update MyTarget to 4.5.6
  • Updating Startapp to 3.4.3
  • Updating Applovin to 6.2.4
  • Adding Cheetah Mobile Ads SDK

1.15 (June 24, 2016, Internal)

  • Adding video native ads. Use AppodealMediaView to show video in your native ads
  • Adding setAppodealMediaView and containsVideo methods to NativeAd object
  • Adding Appodeal.setNativeAdType method to change video native ads settings
  • Renaming setAutoCacheNativeImages to setAutoCacheNativeMedia
  • Updating segment when using setCustomSegment method
  • Fixes
  • Updating Mopub to 4.7.1
  • Updating MyTarget to 4.5.0
  • Updating Avocarrot to 3.7.2
  • Updating Facebook to 4.12.1
  • Removing setVkId and setFacebookId methods from UserSettings
  • Adding com.appodeal.ads.VideoPlayerActivity to manifest

1.14.15 (June 17, 2016)

  • Adding setSmartBanners method to enable/disable smart banners (Enabled by default)
  • Adding set728x90Banners method to enable/disable 728*90 banners (Disabled by default)
  • Minor fixes
  • Adding banner and mrec precache
  • onBannerLoaded(int height) -> onBannerLoaded(int height, boolean isPrecache). setOnLoadedTriggerBoth, isPrecache
  • onMrecLoaded() -> onMrecLoaded(boolean isPrecache). setOnLoadedTriggerBoth, isPrecache
  • Adding autocaching in native ads, enabled by default. One ad is requested after initialization. setAutoCache
  • Support for campaign frequency for cross promo
  • Performance optimization
  • Removing Appodeal.BANNER_CENTER
  • Fixes:
  • Updating Inmobi to 5.3.1
  • Updating Yandex Ads to 2.12
  • Updating Vungle to 3.3.5
  • Updating Startap to 3.4.2
  • Updating Applovin to 6.2.2
  • Updating Mopub to 4.6.1
  • Updating Amazon to 5.7.2
  • Updating Facebook to 4.12
  • Updating MyTarget to 4.5.1. Rename ru.mail.android.mytarget.ads.MyTargetActivity activity to com.my.target.ads.MyTargetActivity. Fixes the issue with URL credentials alert in Google Play
  • Updating Avocarrot to 3.7.0
  • Changing Proguard

1.14.14 (May 04, 2016)

  • Adding setSmartBanners method to enable/disable smart banners (Enabled by default)
  • Adding set728x90Banners method to enable/disable 728*90 banners (Disabled by default)
  • Minor fixes

1.14.13 (May 01, 2016)

  • Adding boolean flag to onSkippableVideoClosed, onRewardedVideoClosed, onNonSkippableVideoClosed which equals true if video was finished
  • Updating YandexMetrica to 2.41 and YandexAds to 2.11. Do not forget to change metrica:api:level in AndroidManifest to 44
  • Updating Amazon to 5.7.1.1
  • Updating Inmobi to 5.3.0
  • Updating Avocarrot to 3.6.1
  • Updating Adcolony to 2.3.5
  • Integarting Applovin native ads over API
  • Removing isLoadedWithPriceFloor method
  • Fixes to banner refresh animation
  • AndroidManifest changes
  • Proguard changes
  • Minor fixes

1.14.12 (April 10, 2016)

  • Minor fixes

1.14.11 (April 4, 2016)

  • Adding Appodeal.disableWriteExternalStoragePermissionCheck() method. Disables all ad networks that need this permission may lead to low video fillrate
  • Adding toast on initialization if support-v7-recyclerview is missing for native ads
  • Adding getAgeRestrictions method for native ads. Optional, may return null
  • Cleaning video cache automatically
  • Adding video, interstitials and banner from Flurry
  • Keeping screen on during video playback
  • Updating Startapp to 3.3.2
  • Updating Avocarrot to 3.6.0
  • Updating Facebook to 4.10.1
  • Updating Mailru to 4.3.10
  • Updating Yandex Metrica to 2.32 and Yandex Ads to 2.02. Do not forget to change metrica:api:level in AndroidManifest
  • Updating Chartboost to 6.4.1
  • Updating Adcolony to 2.3.4
  • Updating MoPub to 4.5.0
  • Updating android-support-v4 to 23.1.1
  • Updating android-support-v7-recyclerview to 23.1.1
  • Removing Pubnative aar and integrating over API
  • AndroidManifest changes
  • Minor fixes

1.14.10 (March 14, 2016)

  • Minor fixes
  • Updating Inmobi to 5.2.3

1.14.9 (March 7, 2016)

  • Native ads fixes

1.14.8 (February 26, 2016)

  • Minor fixes

1.14.7 (February 22, 2016, Internal)

  • Performance improvements
  • Replacing Liverail with Facebook, do not forget to update your AndroidManifest.xml
  • Native ads fixes
  • Updating Startapp to 3.3.1
  • Updating Vungle to 3.3.4
  • Updating Mailru to 4.3.6
  • Updating Yandex to 2.01
  • Updating Chartboost to 6.3.0
  • Updating Inmobi to 5.2.1
  • Removing showWithPriceFloor(soon to be replaced with placements)
  • unRegisterViewForInteraction no longer requires View as argument

1.14.6 (January 30, 2016)

  • Minor fixes

1.14.5 (January 29, 2016)

  • Minor fixes

1.14.4 (January 27, 2016, Internal)

  • Adding native templates
  • Minor fixes

1.14.3 (January 23, 2016, Internal)

  • Adding MoPub Banner Adapter
  • Updating Avocarrot to 3.5.4
  • Minor fixes

1.14.2 (January 20, 2016)

  • Small fixes
  • Adding new entries to Proguard
  • Adding new entries to AndroidManifest

1.14.1 (January 18, 2016, Internal)

  • Updating Chartboost to 6.2.0
  • Updating Inmobi to 5.2.0
  • Updating YandexMetrica to 2.30 and YandexAds to 2.00
  • Updating Flurry to 6.2.0

1.14 (January 10, 2016, Internal)

  • Adding native ads, Appodeal.NATIVE
  • Adding 300*250 banners, Appodeal.MREC
  • Updating Applovin to 6.1.5
  • Updating Avocarrot to 3.5.3
  • Updating Startapp to 3.3.0
  • Updating Mailru to 4.2.0
  • Updating UnityAds to 1.5.6
  • Updating MoPub to 4.3.3
  • Bug fixes

1.13.11 (December 7, 2015, Internal)

  • Improving video fillrate
  • Adding rewarded video from MoPub
  • Removing Appodeal.ALL constant
  • Renaming Appodeal.VIDEO to Appodeal.SKIPPABLE_VIDEO
  • Renaming VideoCallbacks to SkippableVideoCallbacks
  • Adding Appodeal.NON_SKIPPABLE_VIDEO alias for Appodeal.REWARDED_VIDEO
  • Adding NonSkippableVideoCallbacks
  • Adding alert dialog when using Appodeal.NON_SKIPPABLE_VIDEO, to disable use Appodeal.confirm(Appodeal.SKIPPABLE_VIDEO)
  • Updating Chartboost to 6.1.0
  • Updating Liverail to 4.7.0
  • Bug fixes

1.13.10 (November 18, 2015)

  • Fixing issue with rewarded video were onVideoFinished callback will not trigger in some cases
  • Renaming rewarded video callbacks:
  • onVideoLoaded -> onRewardedVideoLoaded
  • onVideoFailedToLoad -> onRewardedVideoFailedToLoad
  • onVideoShown -> onRewardedVideoShown
  • onVideoFinished -> onRewardedVideoFinished
  • onVideoClosed -> onRewardedVideoClosed

1.13.9 (November 14, 2015)

  • Adding banner fadeout animation
  • Updating Mailru to 4.1.2
  • Updating Startapp to 3.2.2
  • Updating Vungle to 3.3.3
  • Updating Chartboost to 6.0.2 (Make sure to copy CBImpressionActivity from AndroidManifest docs)
  • Fixing issues with Liverail banners and interstitials crashes
  • Proguard changes
  • Various fixes

1.13.7 (October 27, 2015)

  • Removing default Appodeal.initialize(activity, appKey) method, use Appodeal.initialize(activity, appKey, adTypes) method instead. To initialize banner, interstitials and rewarded video use Appodeal.initialize(activity, appKey, Appodeal.BANNER | Appodeal.INTERSTITIAL | Appodeal.REWARDED_VIDEO)
  • Various fixes

1.13.6 (October 23, 2015, Internal)

  • Adding Appodeal.trackInAppPurchase() method
  • Adding Liverail video
  • Various fixes

1.13.5 (October 19, 2015, Internal)

  • Adding separate ad type Appodeal.REWARDED_VIDEO for rewarded videos
  • Android M support
  • Triggering onLoad callback when cache is called if ad is already loaded
  • Adding Appodeal.setLogging(true) method to enable logging
  • Appodeal.disableNetwork() method now accepts optional adType and allows to diable specific network for on or more ad types. Should be used before initialization
  • Adding StartApp interstitials, banners and rewarded videos
  • Adding Yandex interstitials and banners
  • Adding Inneractive interstitials and banners
  • Adding rewarded video from Vungle
  • Replacing Facebook with LiveRail, do not forget to remove facebook.jar
  • Using separate dex file for each ad network
  • Updating Applovin to 6.1.4
  • Updating Mailru to 4.1.1
  • Updating MoPub to 4.0.0
  • Updating Unity Ads to 1.5.3
  • Adding new entries to Proguard
  • Adding new entries to AndroidManifest
  • Fixing bug when banners sometimes would appear on screen rotate
  • Various fixes

1.13.1 (August 18, 2015)

  • Small fixes

1.13 (August 14, 2015, Internal)

  • General:
  • Decreasing network traffic from and to Appodeal servers
  • Appodeal.cache() method will not work if autocache is enabled
  • Appodeal.show(INTERSTITIAL | VIDEO) will show 3s loader if ad is not cached yet
  • Impression and click stats will not be tracked when test mode is enabled
  • support-v4 library is now needed
  • Loading new networks from dex file to solve 65k method limit
  • Context added as first argument of Appodeal.disableNetwork() method.
  • Interstitials:
  • Adding Facebook and Appnexus interstitials
  • Banners:
  • Adding Facebook and Appnexus banners
  • Removing Applovin banners
  • Caching next banner after show
  • Refreshing Admob smart banner on orientation change
  • Video:
  • Adding unskippable videos support. To change which videos to show go to app settings in dashboard.
  • Adding rewarded video from Chartboost, Applovin and UnityAds
  • Adding unskippable video from MoPub
  • Adding Vungle support (Only skippable)
  • Adding Andcolony support (Skippable and V4VC)
  • Adding video without end screen banner support (Currently only from MoPub). To change which videos to show go to app settings in dashboard.
  • Fixes to increase video fillrate
  • Libraries updates:
  • Updating Chartboost to 5.5.3
  • Updating Applovin to 6.0.1
  • Updating MoPub to 3.10.0
  • Fixes:
  • General fillrate fixes
  • Centering fixes in some interstitials

1.12.9 (July 2, 2015, Internal)

  • Updating Unity Ads to 1.4.7
  • Updating Mailru to 4.0.13
  • Fixing MoPub NullPointerException

1.12.8 (June 30, 2015)

  • Small fixes

1.12.7 (June 23, 2015)

  • Updating Unity Ads library to 1.4.4
  • Updating Mailru library to 4.0.11
  • Adding new meta-data entry com.appodeal.framework to AndroidManifest
  • Fixing banner refresh if banner failed to load
  • Banner related fixes

1.12.6 (June 18, 2015)

  • Fixing "for kids" setting
  • Fixing bug related to showing banner in dynamic View

1.12.5 (June 16, 2015)

  • Bug fixes

1.12.4 (June 15, 2015, Internal)

  • Bug fixes

1.12.3 (June 13, 2015, Internal)

  • Adding Mailru banners and interstitials support
  • Adding MoPub video support
  • Adding Applovin video support
  • Removing Supersonic library from SDK. Do not forget to remove Supersonic entries from AndroidManifest.xml
  • Running callbacks on UI thread
  • Adding ability to disable specific ad type from dashboard (coming soon!)
  • Adding Admob banner mediation
  • Adding getBannerView method which return View with banner in it (Call Appodeal.show(this, BANNER_VIEW) after getBannerView)
  • Adding isLoadedWithPriceFloor method for interstitials
  • Adding getVersion method
  • Adding setTesting(true) method to show test ads and write to debug log
  • Renaming method Appodeal.orientationChange to Appodeal.onResume. This method should be called in onResume method of you activity if banner dissappears on orientation change
  • Not showing banner if view wasn't found (BANNER_VIEW only)
  • Updating MoPub library to 3.8.0
  • Updating Chartboost library to 5.4.1
  • Updating Amazon library to 5.6.20
  • Updating Unity Ads library to 1.4.2
  • Banner fillrate fixes
  • Fixing centering in some banners
  • Disabling SDK on devices < 2.3 to prevent crashing
  • Bug fixes

1.12.2 (May 15, 2015)

  • Adding Smaato banners support
  • Adding Appodeal.disableLocationPermissionCheck()
  • Sending video finished stats to server
  • Bug fixes

1.12.1 (May 14, 2015, Internal)

  • Adding MoPub banners support
  • Adding TapSense banners support
  • Bug fixes

1.12 (May 12, 2015, Internal)

  • Adding banners support (Admob, Amazon, Applovin)
  • Adding banners callbacks
  • Adding banners position customization
  • Adding new ad types parameters:
  • Appodeal.BANNER
  • Appodeal.BANNER_BOTTOM
  • Appodeal.BANNER_TOP
  • Appodeal.BANNER_CENTER
  • Appodeal.BANNER_VIEW

1.11.2 (May 4, 2015)

  • Adding ad types parameters:
  • Appodeal.INTERSTITIAL
  • Appodeal.VIDEO
  • Appodeal.ALL and Appodeal.ANY - combination of all currently supported and future ad types
  • Ad types can be combined using "|" operator. For example Appodeal.INTERSTITIAL | Appodeal.VIDEO
  • Appodeal.initialize method will initialize interstitials and videos. To initialize only one use initialize with adType parameter
  • Removing initialization with callbacks. Use setInterstitialCallbacks and setVideoCallbacks
  • Removing showBanner method. Use show with adType parameter
  • Removing cacheBanner method. Use cache with adType parameter
  • Removing showBannerWithPriceFloor method. Use showWithPriceFloor with adType parameter(Currently supported only for interstitials)
  • isLoaded now takes adType parameter
  • isLoadedPrecache renamed to isPrecache that takes adType parameter(Currently supported only for interstitials)
  • setAutoCache now takes adType parameter
  • setOnLoadedTriggerBoth now takes adType parameter(Currently supported only for interstitials)
  • Updating MoPub library to 3.7.0
  • Fixing ad centering issue on new versions of Android WebView
  • isLoaded now returns false if autocache is disabled and ad is expired(OpenX ads only, they expire 4 minutes after cache)

1.11.1 (Apr 28, 2015, Internal)

  • Renaming interstitial callbacks from onAd... to onInterstitial...
  • Removing the need for android-support-v4.jar for SDK functionality. If your app doesn't need it function properly and you do not use SDKs that require it you can delete the android-support-v4.jar
  • Checking if loaded Applovin ad is video to prevent video display when interstitial is expected
  • Removing Facebook Audience Network library from SDK. Do not forget to remove Facebook entries from AndroidManifest.xml
  • Removing Mobilecore library from SDK. Do not forget to remove Mobilecore entries from AndroidManifest.xml
  • Fixing an issue where SDK will not work on Android 4.0.4 in Unity apps in some cases

1.11 (Apr 21, 2015, Internal)

  • Adding video support
  • Adding video callbacks
  • Adding Unity Ads support
  • Removing the need of applovin.sdk.key in AndroidManifest.xml
  • Changing debug file from "110" to "1100"
  • com.appodeal.ads.AdActivity renamed to com.appodeal.ads.InterstitialActivity
  • com.appodeal.ads.VideoActivity added to AndroidManifest.xml

1.10.10

  • Adding Appodeal.showBannerWithPriceFloor() method that displays banner only if it's ecpm is bigger or equal to price floor set in our dashboard
  • Fixing issue with SDK pausing when switching between activities
  • Bug fixes

1.10.9

  • Adding Facebook Audience Network support
  • Adding Mobilecore support
  • Adding Admob Adapter
  • Preventing Appodeal methods from being called in Unity Editor

1.10.8

  • MoPub click url fix

1.10.7

  • Removing Heyzap library from SDK. Do not forget to remove Heyzap entries from AndroidManifest.xml
  • Updating AmazonAds library to 5.5.102
  • Updating Chartboost library to 5.2.0
  • Updating MoPub library to 3.6.1
  • Bug fixes

1.10.6

  • Setting timeout for each network and precache load
  • Pausing SDK when app goes to background on Android 4.0+
  • Resuming SDK when app returns to foreground on Android 4.0+
  • Bug fixes

1.10.5

  • showBanner() now returns a boolean value indicating whether show call was passed to appropriate SDK
  • Retrying ad caching if network connection was lost
  • Bug fixes

1.10.4

  • Displaying toast message if android-support-v4.jar library not present
  • Fixing Heyzap integration issue
  • Adding Appodeal.isLoadedPrecache() method that returns whether precache or normal ad was loaded
  • Adding Appodeal.disableNetwork(String) method to disable network. Available parameters: "admob", "amazon_ads", "applovin", "chartboost", "heyzap", "mopub"
  • Fixes and performance optimizations

1.10.3

  • Adding MoPub adapter to SDK

1.10.2

  • Adding boolean parameter to onAdLoaded callback. If true precache was loaded, if false normal ad was loaded. By default onAdLoaded callback triggers only when normal ad was loaded.
  • Adding Appodeal.setOnLoadedTriggerBoth() method.
  • setOnLoadedTriggerBoth(false) - onAdLoaded will trigger only when normal ad was loaded.
  • setOnLoadedTriggerBoth(true) - onAdLoaded will trigger twice, both when precache and normal ad were loaded

1.10.1

  • Fixing onAdClosed not triggering bug
  • Preventing onAdFailedToLoad from triggering if precache was loaded
  • Small fixes

1.10

  • Adding Admob precache to make ads load faster
  • Updating Applovin library to 5.4.3
  • Updating Chartboost library to 5.1.2
  • Updating MoPub library to 3.5.0
  • Bug fixes and some architectural changes
  • Increasing support on devices without GPS. Add
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
  • to your AndroidManifest.xml if you don't require this hardware features to make app compatible with devices without GPS

1.9.2

  • Adding cacheBanner method to manually cache banner. You should disable automatic caching before SDK initialization using setAutoCache(false)
  • Adding setAutoCache method to enable or disable automatic caching. Should be used before SDK initialization.

1.9.1

  • Adding Unity callbacks
  • Updating MoPub library to 3.4.0
  • Bug fixes

1.9

  • Adding Smaato support
  • Adding Heyzap support