Appodeal SDK 2.6.0

@ojnap using banner and interstitial. I have not seen these errors. Scroll up to see what i am using. I have ph-1 Essential. 10 with Jan patch. I can test out one of your app to see if it happens on that phone. Last night I push the beta. I only get just below 100 installs a day for that app so in a couple of days I should see if I get any errors off the beta.

@aarbron if it is not in the current list of adapter I would not use it. appodeal removes and ads adapter between releases. also if you mention applovin in the build config once then you don’t have to put it in the list twice. the comments about video, banner and what not are just comments. From your list I would remove Smaato (I have not been able to build with that one at all). Did you set up MoPub, Facebook, Flurry manually (I realized some are commented out)? If you didn’t Appodeal does not have keys for those networks so if you didn’t set it up manually they are just bloat.

@agramonte I can’t build with stable plugin without Smaato. I get an error message on screen when the app starts (just for a few seconds, without other problems but is doesn’t look nice).

I mention Applovin twice because that’s how it’s done in docs.

Is there something in the docs I din’t understand correctly?

When you build with stable plugin you use the same block of code without the “beta” tag?

@aarbron

Yes the documentation is for illustration purposes. These are just comments they don’t mean anything:

-- Base -- Banner -- Interstitial -- Rewarded Video

So if you want to use applovin you just add it once. The same with any other duplicates you have on the list.

['plugin.appodeal.beta.AppLovin'] = { publisherId = 'com.coronalabs' },

If your intention was to disable AdColony for interstitial just disable it in the control panel. This will not disable it.

-- Interstitial --['plugin.appodeal.beta.AdColony'] = { publisherId = 'com.coronalabs' }, -- Rewarded Video ['plugin.appodeal.beta.AdColony'] = { publisherId = 'com.coronalabs' },

For that “error” just add smaato to the do not use:

appodeal.init( adProvider.adListener, { appKey=options.id, disableWriteExternalPermissionCheck=true, testMode=adProvider.options.debug, hasUserConsent=adProvider.options.consent, disableNetworks = {"smaato" }})

