Since today, we are receiving reports from several customers on iPadOS17.x and iPadOS18 that their app runs in 'demo' mode. This can only happen if the purchase receipt is not found and this also shows in the log file they sent us. We can also reproduce it on an officially installed version of our app, but not when run from Xcode.
Is anyone else experiencing this?
Post
Replies
Boosts
Views
Activity
I have an Audio Unit app extension with an in-app purchase. When starting the app and running it as standalone, the in-app purchase's receipt can be verified without problems:
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL
options:0
error:&readError];
However, when running the audio unit inside a host, receiptURL is
file:///private/var/mobile/Containers/Data/PluginKitPlugin/D87B0A4A-2670-41AC-9400-2787A9B9982F/StoreKit/sandboxReceipt
and the receipt is nil, probably because the file does not exist or it cannot be accessed from the plug-in running in the host environment.
The error is:
Error Domain=NSCocoaErrorDomain Code=260 "The file “sandboxReceipt” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/private/var/mobile/Containers/Data/PluginKitPlugin/63A457CA-305C-45B5-ABCB-60FEDA70E4FA/StoreKit/sandboxReceipt, NSUnderlyingError=0x28316c450 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
Although I'm running a Sandbox environment, I don't think that's the actual issue. So the question is, how to validate in-app purchase receipts from within an host?
What's more, once I do an in-app purchase in the standalone version (so just running the app from its icon), then the very same file is created and can be accessed from within the plug-in! So this means that StoreKit does not write the receipt when a purchase is done from within the host.
iPadOS 16.1.1
It would be nice to have an example on what to pass to MIDIEventListAdd() as UInt32 * words if you have MIDI 1 type of messages (status, data1, data2), more so because MIDISend() crashes on iOS14.