Suppose I have a game for purchase on Android Market; is it possible to allow the buyer to send a limited amount of invites or codes to their friends, which will allow them (the friends) to download the game free of charge?
Or is my best bet to make the game free and use in-app purchases and/or codes for account creation (it's a network-based game)?
EDIT: Google has added support for promo codes.
Kaka, I am afraid that there is no direct way.
Here is one way to implement it (albeit involves manual refunds) :
1. You can generate a hashcode as free key which gets generated and sent to the user whenever he buys the product.
2. User can then share the hashcode with few friends.
3. Friends buy the product from Android Market and login to the app. They then enter the "free code" sent by User 1 and submit it in App.
4. You refund the amount if the "free code is valid and is not exceeded the count" manually in Android market.
Not the best solution but works if the number of users are less and you can handle the refunds yourself.
Unfortunately there's not way to let a user install a paid app for free (presumably in case it's exploited to cut Google out, thus costing them their 30%)
Your second option - a free app with in-app purchases - is by far the better option.
Related
have the following scenario:
we have an app that users need to pay for. But we also want to sell the app bundled with a book meaning there is a code / voucher in the book that can be used to use the app for free. Unfortunately we haven't found any good way to address this scenario yet:
a) make the app a paid app and use Google / iOS Promo Codes for the books - not good, because the number of promo codes per app and quarter is limited
b) make the app itself free but require users to make an in-app purchase to access most of the content. Alternatively make it possible to enter a code to access that same content. The code comes with the book and is created and maintained by us.
negatives: a lot of effort to maintain the promo codes, handle the in-app purchases and Google / Android don't like it if content within the app is paid for outside - so we could end up being rejected.
I'm really wondering: are we the first one with this need? is there maybe already a solution to this problem we are not aware of? We do not want to rip Google / Apple of their 30% share of app sales. But there doesn't seem to be a supported solution for this.
any ideas? thanks
Thomas
Welcome to SO.
This could be done but i dont know if this is the optimal solution.
Make the app free and lock down at the sign-in, there give link to your play books.
In the app check if the user has purchased the book using
https://developers.google.com/books/docs/v1/using
So if user pays for the book and downloads it, On the next app launch give access to him to use the app.
You should be careful with Apple's in-app purchase guidelines, 3.1.1:
If you want to unlock features or functionality within your app, (by
way of example: subscriptions, in-game currencies, game levels, access
to premium content, or unlocking a full version), you must use in-app
purchase. Apps may not use their own mechanisms to unlock content or
functionality, such as license keys, augmented reality markers, QR
codes, etc. Apps and their metadata may not include buttons, external
links, or other calls to action that direct customers to purchasing
mechanisms other than in-app purchase.
I think for users that purchase the book, they would need to register outside of your app (e.g. on your website). If you had some authentication system you could store a flag on the users profile if they've unlocked the book or not and give them premium access to your app upon logging in.
You can make your app free and set non-consumeable book SKU in your app.
If you want to send the promo code, you can use Google Play Console.
https://android-developers.googleblog.com/2016/01/create-promo-codes-for-your-apps-and-in.html
Google only allow a small amount of promo codes per app, 500/quarter. This is because they don't want to encourage developers to sell this promo code offline. But this is still an official feature supported by Google Play. You will be totally fine as long as you're less than 500/quarter.
I have to create an application for iOS and Android, from which I can buy some "items".
I don't understand how the in-app purchase work; can I buy and download the content I already paid for? Or can I buy just the unlocking of internal content without downloading it? If its just for unlocking internal content, is there any way to buy and download the content?
Thanks
The only thing you can't do with in-app purchase is selling actual goods - that's also allowed in case you have a website doing the same thing (eg ebay app). And there are some more rules for iOS in-app purchase.
As for the step by step idea about in-app purchase, here is a gist:
iOS app requests for SKProducts from app store (already setup via itunes connect portal by developer)
The retrieved products are displayed in the app along with localised pricing
User selects a product to buy
Purchase goes through via various steps - in-progress / success / failure. Depending upon the status, the app UI should be updated to keep the user informed.
Upon successful purchase, you can download content inside the app using your own server, or the content that's uploaded on Apple servers. You can unlock the content from within the app as well.
In a nutshell, you have a long way to go. The best way to start theoretically is to refer to In-app purchase programming guide. In addition, this book by Apple is also helpful. And for your needs, here is a sample code from Apple to begin with.
If you rather want a step by step tutorial, here is one authored by me. A rather easier one is the video lecture series with SWIFT and Objective C - prepared by me - which also accompanies code sample for SWIFT and Objective C to save time.
I am working on an Android 4+ app that is free and includes some In-App Purchase items. Some testers are participating in the current beta-test and once the final version is published I would like to let these testers use the IAP items for free.
Is there some "easy" or official way to do this?
This will be my first app in the Play Store (only worked for iOS so far) and I do not know if there is any possibility to create promo codes or something like this to let users purchase non-free IAP items for free.
The only solution I found so far would be some kind of back door within the app, e.g. "Go to page XY, click twice on image A to bring up the unlock screen, enter your username and key..."
Of course this would work but I do not like this solution. Beside the additional work to implement such a solution it would not be really save. I do not know most of my testers in person and if one decides to publish his unlock key on the internet I cannot prevent all kind users from unlocking the app for free (at least not in the current version).
So, is there any way within the Play Store API to get this working?
Short answer: No!
Detailed answer and a possible way to do this:
Right in the Developer Console --> Settings --> License Testing Panel. There you can add up to 400 eMail adresses. Anyone who's using one of those eMail adresses is able to make test-purchases, this means they won't be charged but the Google Server will respond with something like "Yeah he/she bought this item".
Limitation: It's meant test purchases, mainly for applications that aren't published.
From the docs:
You can use any Google account as a test account. Test accounts are
useful if you want to let multiple people test In-app Billing on
applications without giving them access to your publisher account's
sign-in credentials. If you want to own and control the test accounts,
you can create the accounts yourself and distribute the credentials to
your developers or testers.
Though it's still possible to make test-purchases in published application. But there's one major drawback: The purchase will be cancelled automatically after 14 days.
Quote from the docs:
Test purchases are real orders and Google Play processes them in the
same way as other orders. When purchases are complete, Google Play
prevents the orders from going to financial processing, ensuring that
there are no actual charges to user accounts, and automatically
canceling the completed orders after 14 days.
To sum it up: The In-App Billing API doesn't offer an official way to do something like this. If you wanna do this you have to implement your own solution.
See also this SO-Post "Coupons for In-App Billing" which discusses this topic as well.
We have an application for the PC and we're thinking of writing an Android version of it. But I have a question about how Google Play and in-app purchases work.
On our PC version, the basic version of the app is free, and users upgrade to the paid version to get more features. But rather than "purchase" the app, they effectively "subscribe" - in other words, their upgrade is valid for a specific period of time, during which the extra features are available. They also get free updates and support during that time.
The mechanism for this is that they buy the upgrade and get a license key which they enter into the application. Every time they open the application, it pings our server to check whether the key is still valid. If it isn't, only the basic features of the application are available to them. Obviously they have to be online when they open the application, otherwise they can't ping the server.
The question is how we transfer this model to Android.
We want to make the app available in Google Play, so it has to conform to their rules, which I understand means users can download a basic version for free, and any subsequent purchase has to be done via Google Play, which is fine with me in principle. Rather than have a free app and a paid one, we'd prefer to have just one.
So my favoured option so far is to offer one app with the premium features locked until the user upgrades via an inapp purchase. My questions are:
1 - can the in-app upgrade contain a time limit?
2 - if the user has upgraded, is it technically possible for us to force the app to regularly ping our server in order to keep the extra features activated?
We offer refunds on demand for the software, because it's complicated to use, so if we do refund someone, I'd like to be able to deactivate their key on our server.
Grateful for any thoughts you have!
1) There are "consumable goods" and subscriptions
2) An android app can contact your server via e.g. http. But I'd prefer to do everything via google play, if possible.
3) Note that Google takes a percentage of the in-app purchase cost, so if you refund... will the Google also refund? See Android In-App billing cancel payment
Note also the limit of IIRC 20 goods per request in the API, the example code has a bug related to that limit.
We are about to release an application on the Android Market, with In-app Billing for subscription that unlocks certain features for a the subscription period.
My boss now wants me to implement varying number of "free subscriptions" in the sense that:
The "lucky user" downloads & installs the application from the Android Market like any other customer (always free to install, but premium features require payment via In-app Billing).
The "lucky user" receives some key via email that allows him or her to avoid going through the In-app Billing checkout process (i.e. actually pay).
The key can only be used once.
Entering the key via a menu item, enables subscription for X months, as if he actually paid via In-app Billing.
The "key" basically acts like a coupon, but I haven't found any such option in the Publisher's Console.
Do you know of any such feature or a simple way to implement the above without duplicating the customer database on our (the publishers) server?
I actually dove into this subject maybe 2, 3 months ago. My conclusion was that currently there's no way of setting up this system, without using your own server.
Generating unique coupon-codes and expiring them on use is pretty straightforward. Let the user enter the code, send a POST-request to your server, hash the code both client- and server-side and see if they match. Next, expire the code serverside and you're set. It does however make your app vulnerable to piracy (if it isn't already); if you have a high-profile app, make sure to implement security checks (e.g. check SSL certificates to prevent a man-in-the-middle attack).
The hard part is reinstating previously acquired 'freebies' when users reinstall your app or change phones/firmware. For this purpose you're going to need a stable and reliable (cross-device) form of identification (e.g. access to the user's main Google-account on the phone). If you use user-provided e-mailaddresses, it's too easy to just enter someone else's e-mailaddress. If you were to implement a coupon-system, I would advise against reinstating 'freebies'.
I know this is a really old thread, but I had a similar need and found an official solution. For anyone who comes here for a solution:
Google introduced Promotional Codes couple of years ago and that is exactly what you're looking for.
You can create Promo Codes on the Play Console under Your App -> User Acquisition -> Promotion.
You can use promotions to give users a paid app or in-app product for free with a promo code. You can create promotions to reward loyal fans, acquire new users, and reconnect with previous users. Learn more.
yuo can add a screen for enter a coupons.
and the user can go in there and insrert his code and if it is correct you can give him whatever you want.