iOS in-app purchase server model - ios

I understand that in server model of in-App purchases in iOS, the products(non-consumables in my case) would have to be hosted on my own server. Now, with iOS 6, it seems apple allows you to upload content to their servers. Does that mean that if I have to add more products in the future, I only have to upload more content, add description and pricing, associate it with my app and submit it for approval? or do I still need to have a list of products on my own server which will be updated(with new products in the future) and downloaded by the app after purchasing and which will fetch products?
Sorry if I am sounding confusing but I could do with some clarification.
THanks.

Related

Can I store In-App Purchases on the Cloud(Parse)?

Building an iOS App in Swift. Quick question about IAP's I want to implement. Currently, I have my In-App Purchases fixed in my app. Meaning, I would have to push an update to the app in order to change the visible information about the IAP, etc.
Does Apple allow me to store this In-App Purchase data in my cloud(Parse), or does it have to be local? Of course, the IAP's would have to be approved in iTunes Connect, but don't have to be used if they are approved.
My goal is to alternate through different plans without having to go through an entire app update.
I feel like the answer is a big obvious yes, but I just wanted to confirm before I begin coding it all in.
Thanks!
It's up to you to decide where to store In-App Purchases.
Here is Apple documentation about storing in-app purchases data.
How to store product identifiers:
Every product you sell in your app has a unique product identifier.
Your app uses these product identifiers to fetch information about
products from the App Store, such as pricing, and to submit payment
requests when users purchase those products. Your app can either read
its list of product identifiers from a file in its app bundle or fetch
them from your server.
How to store associated content for purchased package:
You can embed that content in your app’s bundle or you can download it
as needed — each approach has its advantages and disadvantages.
Embed smaller files (up to a few megabytes) in your app.
Download larger files when needed.
Personally I want to say that all projects I was working on used remote server for getting in-app purchases data.
You don't need care about app approval in this situation.
Yes, It is possible to store In-App Purchases on the Cloud(Parse).
The in-app purchases for iOS are done through the Apple app store. We do not take a cut or interact with the transaction in any way. We simplify the process of setting up in app purchases, take care of interacting with the Apple server, perform receipt validation to ensure your purchases are done securely, take care of delivering the purchased content through PFFiles if you choose to use this mechanism and also provide an easy to use UI component for use in your app.
if you want to know in detail visit here http://blog.parse.com/announcements/in-app-purchase/
Yes, you can do that using parse in swift(youtube)
and parse doc.

How to purchase the digital content in iOS eBooks app?

I'm going to make an iOS app which is similiar to iBooks, alongside a webserver on which we can manage contents.
The BIG question is "how do we implement books purchases in iOS app"
Here are the possible answers(I could figure out so far) to above question but couldn't find a smart and good solution though.
1) iBooks is great but no way to mimic...
We could find out that iBooks is an app without IAP in AppStore but the experience of books purhcasing is like purchasing an IAP item.
How can we do this?
2) Adding IAP items to itunes connect.
When a new book is came out we need to add a new IAP item in itunes connect?
Can we automate this on my webserver?
Following apps seem to be adding IAP items - do they manage to do this manually?
https://itunes.apple.com/us/app/la-biblia-reina-valera-estudio/id519625336?mt=8
https://itunes.apple.com/cn/app/qq-yue-du/id487608658?l=en&mt=8&ign-mpt=uo%3D2
3) Adding an IAP item per each price Tier.
We pre-add consumable IAP items for price Tiers(one item per one Tier) and we hold apple id of purchaser and book purchased on our own server.
But in this case we need to get apple id which is quite impossible.
4) Own User DB on Our Own Server
We create own user database on our own server. We can apply the idea of #3 but it should be very inconvenient for users to login twice - one for apple id and one for login to our own db.
Is there any solution which'd work great as iBooks does?

How to implement a licensing mechanism when purchasing an App Store application if the license system is on our own server?