This is what I was using for the non-beta. No I do not use the same and just add beta. The list of adapter might have changed between beta and non-beta.

 ['plugin.appodeal.base'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.GoogleAdMob'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.AppLovin'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.FacebookAudience'] = { publisherId = 'com.coronalabs', supportedPlatforms = { ["android"] = true } }, ['plugin.appodeal.Unity'] = { publisherId = 'com.coronalabs' },

Ok, my understanding was completely wrong.

Thank you so much for sharing your code and spending time helping me.

@ojnab I tried both my games. One running 2.x of appodeal and the other running 2.6 appodeal both from the store on my Android 10 device and did not see any errors.

I checked the google dashboard on Android 10 on one app for the last 60 days and no crashes.

I also checked flurry for the last 90 days on Android 10 no crashes. 

That tells me that your crashes are from an adapter I am not using.

Vlad, could you confirm a couple of things please?

That Appodeal plugin with version 2.6.0 (not 2.6.1) is compatible with 3567 Corona version? 

2.6.0 is the version used currently for Android.

Also that now we can manually disable COPPA using “childDirectedTreatment = false”?

(if you ever enabled COPPA on Appodeal dashboard there was no way to undo it for users who already had installed and opened the app. The only way is manually with 2.6.0+.)

Yes. Appodeal iOS is 2.6.1, and Android is 2.6.0. It also sets childDirectedTreatment = false if you send it to init method.

@agramonte

Thanks for the help.

Only provider I have that you don’t is Amazon. I tried turning it off but it still crashes.

I suspect that the crash is caused by a specific ad. I am investigating it further.

@ojnab

Not the same but when I was using Amazon Ads, an error message was appearing ingame for a few seconds.

I disabled the network in appodeal.init( ) and everything works fine now.

Have you tried it? 

@aarbron

Yes I tried that too. I am pretty sure it is not related to amazon ads.

Do you see this specific crash report in google play too?

I am wondering why agramonte isn’t seeing it.

@ojnab yes I can see the same crash, I haven’t reproduced it though.

I just tried iOS build with 3573 and beta Appodeal.

If the name of the app has a number first, space and another word, lets say “7 Dogs”, when the build is successful it’s created an empty folder with the name “7”.

Also when you start the game, it shows a black screen for half a second and close.

When I use the stable version everything is back to normal.

 ['plugin.appodeal.beta.base'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.GoogleAdMob'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.StartApp'] = { publisherId = 'com.coronalabs' }

Do you have GADApplicationIdentifier in your plist? Try adding something like

    iphone =     {         plist =         {             GADApplicationIdentifier = "ca-app-pub-3940256099942544~1458002511",             NSAppTransportSecurity = { NSAllowsArbitraryLoads=true },         },     },

See if it helps with crashes.

EDIT: add entries to existing plist block, don’t make new one, and use your App ID.

Here is my plist block. It looks ok and works fine with stable version.

Btw tested on an old iPad2.

I test on iPhone X, 11 and iPad pro usually but not available right now.

iphone = { xcassets = "Images.xcassets", plist = { GADApplicationIdentifier = "xxx", UILaunchStoryboardName = "LaunchScreen", UIRequiredDeviceCapabilities = {"location-services" }, NSLocationAlwaysUsageDescription = "This app would like to use location services.", NSLocationWhenInUseUsageDescription = "This app would like to use location services.", NSBluetoothAlwaysUsageDescription = "This app would like to access bluetooth.", NSAppTransportSecurity = { NSAllowsArbitraryLoads = true }, --UIApplicationExitsOnSuspend = false, UIPrerenderedIcon = true, UIStatusBarHidden = true, MinimumOSVersion = "8.3", }, },

Ok. Let get to the bottom of this. I am on day 2 of using Appodeal 2.6.0 on one of my apps. I looked at how many active Android 10 devices I had in the last 2 days and it is very low. I guess Android 10 is not that readily available in LTAM. Most of my users are Android 9. No crashes so far. The usual ANRs

I am using 2020.3569. I upload a .aab not an apk. I use my own refresh timer. I don’t rely on Appodeal’s timer for banners. I use my own keys for Admob, Facebook and Applovin. They all display banner ads.

Here is my entire build settings:

-- -- For more information on build.settings, see the Project Build Settings guide at: -- https://docs.coronalabs.com/guide/distribution/buildSettings -- settings = { splashScreen = { enable = false }, orientation = { -- Supported values for orientation: -- portrait, portraitUpsideDown, landscapeLeft, landscapeRight default = "portrait", supported = { "portrait", }, }, -- -- Android section -- android = { usesPermissions = { "android.permission.INTERNET", "com.android.vending.BILLING", "com.android.vending.CHECK\_LICENSE", "android.permission.ACCESS\_NETWORK\_STATE", "android.permission.ACCESS\_WIFI\_STATE", "android.permission.ACCESS\_COARSE\_LOCATION" }, usesFeatures = { { name = "android.hardware.location.gps", required = false }, }, minSdkVersion = "15", manifestChildElements = { -- Array of strings [[\<uses-sdk tools:overrideLibrary="com.flurry.android.analytics.sdk, plugin.tapjoyInstall, com.tappx.sdk.android" /\>]] }, applicationChildElements = { [[\<meta-data android:name="com.google.android.gms.ads.APPLICATION\_ID" android:value="ca-app-pub-xxxxx"/\>]], [[\<meta-data android:name="com.tapjoy.appstore" android:value="Google"/\>]] }, useGoogleServicesJson = true, facebookAppId = "xxxxx" }, -- -- iOS section -- iphone = { xcassets = "Images.xcassets", plist = { UIStatusBarHidden = false, UILaunchStoryboardName = "LaunchScreen", FacebookAppID = "xxxx", -- Replace XXXXXXXXXX with your Facebook App ID GADApplicationIdentifier = "ca-app-pub-xxx", CFBundleURLTypes = { { CFBundleURLSchemes = { "xxxxx", } } -- Replace XXXXXXXXXX with your Facebook App ID }, -- Whitelist Facebook apps LSApplicationQueriesSchemes = { "fb", -- Needed for the facebook-v4a.isFacebookAppEnabled() API "fbapi", "fbauth2", "fb-messenger-api", "fbshareextension" } }, }, -- -- Plugins section -- plugins = { ["plugin.utf8"] = { publisherId = "com.coronalabs" }, ["plugin.GBCLanguageCabinet"] = { publisherId = "com.gamesbycandlelight" }, ["plugin.iap\_badger"] = { -- required publisherId = "uk.co.happymongoose", }, ["plugin.gamesparks"] = { publisherId = "com.gamesparks", }, ["plugin.openssl"] = { publisherId = "com.coronalabs", }, ["plugin.bit"] = { publisherId = "com.coronalabs" }, ["plugin.advertisingId"] = { publisherId = "com.coronalabs" }, ["plugin.google.iap.v3"] = { publisherId = "com.coronalabs", supportedPlatforms = { android=true } }, ["plugin.amazon.iap"] = { publisherId = "com.coronalabs", supportedPlatforms = { ["android-kindle"]=true } }, ["CoronaProvider.gameNetwork.apple"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true } }, ["plugin.idVerifySig"] = { publisherId = "com.cabagomez", supportedPlatforms = { iphone=true } }, ["plugin.reviewPopUp"] = { publisherId = "tech.scotth", supportedPlatforms = { iphone=true } }, ["plugin.tapjoyInstall"] = { publisherId = "com.cabagomez" }, ["plugin.tappx"] = { publisherId = "com.cabagomez", supportedPlatforms = { ["android"] = true } }, ["plugin.hostedplugin"] = { publisherId = "com.cabagomez", supportedPlatforms = { iphone = false, android = { url="https:xxxxxxx@//xxxxxx/amazonads.tgz" }, macos = false, win32 = false }, }, -- Appodeal ['plugin.appodeal.beta.base'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.AdColony'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.AppLovin'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Appnext'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Chartboost'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.FacebookAudience'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.GoogleAdMob'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.InMobi'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.IronSource'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Ogury'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Unity'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Vungle'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.Yandex'] = { publisherId = 'com.coronalabs' }, ["plugin.tenjin"] = { publisherId = "com.coronalabs" }, }, -- -- Project section -- excludeFiles = { -- Exclude unnecessary files for each platform all = { "Icon.png", "Icon-\*dpi.png", "Images.xcassets", }, android = { "LaunchScreen.storyboardc", }, }, }

So try the permissions settings I have on the top. That is my current guess. Maybe it is trying to get GPS access and it can’t.

@agramonte I’m not sure if your last post was for me.

I uploaded on App Store with stable version until there is a solution.

Also I just noticed that there is appodeal.isLoaded( ) and appodeal.canShow( ).

Which one should we use? Is there any difference?

Both look the same to me.

@aarbron No. Not directed at you. I have not started migrating my apps to 2.6.x of Appodeal on iOS. I have no reason to update to 2.6.x on any of my apps. The current app that I am adding features happens to have the old version of Appodeal and is on Android so I am updating it.

All my post up to this point on this thread are related to Appodeal 2.6.x crashing on Android 10 while apparently loading an ad. Not sure when I’ll get to the iOS version of the app but probably at some point this week after the updated version of the Android app is on Google and Amazon for at least a few days.

@vlad the only issue I have found with the plugin so far on Android is that the Facebook portion complains about this:

implementation 'com.android.support:recyclerview-v7:25.3.1'

Once I added it as a dependency the issue went away.

@aarbron Just started updating the app and I am sorry to say I won’t be updating to 2.6.0 this time around. I will need to update my machine for that to happen so I am staying on 2.5.13 until I am forced to upgrade. I just don’t have the time at the moment. So I won’t be able to help you with your iOS issues.