Announcement: New Corona Professional Bundle; retiring Corona Ads

Hi Brent,

It all depends on your implementation. Its fairly easy to be able to force us to go through your back-end before handing off to admob server. I simply don’t know what you did. I do hope that you did no such thing.

regarding pricing, I do not argue, I simply state my observation. If you wish to go along the path of Unity, by all means go, but you will find many of your current users prefer their mature eco-system to yours when the price difference is so minor. I would have personally preferred the old pro license route which does not tie the license to some plug-ins which may or may not be relevant few months from now.

@christian rozor,

I have not used the fairly new corona ads so I never used their dashboard. I only integrated admob directly using its plug-in and created my own user account on admob a few years ago.

@bgmadclown,

the current ad-mob plug-in is very basic and does not not contain admob latest releases, such as support for mediation partners (sdk less), native ads and few other things. I think there are feature requests for most. 

After so many replies and discussion, Corona has not shed any light about the new Admob plugin. What does it support? You’re asking developers to pay $495 per year, why is there no info in the documentation at all?

Ben

@Brent

I think we all understand that business models change, but Apple ran iAd for 6 years and gave 6 months notice before shutting it down. Even Parse.com, which had Facebook’s backing, eventually shut down but they gave their customers 1 year’s notice and open sourced their software.

In contrast Corona keeps changing its business model every few months and giving only 30 days notice. First you guys say that you’re going to roll another ad plugin into Corona Ads, then two weeks later you say you’re shutting down Corona Ads altogether. You hyped up partnering with Develephant for Coronium cloud then quietly shut that down without so much as an announcement. I had to find out through a tweet. The splash screen was suddenly thrust upon us in a very poorly planned rollout with a pretty much mandatory build of Corona.

All we’re asking for is a little more stability and longer notification times when you announce sweeping changes like this. And if you’re going to start charging premium prices like this then a discount to get everyone on board first would make things easier to swallow.

As others have said, I used to recommend Corona all the time on places like Reddit. But I can’t do that anymore as I don’t think it’s fair to introduce new developers to such an unstable platform.

To those upgrading to the new AdMob (paid), we understand that time=money, so I just wanted to mention that conversion (from old AdMob “v2”) should be extremely easy… and honestly, the new AdMob plugin is better and cleaner as well.
 

To assist you, I just created a sample project on GitHub using the new AdMob plugin which you can use as a model for your own apps.

And, as follows are some basic tips/guidelines for updating, along with notes of various improvements. If you need more details, the documentation should be (as always) your first go-to source.

  1. Include the new AdMob plugin in your “build.settings” file:

    settings = {     plugins =     {         [“plugin.admob”] =         {             publisherId = “com.coronalabs”,             supportedPlatforms = { iphone=true, android=true }         },     }, }

  2. Do your Lua require() as “require( “plugin.admob” )”, not the old “ads” CoronaProvider framework.

    local admob = require( “plugin.admob” )

  3. Initialize the AdMob plugin with “admob.init()”, but skip the “providerName” argument and follow the new syntax. Since you should only be calling this function once per app, this change should take literally no time:

    – OLD admob.init( providerName, appId, adListener ) – NEW admob.init( adListener, { appId=“YOUR_ADMOB_APP_ID”, testMode=true } )

  4. Load ads via “admob.load()”. This function has been improved in the new plugin and it now works with both interstitial and banner ads. The old plugin was awkward in how this call would only pre-load interstitial ads, while the “.show()” call would attempt to both load and show banner ads (but only show interstitials). Essentialily, we’ve re-designed “admob.load()” to work far more logically: pre-load the exact ad type you want, along with an AdMob ad unit ID from their dashboard. You can even load COPPA-compliant ads for child-safe apps directly in this call. For example:

    admob.load( “interstitial”, { adUnitId=“YOUR_ADMOB_AD_UNIT_ID”, childSafe=true } )

  5. Once you know an ad is loaded, using the familiar “admob.isLoaded()” call or by checking for a “loaded” event phase, show an ad via “admob.show()”. In the new AdMob plugin, this call has the added bonus of a “top” and “bottom” screen positioning string for banners, in addition to custom y positioning (number)… this surpasses the awkwardness of the old plugin and dealing with content area, content scale, Android “immersiveSticky” mode, and other issues. Also, the x positioning of banners is now gone since the new plugin uses “smart banners” that span the entire width. Finally, some strange aspects of this call from the old plugin have been resolved: you don’t specify test mode here (that’s now done in “admob.init()”) and you don’t specify child-safe ads here (that’s now done in “admob.load()”). Here’s an example of the new “admob.show()” call:

    admob.show( “banner”, { y=“top” } )

