I am working on in app purchases for content downloading.
Product list will return from the server and product id also. I am not clear about one thing:
Can I add new in app purchases without updating the app ? Because the product list will come from server side.
I just want to add In App Purchases from iTunesConnect and the product list on the server side.
Yes you can add new in app purchases without update the app.
You will need to add all of your product to iTunes connect & for sure get Apple approval.
When you return product like reten it with same IAP ID.
Related
I want to create some in-app purchases that are available for a limited time only. For example, I want my app to display a product for sale from March-April.
My concern is for the users who buy the product in that time frame. Will they be able to "restore" their purchase after I remove it from sale in April?
I want users who have purchased the product to be able to see it when they launch their app and have access to it if they get a new device or uninstall and reinstall my app.
Yes, it is a very standard behavior across iOS to have a Restore Purchases button in your app. Checkout StoreKit's method: func restoreCompletedTransactions(). This function should return the product they purchased even if you remove it from sale.
Reference: https://developer.apple.com/documentation/storekit/skpaymentqueue/1506123-restorecompletedtransactions
I have implemented in app purchase in my application with multiple products and my application is live now.
As i have created multiple products there organization id is eg. com.abc.product1, com.abc.product2 and so on and i have assigned that number according to the id i have received from web service response.
In my Xcode application i have assigned product identifier as com.abc.product and i am attaching that number dynamically to that identifier.
If i have more products to add in the application then i will create in-app products in iTunes connect.
So my question is i need to create new build for those products or i have to just create products and submit those for review.
If you initial app is approved and live, you don't need to create new Build to submit additional in-app purchases.
You can submit them at any time and submit in bulk as well. See below link for instruction on setting them up
https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnectInAppPurchase_Guide/Chapters/SubmittingInAppPurchases.html
You can continue with this approach. But make sure that you are validating the product identifier with itunes first before showing it to the user, just to make sure that the identifier formed at client side is available at itunes also.
I am very new to In App Purchase. My app is having 50 Audiobooks. Which can be purchased through In App Purchase. I have two questions
If user is purchasing one book from shop. I can add it to library but if user quits the app and open again how could I know the last purchased product? Is it ok to use NSUserdefault to store the purchased book ID? (Note: My app don't have user registration)
I have restore option in my app, On restore I am getting all the previously purchased product id (I have created the IN-App purchase ID as book ID). I am getting that ID send the ID to backend and getting the book details and showing it in app is it the right way?
My app got rejected twice this is the third time, So also kindly share some of the reasons apple rejects In-App purchase if possible.
Thanks in advance
I am developing an app in which i am populating a list of books list form our server and then allowing the user to purchase those books.
My question for this is as for this i have to use in app purchase so when app will not be live then we will be adding in app purchase product on ituneconnect for the added books. BUt when app will be live then can be add new products in itune for our app so that i can add new books in my web server.
if yes then i thought i can get this by following approach
give the book id same as in app purchase product id in itunes so then when a user will click on the book then i can purchase the product by using bookid which will be same as in app purchase product id.
so by this was on the live app i will be adding new books and the bookid and the in app purchase product id for that book will be same.
Is that approach is fine and can be add products in live app?
please suggest.
I Think yes you can if your product list is coming from server. and no if you use hard coded product in your code
For more detail you can check FAQ in iTune Connect.
I am currently working on an iOS project with in-app purchases implemented. The current implementation is as follows:
Product IDs and other meta-data for in-app purchases are hosted on a remote server.
App requests this data from server, then performs SKProductRequest with Product IDs from server.
Product IDs returned as valid from SKProductRequest are displayed to user.
I want to submit a new app bundle with some additional in-app purchases that only work in the new version and are ignored by the previous versions.
So my question is, if I submit a new app bundle along with some new in-app purchases will the SKProductRequest in the previous app version return the new in-app purchase identifiers as valid?
Will I have to create a way for the server to only return the new in-app purchases if requested from the new bundle?
The question shouldn't come up. You request the product list and you supply the identifiers using something like
[[SKProductsRequest alloc] initWithProductIdentifiers: prodset];
and then set the delegate and start. In the prodset, you have a list of identifiers for products of interest. Your older app versions should neither have nor supply the identifiers for products that aren't relevant. If you download the product list from another source (your server), then it can and should filter based on version.
I've approached this by including a minimum version number in my list of product meta data. If the IAP minimum version is later than the user's version, then a popup suggests to the user that they should upgrade so they can get access to the new features.