Opinion - InApp Purchase or Not?

I just received permission from a developer of an older PC game to revive it, and I plan to do so for macOS, iPhone, iPad and AppleTV. This game is a puzzle game involving “lasers” and reflecting them properly to solve the level.

So here is my question … I can release this one of two ways

  1. Release only a FULL version with all the puzzle levels for a fixed price.
  2. Release a FREE “Trial” version with just a few levels, and InApp to release the rest (this I could do to release various # of puzzles per IAP)

Here is part of the problem. For AppleTV, the storage is more restictive than the other devices. So all “data” would be “baked in”… any “external” data need to be able to automatically transistion back and forth on iCloud (invisible to the user)… This is not an issue with iOS or macOS

And even is this wasn’t a restriction for tvOS, there isn’t a mechanism to add to an app after the fact… for iOS and macOS something like AirDrop could be used

Not to mention of course that coding for and supporting IAP is a lot more work as well.

I do not and will not include “ADS” in the app… so to monetize it, would have to be one of these options… unless anyone has another idea?

In app sales are more effective as far as I know. While people begun with playing before. The alternative would be to release a light version for free and full version for cash.

Apple won’t let your release two versions of an app anymore… it can be one with various in-app purchases only (or one with no in-app purchase)

No ATV apps have in app purchases ?
What about other games on ATV ?

Yes ATV games have in-app, but I have no way of telling if they are just installing a simple “key” that unlocks content that already exists in the bundle (which is one option)… But if they download addtion “data” … the only way I have been able to figure, is THAT data must be on iCloud or it risks being purged (without notice) if tvOS deems it needs the space. The only data for an App that is “safe” is anything already inside the bundle

IAP. More work agreed, but having a trial version is a must.

I am SO CONFUSED :frowning:
Does an app with IAP need to have a live Internet connection each time its run? Does it have to validate each time? or is a “key” of somekind stored on the device?

What I what is to have a couple of “levels” in the app… So all the logic/data will be there already, it just would need something to say what to “unlock”.

I’ve read dozens of articles, and not one of them is clear in what the mechanics really are… They all basically say… “here is code”… but no clear explanation

I have a Mac and an iPad app with IAP. All the data is baked in to the app. When the user buys extra features I store an encoded file in (Mac) Application Support or (iPad) Documents. Each time the app launches it looks for this file and unlocks whatever the user has bought. If that file should get trashed the user has a button in the app to retrieve from the App Store the features that they have bought.

is it written in Xojo? or Swift/Objc? (my stuff is Swift)…

Storing an encrypted key in the Plist would work just fine… (tvOS doesn’t like “external” data)

Any code you’d be willing to “share”…

The app I have in mind is still work in progress (close to completion)… and I want to have a “Trial” (free) and two paid versions… So it would actually need 3 IAP products

1a) Upgrade to Level 1
1b) Upgrade to Level 2 (including Level1)

  1. Update to Level 2( if level 1 has already been added)

Apple’s documentation makes it seem this way, but the answer is no. It needs IA for purchase, Apple then update the receipt that they write inside your application, which you then read.

I’ve heard that was an “easier” (but still not ‘easy’) way to do this without going thru the “reciept” route, but still some kind of a token.

For what I want to do seems I would need 3 unique tokens of some kind based on what I described above.

I just wish I could find a clear example of the entire process… all the articles I’ve read today have bits and pieces making it very difficult to see the context. Plus many of them attempt to demonstrate EVERYTHING, when a given application needs only part of the whole (for example all I care about for this app is non-consumable)

I agree with you there. It is a mess and unclear and takes lots of experimentation, wasting a lot of time. It truly could be a much better solution.

You probably could just store a token in NSUserDefaults, on the Mac at least you’d need to find a way to tie this to the machine, otherwise someone could just inject the token into apps defaults.

I believe one of the restore functions of StoreKit will also re-load all the purchased items, so that the user can “restore” the unlock token if they change machines.

I should have remembered when I wrote that you use Swift. All my code is in Xojo. Also, I use the Monkeybread plugin for Mac and iOSKit for iPad to get the App Store functions–I remember you don’t use plugins so my example will not help you.

Thanks… what I hate about most of the examples I have found is they leave out important stuff.
Leaving you to make assumptions (and I HATE assumptions)… .:frowning: