my app has been removed from Google Play

I’m looking into this…

@Rob

this message was sent from Appodeal a few minutes ago

Dear user, 

We detected a critical bug in 2.5.0 beta Android SDK that may cause apps getting temporarily banned in Google Play store. In order to solve this problem we released Android, Unity and Corona 2.5.1 SDK with this bug fixed. To avoid issues, please update to 2.5.1 SDK as soon as possible. If you have already been contacted about this, please ignore this message.

(SDK 2.5.1 Android, Unity, Coron)

So I guess it’s safe now to build and upload with beta version.

I asked a question about the rewardedVideo documentation because I found the documentation was incorrect after debugging. They said the event data would contain “rewardName” and “rewardAmount” but instead it contains “name” and “amount” so I was asking if this was a bug in the beta release or in the documentation. I shared the event debug data, showing the plugin was using Appodeal 2.5.0, and showing the event data I was getting. The reply (from Yaroslav Dyakov) was this:

Corona is open source now and we don’t support it anymore. Last version of integration guide is for 2.4.10 sdk https://www.appodeal.com/sdk/documentation?framework=36&full=1&platform=1.

To be honest, I really hope this was just a case of bad support, and I hope this is not actually true. I like using Corona, but the catch for me has always been being dependent on the build infrastructure and marketplace. At the end of the day, if we don’t have support for the plugins that make Corona worth using, then it’s time for me to move on because (like many of us) my time as an indie is limited.

@RayCardillo

Thanks for sharing your info.

As an indie developer myself I understand you.

Imho its bad support and misunderstanding  on appodeal’s representative side.

It happens sometimes with every partner.

I just updated one of my apps with beta version and it was live in 25 minutes!

Just to be clear. Appodeal’s support is bad compared to few months ago.

I used to have an answer in 10-15 minutes and account manager. 

Now it takes some hours or days if it’s complicated and someone has to test my app.

I recommend using appodeal plugin 100%!

I can confirm that we did an update to the plugin yesterday, and it was a .jar replacement, but what I can’t confirm yet is the version number of that JAR file. I’m waiting for some additional communications to confirm exact version numbers.

Rob

I think this is false positive from google. Google says the app was removed for:

Your app is uploading users’ installed application information to https://a.appbaqend.com/stats  without a prominent disclosure.  

Here is the data that was being sent to that URL. I highlighted the only thing I question. There are some other personal data but Google didn’t complain about those yet.

