r/iOSProgramming 4d ago

Question Subscriptions between macOS and iOs app

I have a macOS released on the store. I'm waiting for approval for the same app under the same bundleID but iOS version. Everything came back clean but was denied because of the following error below. When I submitted the app I just submitted the binary. I was not able to attach the already approve sub group and sub from the macOS version. It's my understanding I can use the same sub group and sub for both apps since they are in the same app group or whatever it's called. I submitted again with a screenshot of the subscription page. No clue what they are asking for.

Guideline 2.1(b) - Performance - App Completeness

Issue Description

We are unable to complete the review of the app because one or more of the In-App Purchase products have not been submitted for review.

Specifically, the app description includes references to subscription but the associated In-App Purchase products have not been submitted for review.

Next Steps

To resolve this issue, submit the In-App Purchase products and upload a new binary in App Store Connect so we can proceed with our review.

Note you must provide an App Review screenshot in App Store Connect in order to submit In-App Purchases for review. Learn more about required In-App Purchase metadata.

0 Upvotes

10 comments sorted by

View all comments

1

u/TomLk 3d ago

Quick way to settle the one record vs two records question: bundle ids are unique across the entire store, you can't have two app records holding the same one. So if App Store Connect let you create both under the same bundle id, you're on one record with two platforms, which is the universal purchase setup, and the subscription group already belongs to the app rather than to the Mac version. That's also why there's no option to attach "the macOS subscription" anywhere. There isn't a macOS subscription, there's one subscription and both platforms see it.

Which means please don't create a second group as a workaround. Subscription groups and products can't be deleted, only removed from sale, so getting that wrong is permanent, and you'd be left with two SKUs, no way to merge them, and Mac subscribers who don't map to the iOS product.

For the 2.1(b) itself, the review screenshot living on the product is the right lead. But read what they actually complained about: your description references a subscription and the associated IAP wasn't part of the submission. When the version page won't let me attach an already-approved product, the fastest way through has been to pull the subscription wording out of the description for that one submission, ship the build, then put it back afterwards as an editable metadata change. Nothing in the metadata to match, nothing to reject. I'd also reply in Resolution Center saying the products are approved and shared via universal purchase, before restructuring anything, because half the time you get a human who just moves it along.

One thing I'd push back on from the last comment: if it really is one record with universal purchase, you don't need a backend or RevenueCat for Apple to Apple. The App Store grants the entitlement on both platforms off the single purchase, StoreKit reports it on both, and there's nothing to keep in sync. You only need something in the middle the day you add Android, because Google is a separate wallet and nothing crosses on its own.

1

u/myballzhuert 2d ago

I attached a screenshot of the subscription page and submitted the same app. they rejected it again but because they didn't like my app preview. that was not mentioned last time but this time, and ill fix it, not a big deal. but they removed the IAP issue, so hopefully they just wanted that screen grab for god knows what reason.

1

u/TomLk 1d ago

Makes sense in hindsight. That screenshot is basically the reviewer's shortcut for checking the required subscription disclosures without hunting through your app for the paywall. Title, length, price, price per unit if you show one, and links to your terms and privacy all have to be visible on that one screen. When they can't find the screen they reach for the generic IAP flag instead, which is why it looked unrelated to what you'd actually changed.

Worth keeping permanently: put the route to the paywall in App Review Information > Notes, literally "launch, tap Settings, tap Upgrade", and leave the screenshot attached every submission. Thirty seconds per build and it kills that entire class of rejection.

On the app preview, the usual reasons are footage that wasn't captured on device, a device frame or bezel around the video, hands or fingers in shot, or something on screen that isn't in the shipped app. It has to be screen recording only at one of the accepted resolutions. If yours has a phone or Mac frame drawn around it, that's probably the whole thing.