It seems that it was a problem with iOS v16.0.x. With iOS v16.1 the download works again. Many thanks to Apple engineers for fixing it.
Post
Replies
Boosts
Views
Activity
Dear App Store Commerce Engineer,
Could you please file a ticket in Feedback Assistant with a sysdiagnose of downloading and opening the app and
any information you have about the user downloading the app, time of requests, etc. Please then post the FB number here.
It is easy for Apple's test engineers to reproduce this problem themselves:
What you need are devices with
iOS v15.x
iOS v16.0
iPadOS v15.6.1
macOS Monterey v12.6
Choose a free app that runs on these platforms and offers some free IAP purchases of the non-consumable and Apple-hosted type. *)
(I use this one: https://apps.apple.com/de/app/taxadb/id1571018041)
With 1., 3., 4. the download of IAP content works without problems, but with 2. no longer.
*) I know SKDownload is deprecated since iOS 16 and hosted content is no longer supported. But older, existing and previously purchased content should still be downloadable?
One can really feel sorry for Apple. They demonstrate their power over developers with such paranoid and abnormal business practices. Apple you are sick.
@endecotp Thank you for your research. Indeed, things are getting more mysterious .... 🤣.
So the email is not supposed to be from Apple at all? Unbelievable!
And what about the essentially same content reference to fixing "Issue" 84121695?
See:
https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-13_3-release-notes
Is that one not from Apple either?
I'll wait and see, the fact is that since Xcode 13.x there seems to be no way to send IAP content to the App Store. Since I don't use this anyway, this would not be a disadvantage from my point of view. But if hosted IAP content is indeed completely eliminated, that's a significant change that certainly can't be announced and implemented within a month.
It's really funny that features, probably especially those that Apple doesn't particularly like and that developers have relied on, are summarily classified as problems that of course need to be fixed as soon as possible 🤣 :
https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-13_3-release-notes
Updates in Xcode 13.3 Beta -> Build System -> Resolved Issues
Building and uploading nonconsumable in-app purchase content for Apple to host is no longer supported. Existing content that’s hosted by Apple isn’t affected. To enable smaller app bundles, faster downloads, and richer app content, use on-demand resources to host your content on the App Store separately from the app bundle. For details, see On-Demand Resources Essentials. (84121695)
Thanks Apple for caring!
It means that Apple will no longer offer hosting for non-consumable IAP content.
I'm not sure if this is true.
There is content that is already included in the app bundle and can be marked for later download, possibly as part of a purchase process. On the other hand, there is content that can be submitted to the App Store in addition to the app and, of course, outside of the app bundle.
I am not familiar with the first method. I myself use the method of subsequently uploading individual packages as IAP hosted content via iTMSTransporter. After uploading the package, the content goes through an additional review and is then available as IAP in the app.
It seems to me that the changes only affect the first type of IAP content, i.e. content that is already included in the app bundle. This would not affect my app, fortunately, and also explains why the "hosted non-consumable IAP content" feature is not declared deprecated on the help pages of the StoreKit framework. Which would certainly be the case given the huge impact of such a change and the short time remaining.
But maybe someone can say for sure what changes Apple is really making now regarding hosting non-consumable IAP content.
I have Reality Composer version 1.5 (180.6) installed on a MacBook Air (2020) running macOS 12.1. Works fine.
No-M1 Mac with macOS Monterey 12.0.1, but same error message. I also have the impression that Xcode increasingly wants to turn my Mac (1 year old) into a fan heater, especially when I try something with SwiftUI. I started the update via App Store to Xcode 13.2 two days ago overnight and I was happy that it was installed the next morning. But I was happy too soon: now another update to 13.2.1 with probably several hours of installation again. Good thing today is Sunday.
About rejected products:
I've got feedback from Apple about the invalidation, resp. rejection of the products:
This is the expected behavior. In-app purchases submitted for review using the app version binary are reviewed as part of the app review process. If the app is rejected, any in-app purchases associated with the app version binary are also rejected. [Translated from German language]
About Error code 301 when purchasing a product during app review:
I made these two changes after multiple rejections due to Error code 301:
1.) I missed to use a distribution provisioning profile, instead i used a developer provisioning profile (... ok my fault .... 🤓)
2.) During the TestFlight tests and the tests with the StoreKit test framework, the following code worked well:
SKMutablePayment *payment = [[SKMutablePayment alloc] init];
payment.productIdentifier = productid;
But as you can read here: Requesting a Payment from the App Store:
When the user selects a product to buy, create a payment request using the corresponding SKProduct object and set the quantity if needed, as shown below. The product object comes from the array of products returned by your app’s products request, as discussed in Fetching Product Information from the App Store.
Therefore I have changed my code accordingly:
SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:_products[productid]];
with _products like this: NSMutableDictionary<NSString *,SKProduct *> *_products; it holds all the SKProduct objects.
** After these two changes, the app and products are now no longer rejected. 😌**
Hi. I am not familiar with freemium business models. But maybe you could make one non-consumable product out of each of, let's say, four campaigns in a year. So for 2021 four products: PQ01-2021, PQ02-2021, ... and for 2022 four products: PQ01-2022, PQ02-2022, ... Once the sales period for a campaign has expired, you no longer offer the associated product by removing the product from the store. Anyone who has purchased the product can participate in that exact campaign.