I have a game where user can buy consumable product (i.e.: energy). Now, i want to start a SALE where i would sell MORE energy for the same amount of money (and probably different amount of energy, depending on user stats). Do i need to create new product ids for every possible amount of energy i sell, or i can use the same product? Is there any rules against this practice?
PS: Technicly i don't care either way - all user's data are saved on server and app purchases processed server-side. It's just a matter of time for apple to approve new products and some flexibility is lost.
It seems that this is possible. Reading from Overview of In-App Purchase:
Although non-consumable products may be recovered using the built-in capabilities of Store Kit, non-renewing subscriptions must be restored by your server. You are responsible for recording information about non-renewing subscriptions and restoring them to users. Optionally, consumable products could also be tracked by your server. For example, if your consumable product is a service provided by your server, you may want the user to retrieve the results of that request on multiple devices.
So it seems you should be good as long as you save all info about purchase for future reference.
Related
This is a Cocoa in-app purchase question.
I have a game where you can buy a set of 10 lives, and this is a consumable in-app purchase -- once the lives are used up, the user must buy more.
What happens if the user uses a subset of the lives, say, 5, and then deletes the app, reinstalls, and restores purchases? Apple will tell the user that they purchased a set of 10 lives, and my program will happily oblige and give them 5 extra lives.
Does my server need to keep track of this data? I haven't found any information in the in-app purchase documentation about how to proceed for this.
What happens if the user uses a subset of the lives, say, 5, and then deletes the app, reinstalls, and restores purchases?Apple will tell the user that they purchased a set of 10 lives, and my program will happily oblige and give them 5 extra lives.
No! the consumable products cannot be restored. Even if you provide a Restore IAP, consumable products cannot be restored back. So your concern that the user will get 5 extra lives is baseless, but yes you need to keep track of the lives that are used by the user if your app is syncing data with server.
Here is what Apple docs say,
https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Products.html#//apple_ref/doc/uid/TP40008267-CH2-SW2
Consumable products, by their nature, aren’t synced or restored. Users
understand that, for example, buying ten more bubbles on their iPhone
doesn’t also give them ten more bubbles on their iPad. All other types
of products are made available across all of the user’s devices.
They’re also restored so users can continue to access their purchased
content even after buying a new device. Store Kit handles the syncing
and restoring process for auto-renewable and free subscriptions and
for non-consumable products.
Products that expire or get used up—consumable products,
auto-renewable subscriptions, and non-renewing subscriptions—can be
purchased multiple times to get the consumable item again or extend
the subscription.
I have used consumable virtual currency purchases in my game.
The user can use that currency to unlock different types of jetpacks.
Apple rejected the game saying it requires a restore purchase button.
But apple's documentation says that consumable products does not require restore.
Why is apple considering the unlocked jetpacks as non-consumable products?
Following is the message that i have received in iTunes connect.
From Apple
10.6 - Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are
worth it. Apple sets a high bar. If your user interface is complex or
less than very good, it may be rejected
10.6 Details Your app uses intermediary currency to purchase items that function as non-consumable products but does not include a
restore mechanism. Users restore transactions to maintain access to
content that they’ve already purchased. Next Steps Please modify
your app to include an optional user registration feature that allows
users to restore their purchases to all of their iOS devices. We
recommend indicating that account registration is necessary to restore
previously purchased In-App Purchase products, and providing a way for
users to register later if they wish to access this content in the
future.
Should i make a restore mechanism for the jetpacks ?
I am using Soomla and unity3d for iap.
In summary, what Apple are saying is that you must include some kind of user registration / account feature where you are storing the users items on your server.
When they sign in on a new device, they should still have everything they have bought in your game.
It seems that Apple considers these purchases as non-consumable products because they are non-consumable products, no matter how you try to handle them in your app. If you define them as consumables, that means a customer loses them when they uninstall and reinstall the app, buy a new phone and restore their old phone to the new one, use the app on several phones, and so on. In other words, Apple considers your use of a consumable purchase to be cheating.
Your customers would feel exactly the same. If your marketing people try to maximise the flow of money from customers to your company, they should consider methods that Apple and your customers don't consider to be cheating.
I am implementing ios app in which I want to add In-App purchase (IAP).
I want to use in-app purchase for below situation:
1) User will make registration and pay $10.
2) Now, my app will allow user to download songs. (For ex. 10 songs of $1. So user can download 10 songs.)
3) User can add more credit by again making purchase of $10. (So if user wants to pay 2 times then he/she will get $20 in his/her account. And he can download 20 songs of $1.)
4) While downloading song, my app will check whether user has enough balance or not, then only he can download data. (If there is no balance then it will ask to make payment of $10 first.)
I have make research for above situation and also looked into in-app purchase guidelines from Apple.
From that, I come across below:
1) If I will use subscription: But in that case, user will be charged after some duration (for ex. monthly payment, 3 month payment). Which I don't want. Because I want user to pay only if he wants to download data and not have balance. So I think, subscription is not ideal.
2) If I will user Consumable in-app purchase: Here, I can use it, so user can pay as many times as he want. And I need to track his balance from server side. So, from server APIs, I can check user's balance. But I think, it may conflict with Apple rules.
"Consumable items are the one exception to the requirement that your content be available on all the user’s devices. Consumable items are digital items that are used up or disappear after use and can never be reused. Examples of consumable items include virtual poker chips, in-game ammunition, or virtual supplies such as construction materials."
So, user can make payment from his iPhone device. And he can download songs from his iPad device as well. Means, purchase is sharable.
But,
Consumables are device-by-device items, so their purchase needs to be made with the understanding that they are tied to the specific device. Apple does not let you restore a purchased consumable. You should warn your users that consumables are not shareable, and make it easy for users to purchase smaller blocks of items.
So can someone helps what kind of in-app purchase is suitable for above and also according to Apple Rules regarding in-app purchase.
Thanks in advance.
User "Non-Renewing Subscription" should fit your requirement https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnectInAppPurchase_Guide/Chapters/CreatingInAppPurchaseProducts.htm
Apple, iOS, IAP.
The official doc says:
Product type - Users can buy - Appears in the receipt - Synced across devices - Restored
Consumable - Multiple times - Once - Not synced - Not restored
Non-renewing - Multiple times - Once - By your app - By your app
Of course consumable can be made same to non-renewing "by my app" if I want to, so what's the exact difference? Why Apple distinguish these two types identical on his side?
Ref: itunesconnect.apple.com
Everything is here:
Consumable (pay everytime)
A consumable In-App Purchase must be purchased every time
the user downloads it. One-time services, such as fish food in a
fishing app, are usually implemented as consumables.
Select Non-Consumable (one time payment)
Non-consumable In-App Purchases only need to be
purchased once by users. Services that do not expire or decrease with
use are usually implemented as non-consumables, such as new race
tracks for a game app.
Select Auto-Renewable Subscriptions (will deduct money from your credit card on a cycle complete)
Auto-renewable Subscriptions allow
the user to purchase updating and dynamic content for a set duration
of time. Subscriptions renew automatically unless the user opts out,
such as magazine subscriptions.
Select Free Subscription (no payment and is still visible even you did not submitted your account detail to itunes connect)
Free subscriptions are a way for developers
to put free subscription content in Newsstand. Once a user signs up
for a free subscription, it will be available on all devices
associated with the user’s Apple ID. Note that free subscriptions do
not expire and can only be offered in Newsstand-enabled apps.
Select Non-Renewing (need to renew manually)
Subscription Non-Renewing Subscriptions allow the
sale of services with a limited duration. Non-Renewing Subscriptions
must be used for In-App Purchases that offer time-based access to
static content. Examples include a one week subscription to voice
guidance feature within a navigation app or an annual subscription to
online catalog of archived video or audio.
Consumable items are individually purchased items. You need to buy one each time you want one. For example, in a game, if you ran out of lives and wanted to keep playing, you can buy an extra life (consumable). Once you use that life, if you need more than you need to buy another one.
Non-renewing is referring to subscriptions. It is the purchase of a subscription to something for a designated time frame, that will not automatically renew/re-charge after it expires. Example would be buying a one month subscription to a weekly magazine app that publishes new content every week. You purchase this one month, non-renewing, subscription and you get access to the app's content for a month. After the month is over, it does not automatically renew itself and will not bill you again.
I'm launching an app that I would like to offer for free each month up to a certain usage level. If the user exceeds the threshold, the app would charge them a monthly subscription. However, I don't want the subscription to automatically renew each month. Rather, I would like the usage level to reset the following month, and if the user does not exceed the threshold, the app is free for that month.
Any creative ideas about how to make this happen?
Yes, look at Apple Overview of In-App Purchase:
Non-renewing subscriptions are a mechanism for creating products with a limited duration. Non-renewing subscriptions differ from auto-renewable subscriptions in a few key ways:
The term of the subscription is not declared when you create the product in iTunes Connect; your application is responsible for providing this information to the user. In most cases, you would include the term of the subscription in the description of your product.
Non-renewing subscriptions may be purchased multiple times (like a consumable product) and are not automatically renewed by the App Store. You are responsible for implementing the renewal process inside your application. Specifically, your application must recognize when the subscription has expired and prompt the user to purchase the product again.
You are required to deliver non-renewing subscriptions to all devices owned by the user. Non-renewing subscriptions are not automatically synchronized to all devices by Store Kit; you must implement this infrastructure yourself. For example, most subscriptions are provided by an external server; your server would need to implement a mechanism to identify users and associate subscription purchases with the user who purchased them.
You can track the user usage and ask him to buy your Non-renewing subscriptions* if the usage exceeds the threshold. Then at the end of the subscription you can check it again and ask him to pay again for the next month.
I would consider using renewable subscriptions for users that know that their usage will
always exceed the threshold.