Newsstand auto-renewable or free In-App - newsstand-kit

I have created one app and its live on app store.
Now, I want to enable this app as Newsstand.
I read below for Newsstand:
"Newsstand apps must offer at least one auto-renewable or free In-App Purchase subscription."
Inside app, it will read XML file from server, and if new issues Tag will be added in XML then it will ask to user for download new issue.
Means, I am managing the all new issues from my server side through XML. (Not through auto-renewable or free In-App of Apple).
But I have added key of Newsstand so that app will be displayed as Newsstand.
Is it ok? Will Apple approve my app?
Because I am not using "auto-renewable or free In-App". And manage issues from XML on server side.
Please let me provide your feedback and also let me know what to do for "auto-renewable or free In-App".
Thanks.

Without any subscription(free/paid) which you have to create in iTunes, Apple will not approve your Newsstand app, for sure.
Idea is that users can subscribe and your app can download new issues automatically in bachround using Newsstand push notification. Let me know and i will write answer in more detail ( right now on Phone)

Related

Is it possible that someone is hacking my iOS app in-app purchase?

Is it possible to hack iOS in-app purchase if someone know the product identifier with a jailbroken device ?
It seems that someone is getting my app in-app purchase items for free. I accdiently put all my in-app purchase identifiers in plist and bundled it. So its possible for a hacker to take ipa, extract it and see the plist contents.
My question is, is it really possible to hack in-app purchase flow with a jailbroken device ?
Another interesting fact is that I have the in-app purchase delegate onPurchaseSuccess() function defined in one of my classes. I am getting the URL request for this on the server side but there is no in-app purchase or sales in iTunes. Also, I have Google analytics logged inside this function which also failed to log anything in the analytics admin portal. Analytics for other events are properly logged. How could it be possible for a hacker to fire a URL request for the in-app purchase from this function and stop Google analytics tracking feature? I have no idea what's happening.
If you check for in app purchases in your app, then a jailbroken app can obviously do whatever it likes, including making purchases. If your in app purchases just unlock some functionality that is present in your app, a jailbroken app can be hacked to use that functionality.
If you send the receipt to your server, and your server checks the receipt with Apple, and the purchase then enables functionality on the server, then it can't be hacked without hacking your server.
Putting the purchase keys into a plist doesn't make much difference, because at some point your app needs the purchase keys, and at that point it can be hacked on a jailbroken phone.

iOS In-App Purchasing prevent charging 30% for subscription via website

I want to make a subscription to my app without using In App Purchase. Instead of it I want new user go to a web site from application and make a subscription with payment using few steps on web site.
Alos here are few steps how to implement it:
using UIWebView that will internally show subscription option from my site
using SFSafariViewController which also works without forcing leaving application.
Will Apple allow to do the subscription like this? Did someone face with the same situation.
You can offer subscriptions through your website, but your application is not allowed to refer to that website or to try directing users to your website, or your app will be rejected.
You can't do that.
https://developer.apple.com/app-store/review/guidelines/
11.12 Apps offering subscriptions must do so using IAP, Apple will share the same 70/30 revenue split with developers for these purchases, as set forth in the Program License Agreement
It's against the App Store Review Guidelines so your app will be rejected for trying to go around the IAP program.
NO - You have to use In-app purchase.You can not use any of the work-around but it's depend on what types of apps you are developing. Using website (previously purchased content) is only possible for limited cases.It's only permitted for Reader app, see 3.1.3(a) of in-app purchase guidelines.That's why Spotify and Netflix manage to do it but they fall under this category.

Print subscribers to get a free subscription with Newsstand?

I'm developing a Newsstand app which uses in-app purchases and auto-renewable subscriptions to unlock and display paid issues of a magazine.
I have access to the database of the magazine's print subscribers and mechanism to identify each one of them with a unique code. I would like to allow people with the code to download digital issues they have subscribed to in print for free. However, I am worried that my app will get rejected from the App Store.
Quote the App Store Review Guidelines:
11.1 Apps that unlock or enable additional features or functionality with mechanisms other than the App Store will be rejected
11.2 Apps utilizing a system other than the In-App Purchase API (IAP) to purchase content, functionality, or services in an App will be rejected
Is allowing print subscribers to download issues they've already paid for a 'mechanism other than the App Store' or a 'system other than IAP'? Is there a best practice to accomplish this without violating the Guidelines? Has anybody solved a similar problem to this?
You should be fine unless you allow these users to register for said code inside your app. That means that you are circumventing in-app purchases and still using iOS to deliver content.
Say you have your own subscription service and people can purchase a subscription through your website. You are within your rights to allow them access to this subscription in the App.
What you are not allowed to do is allow them to purchase a subscription via your website in the App. In this scenario you must use In-App purchases.

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.

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