OTHER

Other improvements include better implementation of the “admob.height()” call for banners. In the old plugin, this call was awkward because you’d need to call “.show()” and then “.height()” to get the height of the banner “after the fact” for custom y positioning. Now, since banners are pre-loaded, you can get the height of the banner before you show it, allowing you to get a pixel-perfect vertical alignment with other UI elements in your app, if you need that level of control… or, as mentioned above, just use “top” or “bottom” for screen-edge alignment and forget about the messy issues the old plugin entailed.

Finally, the new plugin works seamlessly with the new Android Dependency framework (this is why it requires daily build 2016.3005 or higher). For a long, long time, the old AdMob plugin caused compatibility issues with other plugins like Google Play Games Services and Google Analytics, among other monetization plugins, making maintenance of it extremely difficult and causing all sorts of support issues for developers who tried to use various plugins in tandem with it. The new AdMob plugin fully resolves these issues and is future-proof for Android.

I hope this helps explain basic conversion to the new AdMob plugin, along with logical improvements we made to it.

Happy holidays,

Brent

[quote=“bjsorrentino,post:84,topic:342466”]

To those upgrading to the new AdMob (paid), we understand that time=money, so I just wanted to mention that conversion (from old AdMob “v2”) should be extremely easy… and honestly, the new AdMob plugin is better and cleaner as well.

To assist you, I just created a sample project on GitHub using the new AdMob plugin which you can use as a model for your own apps.

And, as follows are some basic tips/guidelines for updating, along with notes of various improvements. If you need more details, the documentation should be (as always) your first go-to source.

  1. Include the new AdMob plugin in your “build.settings” file:

    settings = { plugins = { [“plugin.admob”] = { publisherId = “com.coronalabs”, supportedPlatforms = { iphone=true, android=true } }, }, }

  2. Do your Lua require() as “require( “plugin.admob” )”, not the old “ads” CoronaProvider framework.

    local admob = require( “plugin.admob” )

  3. Initialize the AdMob plugin with “admob.init()”, but skip the “providerName” argument and follow the new syntax. Since you should only be calling this function once per app, this change should take literally no time:

    – OLD admob.init( providerName, appId, adListener ) – NEW admob.init( adListener, { appId=“YOUR_ADMOB_APP_ID”, testMode=true } )

  4. Load ads via “admob.load()”. This function has been improved in the new plugin and it now works with both interstitial and banner ads. The old plugin was awkward in how this call would only pre-load interstitial ads, while the “.show()” call would attempt to both load and show banner ads (but only show interstitials). Essentialily, we’ve re-designed “admob.load()” to work far more logically: pre-load the exact ad type you want, along with an AdMob ad unit ID from their dashboard. You can even load COPPA-compliant ads for child-safe apps directly in this call. For example:

    admob.load( “interstitial”, { adUnitId=“YOUR_ADMOB_AD_UNIT_ID”, childSafe=true } )

  5. Once you know an ad is loaded, using the familiar “admob.isLoaded()” call or by checking for a “loaded” event phase, show an ad via “admob.show()”. In the new AdMob plugin, this call has the added bonus of a “top” and “bottom” screen positioning string for banners, in addition to custom y positioning (number)… this surpasses the awkwardness of the old plugin and dealing with content area, content scale, Android “immersiveSticky” mode, and other issues. Also, the x positioning of banners is now gone since the new plugin uses “smart banners” that span the entire width. Finally, some strange aspects of this call from the old plugin have been resolved: you don’t specify test mode here (that’s now done in “admob.init()”) and you don’t specify child-safe ads here (that’s now done in “admob.load()”). Here’s an example of the new “admob.show()” call:

    admob.show( “banner”, { y=“top” } )

