Hi folks,
My app is reading proprietary files with the file name extension .JPX - which is out of my control. In addition I’m providing QuickLook and Thumbnail extensions, used system-wide and in my app.
Unfortunately iOS is assigning the JPEG-2000 file type (UTI „public.jpeg-2000“) to this file extension, and therefore - to work with associated files - my app is importing this UTI and both extensions are listing „public.jpeg-2000“ in their info.plist as QLSupportedContentTypes. This works to some extent in simulators and when debugging from Xcode on a device: Files with the file extension „.JPX“ are listed with thumbnails provided by my extension, although the preview seems to invoke the system-provided viewer and fails. Not perfect, but good enough as my app requires an icon preview (aka thumbnail) in its UIDocumentBrowserViewController.
But when I try to submit my app incl. extensions to the Apple App Store / TestFlight asset validation is reporting an error:
„Asset validation failed. Invalid Info.plist value. The value for the key ‚QLSupportedContentTypes‘ in bundle … is invalid. [public.jpeg-2000] are system-supported types.“
How to assign QuickLook / Thumbnail extensions to 3rd party files types whose extension is conflicting with a system-supported UTI?
I just spent one of my TSIs for this question - as my Apple developer membership is renewed shortly - but maybe this community as some smart tip to share...
Appreciate any help, Mattes
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I have a macOS app (AppKit-based, not Mac Catalyst) and an iOS app serving a very similar purpose and user group. Both are currently using non-consumable IAPs to unlock functionalities. I‘m considering a subscription model and wonder if both apps could share the same IAP products.
I‘m well aware that both apps need to use the same Bundle ID / App Store Connect entry, so I‘m willing to discontinue the existing Bundle IDs (while keeping the apps installable for existing customers), but Apple‘s info about „Universal Purchase“ is only mentioning Mac Catalyst apps for macOS:
Mac Catalyst. With Xcode 11.4 or later, Mac apps built with Mac Catalyst can share a bundle ID with the iOS version of the app, so universal purchase is supported.
Can an AppKit-based macOS app and an iOS app share the save Bundle ID and offer a Universal Purchase?
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
App Store
Bundle ID
App Store Connect
In-App Purchase
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?
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