Tracking in-app purchases & multiple devices (iOS) - iphone

I want to implement in-app purchases to my app. I will be using the built-in product model where the IAP will unlock features within the code. My questions are:
how do I track the a purchase on a device (as to unlock the feature)? NSUserDefaults? The guide vaguely states "application preferences". They are not referring the Info.plist, as this can't be written once on the device. I also (obviously) want the user to back this up.
how do I enable the feature across mutiple devices on the same iTunes account? Do they have to "purchase" the feature on the other devices, or is there another way?
Thanks and regards,
--John

1) NSUSerDefaults is a good solution
2) Use a non consumable product for that http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/APIOverview/OverviewoftheStoreKitAPI.html#//apple_ref/doc/uid/TP40008267-CH100-SW1
User have to re-buy the product in each device but pay just the first time. A pop up "you've already buy this item" appear and you receive the same receipt.

Related

How do I maintain state of in app purchase across devices and restores

I am trying to implement in app purchase for an iOS application
Did some googling and read this thread : Maintaining records of iOS in-app-purchases
It seems the way to go indicated is to use keychain
My in app purchase type is - Non-Consumables
Am wondering what is the best strategy for :
1
If a user has made an in-app purchase and resets the phone / deletes the app and then again downloads the app - do not want the user to pay up again
2
if the user does an in app purchase on an iPhone and then does an update on the iPad - he should get the in app purchase content without paying again
As far as possible do not want to store anything on my server if at all possible and am sure storing something locally on the device is useless for resets / multiple devices
Thanks!
akila
Apple keeps a record of what the user has purchased.
You also must implement a in app purchase restore button for the user in case of the two situations you mentioned above.
The inapp purchase restore button asks the App Store if the user has purchased before and sends you authorization if the have.
I recommend you use a library like RMStore on github to deal with in app purchases, the only big manual thing you need to do is obfuscate the in app purchase status as it stores it in the NSDefaults.
If a user has made an in-app purchase and resets the phone / deletes the app and then again downloads the app.... you want to restore the transactions by keeping an Restore button . Once you click on the restore button you want to connect with the storekit for restore the transactions. Their you can get the list of products that user has already purchased . Check the list of productids if your productid is match then unlock the content. All the best

How to implement Inapp Purchase for multiple products?

I want to implement Inapp purchase for multiple products in my app.
Do I need to register All the products at iTunes? and is the code procedure is same for multiple as for single product?
I don't know what is the requirement of restore button in Inapp.
If anyone having tutorial or code for multiple product inApp then please provide.
Thanks
You need to read this. You will get all your answers InApp Purchase
You need to register all your product in iTunes store for multiple InApp purchase.
What is the requirement of restore button in Inapp ?
If user accidentally deleted the app from their device. If he/she again downloaded or installed the App. They won't get the previously purchased items, then he/she should again purchase them for using it. In that case you need to provide an option for restoring the already purchased items.
This is a nice tutorial

Using a non-consumable in-App purchase with ID's

I'm using in-App purchases in my App on behave of getting some sounds from the App to the iPhone as a ringtone.
I've used 'Consumable' as the type for in-App purchase so that the user would be able to buy a ringtone and download it directly.
However this App got rejected by Apple because they want this function to be non-Consumable (so you would be able to retrieve this ringtone more than once). I only don't know how to set this up in my App because there are more than 200 possible ringtones. The actual buying is not the difficult part but as a criteria for in-App purchases you need to be able to restore previous transactions. As I'm only using one product identifier I think I would not be able to identify which ringtone has been purchases when restoring.
So my final questions:
1. How can I identify which item is bought (i.e. by using tags in the purchase)?
2. Am I able to use only 1 product identifier for this In-App purchase. Or do I need to make a productIdentifier for each and every ringtone?
You have to create a non-Consumable product for each ringtone, each one with a different identifier, if Apple is refusing your app I think you have no other choice.

In-app purchase confusion in iPhone: is it possible to use both type of in-app purchases in a single application?

I have an application which is using a consumable in app purchase for the products. Now I want to add some more portions to the existing application which can be used only if the user is subscribed for that option. So is it possible to use both type of inapp purchases in a single application. And can anybody provide an idea about how I can achieve this.
So you want to hide some in apps unless they have purchased a special in app?
Can't you just check in your code if the first one has been bought? Then display the rest.
You just go to iTunes Connect, to your app, and then to manage in-app purchase section.
You can add any amount of purchases there. Then your new in-app will be reviewd by Apple and you would be able to update your app with new code for retrieving that new in-app.

App Store Review Multiple In-app Purchase Methods

We're having some trouble with the App Store Review Guidelines, specifically these two points in section 11 - Purchasing and currencies:
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
We're making an app for iOS, Android and Blackberry. We wish to provide in-app purchases for iOS and SMS for all three alongside. We can't quite depict from the guidelines whether we can have text underneath an in-app purchase button saying "or SMS XXX to XXXXX" and have them enter the password received back to their phone.
Yes we're using another system to the IAP, but we're offering that at the same time. Could SMS be counted as a different "mechanism"?
Any help on this would be much appreciated. I don't fancy the idea of submitting our app for approval after setting this all up just to have it rejected and have things delayed for weeks.
Thanks in advance :)
Sending an unlock code via SMS will almost certainly be considered a "mechanism other than the App Store" (11.1), and be used as a cause for rejection.
No you can't do that. Apple will reject your app. They don't want any other IAP methods, because they won't earn any money from it! StoreKit is just the easiest and best (and the only :P) API for IAP. Either you just use regular IAP or you will have to stick with Cydia. You can make your app free in Cydia and then manage your own IAP using SMS or how ever you want it to be.