How do I do a "combined" subscription model in iOS app? - ios

We have a print magazine and we're going to release an app with subscription model, sort of kiosk app but with extended functionality.
Well, what we want is to solve the following cases:
Case 1 (complex)
User buys a print issue and discovers a promo code in it. This code should allow user to download free digital copy of this issue from our app.
User launches the app, opens a dialog box where he can enter the promo code.
Voila! User gets his free digital copy of purchased print issue.
Digital issue always remains in his list of purchased issues and is a valid purchased issue with all App Store options available for them (restore, etc.)
Case 2 (simple)
User does not have a print issue. He launches the app and buys the same digital issue using IAP.
So, both issues are the same (i.e. "blablabla magazine", November, 2014) but 1st was downloaded using a promo code, and 2nd was purchased with IAP, and they both should have the same properties and "weight" for App Store.
Problem is I don't know if this model will be approved by Apple. Or, if they do, how do I develop this? AFAIK, list of purchased and non-purchased items is provided by App Store and there's no way to intervene this process.
I didn't find any samples of using 3d party promo codes in iOS apps. Can anyone provide a solution for this, please?
Thanks

To keep a record of the promo code usage, I think the simpliest way to do it is to require an account. Once the user is logged with his account, you can tell a server that the promo code have been used with that account. If the user delete/reinstall your app, you will be able to restore all his promo codes from his account.
For your issue with IAP and promo codes, here is the App Store Review Guidelines
See the 11.16 section:
Apps may enable additional approved features or functionality when
used in combination with specific approved physical products (such as
a toy) as long as the additional features and functionality are either
completely dependent on such hardware (for example an App that is used
to control a telescope) or also available through the App without the
physical products, such as by way of reward for achievement or by use
of IAP
So basically, what you want to do shouldn't be rejected.
But by experience when you do something that borderline with Apple's money (possibility to "undercut" IAP), you should expect a review failure, whatever the guidelines review says.
Keep in mind that the guidelines can be interpreted in your advantage, or in you disadvantage.

Related

iOS: Tracking the paid users while converting paid iOS application to free with in-app purchases

