Yandex SDK?

Hello,

I just got an app rejected from AppStore with the following motivation. Does anyone know what it means? A quick google search showed that Yandex is a platform for “speech recognition and synthesis”. I use NONE of that in my app. Is this something embedded in Corona?


From Apple

  • 2. 3 Performance: Accurate Metadata

Guideline 2.3.1 - Performance

Your app includes a version of an SDK from Yandex that violates the App Store Review Guidelines. The version of the Yandex SDK you are using in your app attempts to hide the use of private APIs. This is a violation of Sections 2.3.1 and 2.5.1 of the App Store Review Guidelines.

Guideline 2.3.1: Don’t include any hidden or undocumented features in your app.

Guideline 2.5.1: Apps may only use public APIs.

Next Steps

To resolve this issue, please either remove the Yandex SDK entirely from your app, or revise your app to utilize version 2.9.8 or 3.1.2 of the Yandex SDK. Once you have made one of those changes, resubmit your binary for review.


I found another thread where a proposed solution was to stop using the Appodeal beta and move back to the main version but I am not using the beta version. Any ideas?

This should have been resolved recently, but just comment out the Yandex plugin for whatever version of Appodeal you are using.

Like this:

--['plugin.appodeal.Yandex'] = { publisherId = 'com.coronalabs' },

Or like this:

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

Adding on to @agramonte’s answer.

There are multiple versions of Appodeal. One version is a combined plugin where all ad adapters are included. Another version is the modular version (and there are production and beta versions of this plugin). If you’re using the modular version, you can just comment out the Yandex module. If your build.settings just includes plugin.appodeal then you will need to switch to the modular version so you can remove the Yandex module.

Rob

Ha. I didn’t realize that the combined version could still be used. Thank you, Rob, for pointing that out.

I use the combined plugin, never understood (until now) why I would need to exclude some modules. If Apple rejects one of the modules entirely, why doesn’t Appodeal remove it?

The reason I would have liked to stay with the combined plugin is that I do not want to keep track of any new or deprecated modules, It seemed easier to just let the plugin handle it for me. 

It comes down to this. With the combined plugin, you’re getting all ad adapters included at build time. Appodeal would have to learn about the bad ad provider, they would have to build a new SDK, removing the questionable adapter, put it through a QA process, then Corona Labs would have to take that new SDK, build an updated plugin and test it before making it available. Then you have to build a new app and submit it.

Or you can go into your build.settings file, type in two dashes, build and submit your new app if you use the modular version. So you’re trading off the ability to submit when you want to vs. letting Appodeal manage ad partners and not having control over the process.

Rob

Ok, I understand. Thanks!  :slight_smile:

A short follow-up question:

In my app, I have only specified “interstitial”. According to the appodeal docs, interstitial is “full-screen ads, that contain a static image”. However, all the ads that are displayed are videos (skippable after 5 sec)… How is that possible? Is that some kind of “rewardedVideo” that is displayed even though I do not allow it in the app?

Today, Interstitial can be either a static image or a video for most ad providers. RewardedVideos are videos that you have to watch to completion and you can’t skip them. The app user agreeing to watch the full video is why you’re willing to reward them with some in-game feature which in turn provides you a higher eCPM. 

Rob

I guess that the Appodeal documentation was not correct then. 

Thanks!  :slight_smile:

What documentation leads you to believe that static interstitials and video interstitials are independent types? I’d like to get any documentation updated if it’s misleading.

That said, there is an internal difference between the two. Video interstitials have a higher eCPM than static ones do, but all of our API calls clearly state that the supported types are:  banner, interstitial, and rewardedVideo. 

I’ve not been in the Appodeal portal in a while and maybe there you can set a priority of video interstitial vs. static interstitial or perhaps in the modular version of the plugin, you can choose to not include one provider or another if they provide a type you’re not interested in, for instance, Vungle which is available through Appodeal only provides video interstitial ads.

Rob

The docs I found was this:

https://www.appodeal.com/sdk/corona_beta

There, it says in chapter 6 that “interstitial” is a static image. However, there are also these docs:

https://www.appodeal.com/sdk/corona

There, it says in chapter 6 that “interstitial” is a full-screen static image, whereas “video” is a full-screen skippable video. I was not even aware of the new “video” option, partly because it is not mentioned in the Corona docs (“parameter reference”):

https://docs.coronalabs.com/plugin/appodeal/init.html

To sum up:

* Is the “video” option a new, fourth, add type in the main release (i.e. NOT beta)?

* Why are videos displayed even though I have specified “interstitial”?

I’m asking some people at Appodeal to clarify this.

Is it a problem to show video interstitials since you make more money from them?

Rob

That was a fast answer…

Appodeal has confirmed that “video” is not an option and that you will get both static and skippable video when you load and show an interstitial ad. If you do not want skippable video, you can log into the Appodeal dashboard -> Apps -> Select your app -> Click settings -> and choose static only.

Rob

Ok, thanks! 

Please consider removing the “video” option and clarify that "interstitial is both static and video so that the Appodeal docs become clearer.

Showing video is not a problem, I just want to understand why they were displayed.

They are going to update their documentation.

Rob

I found another thread where a proposed solution was to stop using the Appodeal beta and move back to the main version but I am not using the beta version. Any ideas?

This should have been resolved recently, but just comment out the Yandex plugin for whatever version of Appodeal you are using.

Like this:

--['plugin.appodeal.Yandex'] = { publisherId = 'com.coronalabs' },

Or like this:

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

Adding on to @agramonte’s answer.

There are multiple versions of Appodeal. One version is a combined plugin where all ad adapters are included. Another version is the modular version (and there are production and beta versions of this plugin). If you’re using the modular version, you can just comment out the Yandex module. If your build.settings just includes plugin.appodeal then you will need to switch to the modular version so you can remove the Yandex module.

Rob