{

“status”: “ok”,

“ads”: [{

“status”: “mraid”,

“html”: “\u003cdiv id=‘banner451’\u003e\u003ca href=‘appodeal://’\u003e\u003cimg src=‘https://eu-central-1.appodeal.com/appodeal-uploads/server/production/campaign_image/image/1641/16_320x50.jpg’ /\u003e\u003c/a\u003e\u003c/div\u003e \u003cscript type=“application/javascript”\u003e var appodealXImpressionTrackers = []; var appodealXClickTrackers = []; var appodealXImpressionTracked = false; var appodealXClickTracked = false; var appodealXSendImpression = function() { if (!appodealXImpressionTracked) { var hiddenSpan = document.createElement(‘span’); hiddenSpan.style.display = ‘none’; appodealXImpressionTrackers.forEach(function(tracker) { var img = document.createElement(‘img’); img.src = tracker; hiddenSpan.appendChild(img); document.body.appendChild(hiddenSpan); }); appodealXImpressionTracked = true; } }; var appodealXSendClicks = function() { if (!appodealXImpressionTracked) { appodealXSendImpression(); } if (!appodealXClickTracked) { var hiddenSpan = document.createElement(‘span’); hiddenSpan.style.display = ‘none’; appodealXClickTrackers.forEach(function(tracker) { var img = document.createElement(‘img’); img.src = tracker; hiddenSpan.appendChild(img); document.body.appendChild(hiddenSpan); }); appodealXClickTracked = true; } }; var appodealXTrackViewableChange = function(viewable) { mraid.addEventListener(‘viewableChange’, function() { console.log(‘empty viewableChange event’); }); if (viewable) { appodealXSendImpression(); } }; var appodealXSubscribeViewableEvent = function() { mraid.addEventListener(‘ready’, function() { console.log(‘empty ready event’); }); if (mraid.isViewable()) { appodealXSendImpression(); } else { mraid.addEventListener(‘viewableChange’, function() {}); mraid.addEventListener(‘viewableChange’, appodealXTrackViewableChange); } }; if (mraid.getState() === ‘loading’) { mraid.addEventListener(‘ready’, function() {}); mraid.addEventListener(‘ready’, appodealXSubscribeViewableEvent); } else { appodealXSubscribeViewableEvent(); } \u003c/script\u003e”,

“width”: 320,

“height”: 50,

“name”: “Test ad”,

“ecpm”: 0,

“ad_watch”: false,

“tmax”: 5000,

“complains”: false,

“id”: “xxxxx”

}],

“networks”: [{

“name”: “admob”,

“max_requests”: 1,

“max_requests_pf”: 2,

“max_nofills”: 1

}],

“user_data”: {

“ip”: “107.137.158.253”,

“country_id”: “USA”,

“address”: “Charlotte, United States, 28211”,

“user_settings”: {

“lat”: 25.1677,

“lon”: -45.7932,

“city”: “Charlotte”,

“zip”: “28211”

}

},

“app_data”: {

“max_duration”: 0,

“disable_long_video”: false,

“categories”: [“IAB24”, “IAB24”],

“bcat”: [],

“name”: “sixteen dots”,

“id”: 5998

},

“afd”: 2000,

“ach”: “fatal”,

“segments”: [{

“id”: 6838,

“name”: “On-Mobile”,

“match_rule”: “AND”,

“restrictions”: [{

“name”: “connection_type”,

“op”: “IN”,

“value”: [“mobile”]

}, {

“name”: “app”,

“op”: “IN”,

“value”: [“ac513121b0e00f2d592dc3377e22738e7d8b918b54e4a6dc”, “3f4b5cf9d847b82a754dc4f62e423fa3ce3c9242c6d80303”, “c61a5b3d7cd8e5ca16926c3b2ee0f9f377b1645badaea1e5”, “620a595ded524daf12e6c1224dbdc0d2df7c26ebcc56deb0”, “3bb2bad76d20b59fd18129cf259ca4370bb585537421212a”, “052b5b70703174e820affacf94dfb04c0b715d3385d34a5e”, “c8c713a41a1f41f91b8dad4d58031561292ce7a4ca79fb8a”, “5eeae82feb8cffa11d7069839569d2f03d5a4310ec01e4d9”, “ad4323d8c081b8f8db0bb200fe43ced7d81d4a8a609b3a54”, “a0a81c3e19eef4f450c04a7d1484757279218baf68026f61”]

}],

“settings”: {

“disable_type”: [“video”, “rewarded_video”]

},

“placements”: []

}],

“placements”: [{

“id”: 22932,

“name”: “default”,

“settings”: {}

}],

“for_kids”: false,

“refresh_period”: 15,

“waterfall_cache_timeout”: 1800000,

“last_sdk_version”: null,

“main_id”: “xxxxxx”,

“precache”: [],

“fraud_detector”: {

“show_eq_click_count”: 5,

“click_time”: 500,

“click_interval”: {

“count”: 3,

“time”: 60000

},

“show_interval”: {

“count”: 0,

“time”: 0

}

},

“rtb_watch”: false,

“rri”: false,

“wst”: 0,

“test”: true

}

plugin.appodeal: 1.6.5b (SDK: 2.5.1)

And this is what the data for the new version looks like. I don’t really see any glaring difference.

“user_data”: {

“ip”: “107.137.158.253”,

“country_id”: “USA”,

“address”: “Charlotte, United States, 28211”,

“user_settings”: {

“lat”: 23.1677,

“lon”: -34.7932,

“city”: “Charlotte”,

“zip”: “28211”

}

},

“app_data”: {

“max_duration”: 0,

“disable_long_video”: false,

“categories”: [“IAB24”, “IAB24”],

“bcat”: [],

“name”: “sixteen dots”,

“id”: 5998

},

“afd”: 2000,

“ach”: “fatal”,

“segments”: [{

“id”: 6838,

“name”: “On-Mobile”,

“match_rule”: “AND”,

“restrictions”: [{

“name”: “connection_type”,

“op”: “IN”,

“value”: [“mobile”]

}, {

“name”: “app”,

“op”: “IN”,

“value”: [“ac513121b0e00f2d592dc3377e22738e7d8b918b54e4a6dc”, “3f4b5cf9d847b82a754dc4f62e423fa3ce3c9242c6d80303”, “c61a5b3d7cd8e5ca16926c3b2ee0f9f377b1645badaea1e5”, “620a595ded524daf12e6c1224dbdc0d2df7c26ebcc56deb0”, “3bb2bad76d20b59fd18129cf259ca4370bb585537421212a”, “052b5b70703174e820affacf94dfb04c0b715d3385d34a5e”, “c8c713a41a1f41f91b8dad4d58031561292ce7a4ca79fb8a”, “5eeae82feb8cffa11d7069839569d2f03d5a4310ec01e4d9”, “ad4323d8c081b8f8db0bb200fe43ced7d81d4a8a609b3a54”, “a0a81c3e19eef4f450c04a7d1484757279218baf68026f61”]

}],

“settings”: {

“disable_type”: [“video”, “rewarded_video”]

},

“placements”: []

}],

