Universal Purchase Questions (Mac and iOS)

I have a bunch of questions about universal purchases between iOS and Mac. I'm hoping I can get answers to these soon—or at least before March—but so far I don't think Apple has shared enough information to answer these definitively. I thought I'd ask them here anyway in case anyone can help.


Will universal purchase have any OS requirements?

As far as I can tell most of it will happen server side—all the appropriate info should just appear in the receipt like it normally would, and there aren't any changes to the receipt format or StoreKit. The only reason I can think of for an OS requirement would be if the App Store needs to be a particular version just to be able to download the app in the first place. Regardless, this seems like an incredibly important question to have answered before I can decide whether supporting universal purchase is an option.


What does that mean for existing apps?

Apple has made it clear the apps will need to have the same bundle ID. In my case I have an iOS app with the bundle ID com.company.AppName and a Mac app with the bundle ID com.company.mac.AppName. If I want to use universal purchase in the future, I'll change the bundle ID of the Mac app. Does that mean I'll effectively have two completely separate Mac apps? I'm assuming that my Mac users will have to re-download the app—it won't update automatically due to the new bundle ID. I'm also assuming that the receipts will be separate—the app with the new bundle ID wouldn't show any record of purchases tied to the old bundle ID. Is that correct? From what I gather this is how it has worked with iOS/tvOS universal purchases, so I think my assumptions are correct.


Are there any concerns related to different App ID Prefixes?

I doubt this will be a concern for most developers, but my iOS app is old enough that it has a unique App ID Prefix that is not the same as the Team ID. When I released my Mac app, the only option was to use my Team ID. Is there anything I need to watch out for if I switch the Mac app to use the same bundle ID as my iOS app? From what I can tell, using the same bundle ID means my Mac app will now have the same App ID Prefix as my iOS app. This has an effect on keychain access groups of course. Do I need to look out for anything else?

Replies

Seeking for the same infos, and one more :


My two apps use one freemium IAP to unlock full features and renewable subscriptions for some contents.


Merging subscriptions IAPs

The two freemium IAP are different, and the Mac version cost more. They will stay distincts in a possible merge scenario.

But the subscriptions are the same and shared between Mac and iOS. At the time being, I had to have two products for each subscription, one for each Store with different product ID. Its currently up to our licence server processing to do the merging and allow content access for both versions whenever one environment does a purchase.


It's completely unclear to me how and when to merge the two subscription products. If the Mac version vanishes by using the iOS bundle, what will happen to current purchases, both one time freemium and subscription. How will the users get the licences they paid for in the former (current) Mac version ? Specifically, will a merged app doing a "restore purchase" get all the purchases from both sides in the receipt ?


We definitely need a more complete description of the Universal Purchases AND possible switch scenario.

Before I found this thread I issued an SO question here on similar topics.


https://stackoverflow.com/questions/60587223/how-to-setup-universal-purchases


As of today there are no answers to it, but this may change (hopefully soon !!!) in the future and to have all information in one place I am adding the link here.


@Apple guys: We really need answers to these SOON !


Regards

Chris

This is an assumption based on my own understanding of the situation, but I'm confident you will effectively have a new Mac app that has the same receipt information as your iOS app. Any information from the previous version of your Mac app will be missing from that receipt. If you want to merge anything from your older Mac app I think you'll be entirely on your own. You could potentially accomplish this by getting the receipt from the old app (a bit challenging in a sandboxed app, but possible) and then using your licensing server to tie the two receipts together.

I doubt this will apply to many people, but one update on the App ID Prefix situation: I'm so sure I tried code signing previously and didn't have any issues, but when I tried to code sign last night I got an error that my App ID Prefix is not a valid Team ID for my account. This is technically true since it's not a Team ID at all. I've contacted Apple and I'm waiting for a response. While it's possible there will be some other solution to this, I now strongly suspect I'm going to be forced to change the App ID Prefix to use universal purchase. Here's a document from Apple explaining how that works along with a note that Apple can change it for you. (Of if you're using a wildcard-based App ID, you can do it yourself.)

I’m also running into exactly the same issue - older app with a prefix ID != team ID, and uploading a MacOS universal build doesn’t work. Automatic signing says the team ID is invalid (because it’s not a team ID), manual signing says the application identifier entitlement is invalid. I’m in communication with Apple dev support but the responses haven’t been very helpful so far. Did you manage to get a real answer from Apple on this?

I got the same issues. I thought it is a bug.


Xcode seems assume App ID prefix is Team ID, it is not true for old apps. Therefore, web service returns error "unable to find Team ID 'XXXXX'" where XXXX is actually app id prefix.


Would apple support please investigate with this?

Same problem here for an iOS app that is already live with a macOS version and which has the "Mac Catalyst" flag set in the developer center. I think the problem is in embedded.mobileprovision. Therein, the app identifier still has the prefix "maccatalyst". This is not the case for apps for which you add the macOS platform in App Store Connect now. I don't know how to renew the profile. When I delete the old profile, Xcode refuses to download a new profile, telling "This request is forbidden for security reasons" and I should contact support. Which I did.

Hi,


during researching a similar problem a few days ago I came over a new build settings flag:


"Derive Mac Catalyst Product Bundle Identifier"


Maybe you can research in that direction. Don't know if this helps, but give it a shot.


Regards

Chris

Thanks. I know the flag. In Xcode, in the macOS platform settings of the app, it is named "Use iOS bundle identifier". Setting the flag does not help for the app that already has a Mac Catalyst version. The "maccatalyst" prefix does not go away from the app identifier in the profile.

seeing that this is an older thread, did anyone found a resolution to the App ID prefix issue? I'm reusing my old iOS entry which has its own App ID prefix to be universal purchase. I changed my mac app's bundle ID to match the iOS bundle id. but now when submitting the mac app to appstore I always get an error: Invalid 'com.apple.application-identifier' entitlement value.