We have a paid iOS application in the AppStore currently. We are planning to convert it to a free application with in-app purchases. We would want to make the in-app purchases free to the users who have already paid for the application in the previous version. I think this can be done via App Receipt Validation. But will the receipt get updated once the application is converted from paid to free and will the purchase details get lost?
If you convert your app from paid to free, you are still able to inspect the receipt and see which version was originally downloaded and act accordingly.
When we did this in one of our titles, we implemented a three tier system:
We bumped the version of the save file. Any time we promoted from a save file with version <= X (where X is the last one that was on the premium version) we would award the appropriate IAPs (in our case we gave them a coin doubler, an ad disabler and a chunk of coins). You should use this simple mechanism for the majority of the users because receipt checking can require an internet connection, and your users might not be online the first time they boot after an update.
We had a 'restore IAP' button. You need this anyway on iOS if you have any non-consumable IAPs, but we additionally added a check of the App Store receipt which lets you discover whether or not the user originally paid for the game. Here's the tutorial we based our code on, we chose the easy way, but you might need to weigh that up against piracy concerns.
Our reimbursement system also checks a file that we host, which can give out extra coins/doubler unlocks/ad removers. If the receipt checking failed (we supported pre-iOS 7 so we couldn't rely on receipt checking APIs) then we could reimburse users that way if they contacted us. This is a good idea anyway, with luck you'll have a lot more users after you go free, which means more people who will discover some progress-losing bug in your app - it's good to be able to give them stuff in return.
Edit: I'd also recommend keeping track of the user's category in the save file. So, you might have 'free' users who have never paid anything, 'paid' users who downloaded for free but have bought some IAPs, 'premium' users who bought your app when it was paid, and 'premium+' users who bought your app when it was paid AND have since bought IAPs. Even if you don't need this info immediately, it's worth tracking for analytics and so that you can reward your old premium customers with free content in the future if you decide to do so.

How to create a promotion code for iOS in-app purchases

As of about May 2014 this year, searching Google for "ios in app purchase promotion code", yields lots of news sites reporting the same thing - Apple seem to be working on allowing promotion codes for testing in-app purchases as evidenced by a screenshot from EA games.
My question is; does anybody know how to do this yet? I logged into the new iTunesConnect interface but can't find any link and nothing appears in the Apple docs from what I can find.
Ideally I'm looking to create a code for a monthly subscription but they may only be allowed for consumables. With the lack of actual info on IAP promo codes my guess is that the feature hasn't been officially made available yet and that EA games were invited by Apple to test it out.
As #Christoph Wimberge notes this is old news. Apple is now supporting this.
You cannot officially get promo codes for IAP currently. See here https://developer.apple.com/library/prerelease/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/ProvidingPromoCodes.html . If you're testing then you should be creating Sandbox Testers under Users and Roles. Depending on how you handled the IAP this could well serve as a promo code of sorts. So, for instance, if you're using the IAP to set a flag in NSUserDefaults or a plist file then this will work as a promo code. You will have to instruct the user to log in as the test user for the purposes of the purchase. Even if you delete the test user once the flag is set the user can use the IAP so long as they don't completely remove the app and assuming you don't change the way IAPs are handled like using App Store digital receipts to confirm purchases. Of course, if you're worried about crackers then you're probably not going to store successful IAP as a flag especially in User Defaults where anyone can just change the value willy nilly. But for apps that aren't games this probably isn't a huge worry. Hope that helps.
We were told by Apple today that they never allow users to type in codes, use Q-codes, or other gateway key to access anything. Instead, she said we should use a members-only webpage (i.e., login required) to accept redemption codes and associate the content through our backend. When the user returns to the app, the content would be available.
If Apple enabled codes for IAP, you could offer sales of the codes from another platform, which would then unlock the IAP. Apple would be doing all of the work, but reaping none of the rewards. In addition, all of a sudden, you've created a knock off market for promotional codes, like g2a.com does for Steam keys.
While Apple might have the functionality, it seems exclusive to EA for now.
Currently, you'll need to figure out how to support promotional items outside of the app store.

Apple App Store - bypass listed purchase price?

Is there a way to offer a purchase free of charge for in-app purchases? I'd like to give a free download as a promotional item and not charge the normal price that is listed in iTunes.
You have to code for this in your app. In my app all purchases are registered on parse.com and sync'd between user's devices. I can add a purchase to the class on parse.com for a user and then they get the IAP for free when the data sync's to their device.
Apple don't have any mechanism for this like they do with app purchases unfortunately. The best way I've found is a custom URL scheme, so you can generated a code/string of your custom URL type ://myApp/123456promoCodeFooBar12999 etc, then your app, in response can connect to your server and check this code off against your database (confirming that it has not been used before, and can't be used again on a diff device) before unlocking the feature. This circumvents needing to get UUID's off people etc (which you can't do in code anymore to check against anyway), you just need an email address, send link, user clicks in it, your app opens and away you go :)
edit addition 28 Feb 2014..
an alternate approach might be to submit an separate paid version of the application in which all upgrades are unlocked because they are paid for upfront at purchase time. You may choose to keep this off the iTunes shelf but occasionally put it up, perhaps at a prohibitively high price, $1000 etc, because you can get the normal promo codes off Apple for this one to give to journalists etc, just explain what you are doing to them in your cover letter and I'm sure they'll be more than happy to play ball

iOS App Distribution for closed usergroup

We are an university department for further education courses and we are planning to publish our cd based courses as an additional iOS/Android App. As we have almost finished the development process we are now facing some questions regarding the distribution. The basic idea is to publish the app in a lite version for free (including chapter one of the course). After you have completed this chapter you will be asked to enter your login data. Our students will be able to enter thier data to activate (download missing content from our server) the app. If you are not an enrolled student there will be a link to our course page. On this page you can enroll for the courses and of course there is a charge for this.
But Apple only allows purchases via the App Store or as so called "in app buys".
Will we violate this rule with our idea?
I have found some newspaper apps with basically the same concept: download for free. If you have a print subscription for this newspaper you enter your data and can use the app. If not you can subscribe for the online offer via an in app buy.
After days of research we have no clear answer to this scenario.
Any comment appreciated.
There are two possible solution for your situation:
Without In-App Purchase: You can create an app which can have a eBook (in your case, dummy eBook with chapter 1 content) bundled with the App.
By doing this anyone who can download will have access to the dummy eBook as well.
For downloading of additional-contents user can do login and access the eBooks available with their account.
Kindly note as you are not using In-App purchase there shall be no links for user registration, buy inside your app.
All these you can handle at your web-site.
Your app can check for valid user credential using a web-service call, and user can see the contents available for download.
Advantages: 1) You shall not be paying 30 % to Apple as No-purchases are done using your app.
2) This is total compliance with Apple guidelines, this link and part 11 specially will be of interest.
Disadvantage: Users cannot directly buy/register via app and you need to maintain additional services for user login validation/content mapping/download content etc.
Using in-App Purchase:
You can use Apple provided in-App purchase for selling content/ registration of users etc.
Please note Apple shall charge 30 % on your selling price.
Advantages: Users can register and buy directly using your app. In-App purchase guidelines will help more in this.
Disadvantage: Apple will charge 30% on Selling price.
Given what you are trying to do, there really is no clear answer for your question that this community can provide, I'm afraid.
The true answer is entirely up to Apple's current app review policies. You should probably submit the app, explain clearly what you are doing, and if it gets rejected/denied, you can follow up with an appeal to the app review board.
As far as I know, physical items that are purchased are not subject to Apple's 30% cut. However, since you're offering courses / content over the 'net, Apple may want some percentage (between 0 & 30%) of the the profits you're making. Maybe they have a different arrangement with newspaper publishers. Ultimately, you'd need to submit the app and find out what the reviewers and app review board say.