OTHER

Other improvements include better implementation of the “admob.height()” call for banners. In the old plugin, this call was awkward because you’d need to call “.show()” and then “.height()” to get the height of the banner “after the fact” for custom y positioning. Now, since banners are pre-loaded, you can get the height of the banner before you show it, allowing you to get a pixel-perfect vertical alignment with other UI elements in your app, if you need that level of control… or, as mentioned above, just use “top” or “bottom” for screen-edge alignment and forget about the messy issues the old plugin entailed.

Finally, the new plugin works seamlessly with the new Android Dependency framework (this is why it requires daily build 2016.3005 or higher). For a long, long time, the old AdMob plugin caused compatibility issues with other plugins like Google Play Games Services and Google Analytics, among other monetization plugins, making maintenance of it extremely difficult and causing all sorts of support issues for developers who tried to use various plugins in tandem with it. The new AdMob plugin fully resolves these issues and is future-proof for Android.

I hope this helps explain basic conversion to the new AdMob plugin, along with logical improvements we made to it.

Happy holidays,
Brent [/quote]

Does the new admob plugin work with firebase?

Just saw the latest announcement. Adding Unity Ads and reducing the price of the bundle and the individual plugins. Now we’re talking! Thanks for listening to us Roj and team.

Hi all,

In light of the updated terms outlined in our latest announcement, we are locking this thread and directing discussion to the new thread. Please continue to discuss and field questions there:

https://forums.coronalabs.com/topic/67049-announcement-welcome-unity-ads-plugin-pricing-changes/

Thanks for your patience and understanding,

Brent

https://forums.coronalabs.com/topic/66767-from-the-blog-introducing-doubleclick-ad-exchange/

I’m confused. So, you are ditching the AdMob plugin in January 1st, 2017 and if we want to use the most popular ad service AdMob, we need to buy Pro bundle. Is that right?

Edit: I’m getting more confused since you guys decided to include a paid AdMob plugin with a price of $495/year! That’s basically cutting out the newcomers, don’t you think?

Consider the old post non-relevant. This new post supersedes the old post, so forget everything in the old one. 

Going forward if you want to use AdMob, you will either have to buy that plugin separately or you can get it as a bundle with Chartboost and AdColony. All three, whether purchased individually or as part of the bundle, will yield 100% ad revenue share to you, the developer (none to Corona). You will also gain full control over the provider’s respective portal, settings, etc.

Rob

Just to confirm on this. If we do not buy the Admob plugin subscription, we will not be able to use it anymore?  Or it will not be available only for the later build.

My personal feedback on this. Thanks Corona team for considering offering Admob plugin as a paid option instead of forcing us to use Corona Ads.  But the price is ridiculously HIGH…  $495 per year.  Are you guys really serious about this? $99 per year sounds more reasonable and that is if you guys are willing to upgrade it to support native ads.

Another year, another business model. For all our sakes I hope they eventually stumble on one that works.

This feels to me to be a tax on successful developers that will put off those hobbyists who have yet to strike it lucky.

honestly, I accept this change with the year payment.

But if I was to put myself in a newcomer’s shoes, may I suggest that there should be a free model as well as this paid model.  

Free Model: You could take a rev share up until a certain revenue limit (cough… old corona pro) or cut out certain features.  I assume admob v2 will be deprecated soon and the newcomer who can’t afford the 1k or $495 would be limited to the ad networks in which they could choose from. Corona wouldn’t lose out on other revenue streams from those hobbyists/newcomers if done right.

Now writing that model leads me to ask… what happens when the year is up, somehow we forget to pay, and we have apps on the market with these plugins? do the ads turn off or does this apply only on the build level?

I’ve stated in my previous post with an edit but I would like to talk more about it.

AdMob is the industry standard provided by Google and you are making it $495/year which will cut off all your newcomers. From now on, most of your newcomers will ditch the platform as soon as they see you are charging that much for AdMob. Also, it’s been some time that I’m trying to understand your attitude towards AdMob. It seems that you don’t want your developers to take advantage of AdMob. Can someone from Corona team shed a light on that?