“placements”: [{

“id”: 2322,

“name”: “default”,

“settings”: {}

}],

“for_kids”: false,

“refresh_period”: 15,

“waterfall_cache_timeout”: 1800000,

“last_sdk_version”: null,

“main_id”: “4343323”,

“precache”: [{

“id”: “xxxxxx”,

“status”: “admob”,

“admob_key”: “xxxxx”,

“ecpm”: 0.13,

“top”: false,

“ad_watch”: false,

“complains”: false,

“tmax”: 5000,

“cap”: false

}],

“fraud_detector”: {

“show_eq_click_count”: 5,

“click_time”: 500,

“click_interval”: {

“count”: 3,

“time”: 60000

},

“show_interval”: {

“count”: 0,

“time”: 0

}

},

“rtb_watch”: false,

“rri”: false,

“wst”: 0,

“test”: false

}

I can confirm that the Appodeal modular and beta plugins were updated to 2.5.1 yesterday. For the best results, you should use 2019.3462 or later.

Rob

Thank you Rob.

why you didn’t post your app in other stores?

Rob, did they only make this change on Android? Because I was just testing to release an update on iOS and Android, and I can see that iOS is still using 2.5.0 from the console logs. I am adding a GDPR consent screen to both and releasing a new version. I assumed that the underlying problem (the root cause here) existed on both platforms with one (or some) of the underlying Ad Network SDKs. If not, and they know that for certain, then I guess it’s fine, but it is a little unconventional to have a newer release on Android and an older one on iOS.

@uptrivial I do have some of my other apps in other store. If I had a large team it would probably be more profitable but my experience so far has been that the problems I have in Google store are only worse in those other android stores:

1. No easy way to monitize. Nobody downloads anything that isn’t free. No ad network plugin available for Corona. The all have their own IAP solutions that again is not available in Corona.

2. No easy way to aquire users. No ad networks that support them or no ad network that have plugin available for Corona.

I can make plugins but I have limited time so unless I have a clear path to making money I usually don’t bother. I don’t want to do native builds again because I am just one person coding. Now if somebody shows me a proven path with the type of apps I like to build then I would gladly follow it regardless of what plugins I have to build.

Ray, it looks like this was an Android Jar fix. There is also a change in defaults for hasUserConsent.

Rob

you can contact me and we can discuss some details of posting your apps on my app store if you interesting, of course 

  1. update new daily build Corona SDK.

  2. appodeal.beta -> appodeal

  3. Submit and solved :slight_smile:

Interesting. So you reverted back and it is now working correctly. Did you inform the appodeal team? Did you send the consent flag as “false” and have a way to set the flag to true in the UI?

Did you let Appodeal know about this?

Rob

Hello!

After a recent update I have the same problem with one of my apps.

“Your app is uploading users’ installed package information to https://a.appbaqend.com without a prominent disclosure. Prior to the collection and transmission, it must prominently highlight how the user data will be used, describe the type of data being collected and have the user provide affirmative consent for such use.” 

The app was live and updated frequently for months without any problems.

Did some changes, built with latest versions and resubmitted the app but this time got rejected.

“Issue: Violation of Inappropriate Ads policy The ads shown within your app must be appropriate for the intended audience of your app, even if the content by itself is otherwise compliant with our policies. For example, ads that show mature content or services cannot be served in apps that have a content rating for younger audiences.”

I use only appodeal in my apps and 90% of my ads come from admob.

Unfortunately no response from appodeal.

Their support used to be amazing but last year is very hard to get some help for some serious issues.

Especially around holiday seasons,

I am also waiting for Appodeal’s answer.

I think I have seen notice about Holiday. Maybe because of it.

In my case, appodeal usually solved it well, so I am still waiting for it.

Without an in-app notice or dialog for personal data, a few of us have been rejected or removed from the Google Play in the past. This is what mine looks like at for one of my new app (bottom one):