I am looking to start selling an app on the Apple app store however currently the app uses our own servers to generate a license to the customer once they have purchased it. How can our existing licensing system which uses our own servers be implemented if a customer purchases the app from the App Store instead?
The application license will be a yearly renewable one. Therefore, so far, from what I have read, the app on the App Store could just come with an auto-renewal option (opt-out of course) so that would take care of the subscription cycle but how can our own server issue the customer the one year license which they could then renew from iTunes using the auto-renew function of the App Store?
I am sorry if this is not clear but it would go like this:
Customer downloads application from app store with a one year auto
renewal subscription.
Customer pays.
The app store verifies the
payment.
Once payment is verified it contacts our server to create a
license for that purchase and for one year.
That license is sent back
from our server to the purchased app to unlock the subscription.
Please correct me if my understanding on how this works is wrong but if anyone can point me in the right direction or give examples of how an application on the app store can successfully issue licenses from their own server then I would be very grateful.
As an example, look at "Aviation Exam". They let you buy subscriptions on-device as in-app purchases, or on their own website. In each case the details are synced to a user's account on their own server, so the same exam can be used from any device.
Look at the Apple documentation for how in-app purchase subscriptions work on iOS. Then your app can send details of a purchase to your servers, and download further information.
Edit; after discussion in comments:
If you want payment to go via Apple then it has to be via App Purchase or In-App Purchase. In-App Purchase specifically supports the idea of buying a subscription for a limited time. This is explained at the second link above.
If you want the user to create an account on your server you can either have a page in the app for them to input their details, or you can bring up a web page served from your website. Either way, the info can go to your server and it can create an account.
The key thing is, if payment went via Apple then inside the app is the only place you know this. The app can send this info to your server. You need some common identifier (i.e. a user-name) that is known to your server and to your user, then the user keys it in to your app and it can all be matched up.
There is nothing complicated here, to a decent software developer. All they need is an existence proof such as I gave at the top, and they can figure out how to link the info together.
Edit 2
Some tutorials for in-app purchase listed at: In-App purchase server model
Lots of low-level detail at: Verify receipt for in App purchase
If you prefer to handle payment yourself, not via Apple, then the situation is very different. Now, your own systems have to keep track of what has been bought, when subscriptions run out, etc. To begin with, the app won't know this at all. However, once you identify the user by having them enter credentials (username/password), you can fetch all the details from your back-end system to the app and proceed as above. Again, this is all visible in the example I gave at the beginning, which supports both Apple and non-Apple payments.
One thing to note: if you handle payment yourself then Apple isn't getting its 30% cut, which is the usual App Store commission, so they may not like this. The guidelines say:
11.1 Apps that unlock or enable additional features or functionality with mechanisms other than the App Store will be rejected
11.13 Apps that link to external mechanisms for purchases or subscriptions to be used in the App, such as a "buy" button that goes to a web site to purchase a digital book, will be rejected
That's pretty clear-cut, but since there are apps that rely on subscriptions or content purchased elsewhere, they don't seem to follow these rules in every case. Even the Amazon Kindle app was allowed back, once they took the 'buy' button off.

Is there a way to retrieve a list of in-app purchases made with my app?

Suppose there is an app with in-app purchase that uses a web server to verify in-app purchases with Apple and keep records. Suppose that web server had a bug and wasn't properly processing purchase verification. Suppose that bug was discovered and fixed.
Does Apple provide any sort of API for retrieving a list of purchases made for an app so that the verification can be re-run and the end users credited with their purchases? So far googling things like "ios in-app purchase retrieve list of purchases" hasn't turned up very much.
(Yes, said app ought to have been logging that information thus invalidating the need for such an API).
Edit: To be clear, I'm looking to see if there's a way to do this from MY purchase verification server and not involve the client devices.

Newsstand magazines how to

I need to develop a newsstand app for a client. I've seen the tutorials on newsstand. My question is, after you make the app for newsstand how do you deliver the content of each issue?
My client wants the same UI experience that GQ magazine offers, which is a interactive magazine (videos, buttons that expand text)
Thanks in advance for any help!
For Newsstand is best to provide issues via download from your server. Don't bundle them with app, because that would require app review every time you add an issue.
For paid magazines, you have to create non-consumable in-app purchase for every issue. Then you can host your content with Apple if you don't want to use some CDN.
Still you'll need some kind of web service to:
provide list of issues for iOS app
provide issue content
send push notification when new issues are available
provide Newsstand feed to automatically update issues visible in the App Store
validate receipts from the App Store
Simplified "algorithm" for a paid magazine iOS app would look like this:
Fetch current issues from server and synchronize with local copy
Fetch issue prices from App Store (create SKProductsRequest for every issue)
Present issues to the user
When user performs purchase, validate receipt and start downloading content
If user purchased subscription, allow access to all issues for free (but keep checking if subscription is still active)
If this is too much work, you may want to use some existing solutions (disclaimer: I cofounded Issue Stand and am moderating this list).

Resources