Giving in-app purchases to specific users for free

I have an app in the iTunes store that has full functionality. I attempted to release a Free version which contains half of the functionality, and contains a link to the full version if the user tries to use the other functions.
Apple rejected the app on the basis that rather than having two apps, I ought to have the main app released for free and have the extra functions unlockable using in-app purchasing.
That's fine; I can do this. The only problem is that since I released the full version initially, some people have already paid for and downloaded the full version. When I update this app so that it is free, it will be restricted by default. Those users that have paid for the full version will have lost the functionality they've paid for.
I don't really want to release a second version of the app since I intend on continuing to update the app and managing two release streams would be unwieldy.
Is it possible to somehow offer for free the in-app purchase to those users that have already bought the full version of my app when I update the app to the new (free, in-app supported) version?
Edit: An (unpreferred) alternative would be a way of refunding the purchases to the original buyers, along with a note explaining why. Any ideas how?
What I'd do is add a already paid option within the application itself, and then allow users to enter a license code, or email address depending what you prefer, Which you can automatically issue from their contact details if you have them or ask them to contact you if you don't, which most will as they have paid.
Now as far as the licensing and the verification of these codes you could setup a cheap VPS which verify s the code and only activates with codes that you have entered on the server, meaning you won't fall victim of Keygeners.
Just my 2 cents.
If your app doesn't currently have a username/password registration, I would suggest releasing an update to the paid app that explains to your users on an initial popup view something like:
Thank you for supporting our app. Due to changes in Apple's policies, we will be converting this app into a free app with in-app upgrades. Since you already purchased the full app, you will be awarded all features! Please input an [email_address or username] so that we can provide a painless transition.
If your app has a user login mechanism already in place (username/password), then just store those details and have the user log in later in the "free" app to unlock all of the features.
Obviously, both of these suggestions require a backend for validation, but shouldn't be too difficult to create that.
This is tricky due to section 3.3.3 of the license agreement and Attachment 2. I'm not a lawyer so I'll save my interpretation but, read them.
Another option would be to make the free version a new, different app and leave the original one in the store but unavailable. Then you can still publish updates to it but new users won't see it. Apple would probably allow this considering you are still only presenting one app to new users. The downsides are (1) you have to maintain two versions and (2) you have to start over in terms of reviews etc.

Resources