Can someone explain the processes behind updating from trial to full version of an app?

I’ve tried to find a suitable blog post or tutorial, unfortunately searches for “corona sdk free / corona sdk trial / corona sdk paid” all return results regarding trial version of the Corona licence itself.

What I want to know is what happens when I make 2 version of an app - free and paid. Specifically I’m interested in Nook at the moment, but a general overview would be helpful.

I presume that if both apps have the same package name, the paid version would overwrite the free version - but I’m not sure that you can even have 2 apps with the same package name in the store?

What happens if the user pays for the full version and then downloads the free version for some reason, presumably it would overwrite the paid version?

Also I save my userdata (scores, settings - no user info) in a json file in the DocumentsDirectory. Would scores from the trial version be retained here if the user then downloads the paid version (i.e. would the documents directory be wiped)?

If anyone has a useful post or two they can send me to, I’d be grateful.

Thanks [import]uid: 84115 topic_id: 33832 reply_id: 333832[/import]

I don’t have any blog posts to give you, but every app must have a unique package id. This means you cannot have a paid and a free version with the same package id.
My own standard is com.mycompany.appname for paid-only versions, and com.mycompany.freemium.appname for my free apps with In-App purchasing.

As a general rule no user data is lost when a user updates an app.

I’ve found that In-App purchasing works well with Google Play and Apple, however Corona doesn’t support In-App purchasing for Nook or Amazon yet. [import]uid: 70847 topic_id: 33832 reply_id: 134483[/import]

Well the in-app part isn’t the end of the world I guess, as long as redirecting them to the correct url is an accepted way of doing it.

In your example you have
*com.mycompany.appname
*com.mycompany.freemium.appname

Does that mean that if they have your free app, then buy the free one, they will have both apps on your device? If they are different package names I don’t understand how they would overwrite, or how user data would be retained?

Or is there an option when setting the app up in the store to say “app X is a paid version of app Y”? [import]uid: 84115 topic_id: 33832 reply_id: 134485[/import]

Sorry for being unclear. If a user downloads my free app (com.mycompany.freemium.appname), the package id will remain the same even after they make an In-App purchase.

It’s up to you to store a flag somewhere in your user data to know if the user has paid or not. [import]uid: 70847 topic_id: 33832 reply_id: 134488[/import]

Ah I see. So you effectively use just the one app, and then “hide” the locked content in the fre app until they pay for it, rather than replacing the free app with the paid one (and the paid app just has all content available to begin with). [import]uid: 84115 topic_id: 33832 reply_id: 134491[/import]

You got it :slight_smile:

However you mentioned that you were interested in the Nook. At the moment Corona doesn’t support in-app purchasing on that platform… yet. [import]uid: 70847 topic_id: 33832 reply_id: 134495[/import]

Out of interest, have you built any apps for Nook yet?
I’m led to believe that when you create the app on their store, you can upload 2 apks - the full version and a trial version. So all you would need to do for an “in app purchase”, is to redirect them to your app in their store, where it has both version available.

This link seems to say that’s how Nook does it, and that the paid version replaces the trial version on the users device: http://onnook.wordpress.com/2012/05/02/free-trial-and-full-for-pay-versions-of-an-app/
I’ve tried using this on my Nook Color:

--this works fine, but seems a bit ugly to do it this way  
system.openURL(http://www.barnesandnoble.com/w/finger-hoola-plant-pot/1113900817)  
--this does not work at the moment, but that could be because the full app is not   
--available on the Nook Color, only on the HD Nooks.  
  
options =   
{  
 nookAppEAN = "379003212",  
 supportedAndroidStores = { "nook" },  
}  
native.showPopup("appStore", options)  

Can anyone that has built for nook confirm/deny whether this would be a suitable method for upgrading an app? [import]uid: 84115 topic_id: 33832 reply_id: 134616[/import]

No I haven’t developed for Nook yet.
I’m located in Korea, and as far as I know I need an American bank account to be accepted as a developer. That could prove to be difficult to get…

Looking at the link you provided it seems like you would upload 2 versions of your app, most likely with the same package id. The paid version would just overwrite the trial version, which would keep the user data from the trial.
[import]uid: 70847 topic_id: 33832 reply_id: 134622[/import]

I don’t have any blog posts to give you, but every app must have a unique package id. This means you cannot have a paid and a free version with the same package id.
My own standard is com.mycompany.appname for paid-only versions, and com.mycompany.freemium.appname for my free apps with In-App purchasing.

As a general rule no user data is lost when a user updates an app.

I’ve found that In-App purchasing works well with Google Play and Apple, however Corona doesn’t support In-App purchasing for Nook or Amazon yet. [import]uid: 70847 topic_id: 33832 reply_id: 134483[/import]

Well the in-app part isn’t the end of the world I guess, as long as redirecting them to the correct url is an accepted way of doing it.

In your example you have
*com.mycompany.appname
*com.mycompany.freemium.appname

Does that mean that if they have your free app, then buy the free one, they will have both apps on your device? If they are different package names I don’t understand how they would overwrite, or how user data would be retained?

Or is there an option when setting the app up in the store to say “app X is a paid version of app Y”? [import]uid: 84115 topic_id: 33832 reply_id: 134485[/import]

Sorry for being unclear. If a user downloads my free app (com.mycompany.freemium.appname), the package id will remain the same even after they make an In-App purchase.

It’s up to you to store a flag somewhere in your user data to know if the user has paid or not. [import]uid: 70847 topic_id: 33832 reply_id: 134488[/import]

Ah I see. So you effectively use just the one app, and then “hide” the locked content in the fre app until they pay for it, rather than replacing the free app with the paid one (and the paid app just has all content available to begin with). [import]uid: 84115 topic_id: 33832 reply_id: 134491[/import]

You got it :slight_smile:

However you mentioned that you were interested in the Nook. At the moment Corona doesn’t support in-app purchasing on that platform… yet. [import]uid: 70847 topic_id: 33832 reply_id: 134495[/import]

Out of interest, have you built any apps for Nook yet?
I’m led to believe that when you create the app on their store, you can upload 2 apks - the full version and a trial version. So all you would need to do for an “in app purchase”, is to redirect them to your app in their store, where it has both version available.

This link seems to say that’s how Nook does it, and that the paid version replaces the trial version on the users device: http://onnook.wordpress.com/2012/05/02/free-trial-and-full-for-pay-versions-of-an-app/
I’ve tried using this on my Nook Color:

--this works fine, but seems a bit ugly to do it this way  
system.openURL(http://www.barnesandnoble.com/w/finger-hoola-plant-pot/1113900817)  
--this does not work at the moment, but that could be because the full app is not   
--available on the Nook Color, only on the HD Nooks.  
  
options =   
{  
 nookAppEAN = "379003212",  
 supportedAndroidStores = { "nook" },  
}  
native.showPopup("appStore", options)  

Can anyone that has built for nook confirm/deny whether this would be a suitable method for upgrading an app? [import]uid: 84115 topic_id: 33832 reply_id: 134616[/import]

No I haven’t developed for Nook yet.
I’m located in Korea, and as far as I know I need an American bank account to be accepted as a developer. That could prove to be difficult to get…

Looking at the link you provided it seems like you would upload 2 versions of your app, most likely with the same package id. The paid version would just overwrite the trial version, which would keep the user data from the trial.
[import]uid: 70847 topic_id: 33832 reply_id: 134622[/import]