Hi everybody!
I'm desperately looking for help as I'm stuck with a rather fundamental problem regarding StoreKit2 - and maybe Swift Concurrency in general:
While renovating several freemium apps I'd like to move from local receipt validation with Receigen / OpenSSL to StoreKit2. These apps are using a dedicated "StoreManager" class which is encapsulating all App Store related operations like fetching products, performing purchases and listening on updates. For this purpose the StoreManager holds an array property with IDs of all purchased products, which is checked when a user invokes a premium function. This array can have various states during the app's life cycle:
Immediately after app launch (before the receipt / entitlements are checked) the array is empty
After checking the receipt the array holds all (locally registered) purchases
Later on it might change if an "Ask to Buy" purchase was approved or a purchase was performed
It is important that the array is instantly used in other (Objective-C) classes to reflect the "point in time" state of purchased products - basically acting like a cache: No async calls, completion handler, notification observer etc.
When moving to StoreKit2 the same logic applies, but the relevant API calls are (of course) in asynchronous functions: Transaction.updates triggers Transaction.currentEntitlements, which needs to update the array property. But Xcode 16 is raising a strict error because of potential data races when accessing the instance variable from an asynchronous function / actor.
What is the way to propagate IDs of purchased products app-wide without requiring every calling function as asynchronous? I'm sure I'm missing a general point with Swift Concurrency: Every example I found was working with call-backs / await, and although this talk of WWDC 2021 is addressing "protecting mutable states" I couldn't apply its outcomes to my problem. What am I missing?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hi all,
I have repeatedly the issue that a certain .strings file in my app's bundle has the extended files attribute com.apple.quarantine set. Consequently the submission fails with the following mail notification:
We noticed one or more issues with a recent delivery for the following app:
[...]
ITMS-91109: Invalid package contents - The package contains one or more files with the com.apple.quarantine extended file attribute, such as “abcdef.strings”. This attribute isn’t permitted in macOS apps distributed on TestFlight or the App Store. Please remove the attribute from all files within your app and upload again.
I'm able to resubmit the bundle after cleaning the file attribute via xattr -d -r com.apple.quarantine..., but the funny thing is it happens again and again - on a .strings file which hasn't been downloaded (but manually created), shouldn't be under Gatekeeper's quarantine, and wasn't edited in the meantime.
Is anybody else observing the same issue with macOS 15.4.1, Xcode 16.3?
Greetings, Matthias
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
Files and Storage
Localization
NSToolbar items don’t react to Dark Mode changes in apps compiled with macOS 15 SDK:
My app was installed as a notarized app on a Tahoe VM with the same build as distributed in the App Store, based on macOS 15 SDK. When toggling Dark Mode, toolbar items are not updated, but only after opening a new window / tab or e.g. customizing the toolbar.
The app is using default methods for the toolbar, defined in its corresponding XIB file, and working in previous macOS versions. This issue could be confirmed with various apps built with an SDK prior to macOS 26 "Tahoe", e.g. Apple's Clipboard Viewer.
Reported via Feedback Assistent (FB19107572).
Hi folks,I'm offering a freemium app with an IAP option to unlock features from macOS App Store. Now I was contacted by a company interested in purchasing some licenses, and distributing it to their users by Apple Business Manager. According to them the app's IAP cannot be centrally purchased / distributed.Is Apple Business Manager supporting In-App purchases, and if so are there any specific configurations etc. to follow?Any help appreciated, Mattes
Hi folks!
I'm looking into Promoted In-App Purchases, which I'd like to support with my macOS app to - hopefully - increase revenues.
It looks like implementing the related method paymentQueue:shouldAddStorePayment:forProduct: for the transaction observer, and providing a promotional image should do the job ... plus some tweaking if the app's launch behavior requires that.
But App Store Connect is not showing any option for promotional images of the IAP, and tests (as mentioned here) aren't launching my app. What do I miss? The app's deployment target is macOS 10.12, but I would expect this to work with macOS 11 and higher - as listed for the method.
Any thoughts / personal experiences are appreciated!
Mattes
P.S.: Maybe this works only for iOS apps running on Apple Silicon starting macOS 11? Just a quick after-thought...
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
In-App Purchase
App Store Connect
StoreKit