We have an idiom here in Turkey: “Ölümü gösterip sıtmaya razı etmek” or as Google translates it “Show death and settle for malaria”. That’s what you guys are doing at the moment. First, you are telling us that you are ditching the plugin and after pages of discussion, you are like “ok ok, we listen to you guys. we are not ditching the plugin but as you are willing to pay, we are making it ridiculously expensive”. That’s not how you treat your customers.

Also, what’s with making Corona Ads mandatory for AdMob first and completely retiring it 10 days later? I’m familiar with the Lean Startup methodologies but don’t you think that’s just a bit too much? It just seems to me that you guys are running amok which is not giving me a sense of security for the future of the platform. Probably your business is what’s at stake here but I’m pretty sure you guys know that developers will leave at the first moment possible if you start taking the feeling of security away from them, leading to an accelerated demise.

(I’m a long time -not the most profitable for you- Corona developer. All those 4+ years, I tried to convince people that they are missing out on a great platform but I’m not so sure about that for some time now. I can’t convince people to migrate when you are constantly changing your mind and everything. I’m not trying to be grim but you should know we are really struggling to keep our businesses intact when you keep making those radical changes.)

@noriega, This is at the build level. If you let your subscription lapse, you won’t be able to build and update the app using that paid plugin. For any new developers coming to Corona, we offer over 15 other ad plugins that don’t cost them anything to use… and when they are successful, they can upgrade to one of these pro plugins.

Rob

@noriega,

Truthfully, we don’t have any desire to cut/limit features based on your subscription level. We want the Corona platform to be one where you can create the apps you dream of creating, without core limitations, while also offering a wide variety of ad monetization choices if/when you want to monetize: flat-rate with no revenue share, allowing you to earn as much as you possibly can, or completely free up-front with revenue share taken only when you earn ad revenue. We believe these new options offer a reasonable path for any studio, business, or hobbyist to adopt Corona at a comfortable level and then grow/monetize as their business grows as well.

Best regards,

Brent

I for one completely support this. Corona is a business, and we own business. you cant expect corona to give away everything for free or close to it. I use Corona more than i use Adobe suit in my business yet i pay for adobe, so i am happy to pay for their services if that means updated plugins/support on things such as admob. this now gives me the option to continue and know my upfront costs.

I simply see it as a option of pro subscription (Which is essentially what we had back in the day) and free subscription. there is choice. for people starting out, the option is there to use the free model solution, and it wont harm them. for higher earning devs, we pay for the tools we use. yet don’t loose so much revenue via rev share. Im happy to support corona with them supporting us. not to mention now giving us options.

Unity has a few Admob plugins in their asset store, ranging from $20-40 for a one time cost. That is what the asset store should be for. Integrating third party SDK into the core engine. The way this is priced now is as though Corona created Admob thus requesting a premium price for it.

My question to Corona Team if someone were to submit a Admob Plugin to the asset store now at a similar price of $20-$40, will you guys reject the submission because it compete with your “business model”?

I welcome these new changes. I’ll gladly pay up front and have no revenue share. I agree that it may be steep for new developers, but for anyone who is treating apps as a business, the $1k per year will easily pay for itself. 

I do think Corona will reject any outside developers that attempt to make their own plugin for cheaper and offer it on the marketplace.

Edit: What if I already paid $100 for the splash screen control but want to get this new bundle that includes it. Any credit?

@Falcon777, it’s basically a different business model with a different approach:

A. Buy a third-party AdMob plugin (in Unity) which may or may not be maintained by the author going forward. In the meantime, if you’re a hobbyist, you might use Unity Personal until you require more powerful features, at which point you could then choose to pay for Unity Plus/Pro ($420-$1500).

B. Use Corona and, if you’re just starting out or don’t want to pay for a pro ad plugin, develop for free, using any number of free ad providers under the revenue share model. If/when you’re ready to harness the power of AdMob, Chartboost, or AdColony, purchase the desired plugin but enjoy using Corona (core engine) for free, instead of an annual fee.

@naveen_pcs,

Yes, for those who already purchased the Splash Screen Control plugin and then purchase the Corona Professional Bundle, we will credit you back $99 since you already bought the Splash Screen Control plugin.

Brent