Please help! I have a subscription IAP failing on tvOS 18.2 at:
func makePurchase(_ product: Product) async throws
{
let result = try await product.purchase() //ERROR OCCURS HERE (See error message below)
...
Xcode Console message: "Could not get confirmation scene ID for [insert my IAP id here]"
The IAP subscription was working fine on 18.1 and earlier, and the same IAP and code is also running fine on iOS 18.2. The tvOS error on 18.2 happens both in production and sandbox.
Are there any changes to StoreKit 2 which might cause this error?
StoreKit
RSS for tagSupport in-app purchases and interactions with the App Store using StoreKit.
Post
Replies
Boosts
Views
Activity
I have has a the Storekit working in my application previously.
It uses the a iTunes songs ID and allows the user to purchase the track from iTunes within the app using a View.
its been fine in IOS 17 but since the update to 18 Ive not been able to get this to work.
the iTunes panel loads within the app and shows the track I wish to purchase. on clicking purchase I login with my Apple ID password. that then spins for a few seconds then asks to do the purchase again.
Can you please advise.
code below
print ("Store ID + \(self.appId)")
let storeProductViewController = SKStoreProductViewController()
storeProductViewController.delegate = self
let parameters = [SKStoreProductParameterITunesItemIdentifier: self.appId]
storeProductViewController.loadProduct(withParameters: parameters) { status, error -> Void in
if status {
self.present(storeProductViewController, animated: false, completion: nil)
print("success: \(status.description)")
} else {
if let error = error {
print("Error: \(error.localizedDescription)")
}
}
}
DispatchQueue.main.async {
self.isPresentStoreProduct.wrappedValue = false
}
}
Hi everyone,
I was just wondering if anyone could point me in the right direction on how to properly handle inquiries about refunding in-app purchases.
I've seen multiple posts saying to direct them to Apple's support, but is there no other direct way of handling this?
Also, does Apple not provide an API to interface with so you can issue refunds on behalf of the customer?
Thanks.
Hello,
We're trying to implement and test offer codes in our app. We have create all the necessary items in the App Store. The app has been reviewed and approved for release. We have not published it yet. We are redeeming the offer using a URL that opens the App Store. When I redeem, the account is updated, but the app does not see the Transaction.
We implemented using this: https://developer.apple.com/documentation/storekit/transaction
First, we used the Transaction.updates and then we added Transaction.all and neither return any Transaction.
Any ideas with there are any other dependencies that are required here or recommendations for how to test?
Hi. If the app is in landscape only and when the SKStoreProductViewController is presented, the safeArea changes to what looks like a portrait mode safe area. When the SKStoreProductViewController is dismissed, the safeArea does NOT revert back to the original values.
Is there a way to force the safeArea to "reset"? I've submitted some bug tickets through Apple Feedback but I haven't received any response about it.
The below code will pop up the SKStoreProductViewController and if you have a UIView that is constrained to the safe area, then you can visibly notice that the safe area is changed and doesn't go back.
I have tested this on iPhone 14 Pro, iPhone 15, and iPhone 16 Pro and in the Simulators. The incorrect behavior happens on those and probably more.
Thanks.
#import "ViewController.h"
#import <StoreKit/StoreKit.h>
@interface ViewController ()
@property (nonatomic, strong) SKStoreProductViewController *productViewController;
@end
@implementation ViewController
- (IBAction)buttonTapped:(id)sender {
self.productViewController = [[SKStoreProductViewController alloc] init];
NSDictionary *parameters = @{
@"id" : @"6443575749"
};
[self.productViewController loadProductWithParameters:parameters completionBlock:^(BOOL result, NSError * _Nullable error) {
[self presentViewController:self.productViewController animated:YES completion:^{
// presented
// The panel that is constraint to the safe area visibly shows that the safe area is no longer correct.
}];
}];
}
@end
Hi,
I want to apply in app purchases in my app. I have set it up in xcode and on appstoreconnect, it is saying ready to submit.
I dont understand what i need to do now to connect the two. I have read i need to send my app for review for them to be reviewed, but i want to test the in app purchases first on test flight and on sandbox before i send my app for review.
Please can someone clarify for me and help me?
On Xcode 16 and 16.1 the StoreKit Configuration file is syncing rejected Subscription in status "In Review" but not the new one "Waiting Review "
What are the rules to which file will be synced ?
I am getting the subject error while simulating Free trial. It is in console.
Free trial proceeds but I cant figure out the error meaning.
I could not find anything similar on the net or documentation.
iOS 18.1 StoreKit2 SwiftUI
Has anyone had similar issue that could advise ?
The guidance provided only explains how to remove the entire app from review, but not how to remove a single subscription. Currently, I have one incorrect subscription that has been rejected due to localisation issues, and it is stuck in the "In Review" status. Unfortunately, I am unable to make changes to it.
The correct subscription is in the "Waiting for Review" status, and while I am able to remove it, there is no need to do so. What I would like to do is remove the previous, incorrect subscription.
I'm using StoreKit together with SubscriptionStoreView to show the subscriptions in my app. I also utilize subscriptionStorePolicyDestination to show the terms of service and the privacy policy link on the view:
.subscriptionStorePolicyDestination(url: URL(string: "https://www.apple.com/legal/internet-services/itunes/dev/stdeula/")!, for: .termsOfService).
Everything was working fine until iOS 18.0.1. After the update, when you tap into the terms of service (or the privacy policy) link on the store view, it opens the web view by rendering the page incorrectly. Besides that, it is not possible to close the web view anymore, you have to kill the app.
I already submitted a bug (FB15552274) on Feedback Assistant but I didn't hear anything back for 2 weeks. My apps are getting rejected now, because the store view doesn't have:
A functional link to the Terms of Use (EULA)
A functional link to the privacy policy
This is really frustrating because the API was working fine but now it is broken and neither the Apple developers nor the reviewers really care if the API is broken.
The last line of StoreKit code below generates this parse/decode error in Xcode console; is this benign? Any suggestions how to fix it?
[df892a08] Failed to parse status due to error: StoreKit.DecodingContext<StoreKit.Product.SubscriptionInfo.RenewalInfo.Key>.DecodingError.typeMismatch(for: [StoreKit.Product.SubscriptionInfo.RenewalInfo.Key.autoRenewalStatus], expected: Swift.Bool)
Type: Error | Timestamp: 2024-11-04 11:00:53.056821-08:00 | Library: StoreKit | Subsystem: com.apple.storekit | Category: Default | TID: 0x77bc77
@Published private(set) var offeredSubscriptions: [Product] = []
// ...
do {
guard let anyProduct = offeredSubscriptions.first,
let subscriptionInfo = anyProduct.subscription else {
logger.error("\(#function): ..."); return }
let statuses = try await subscriptionInfo.status
// ...
I got some crashes on firebase console
Fatal Exception: NSInvalidArgumentException
-[NSNull length]
the code stack show the StoreKit and the systems are all 18.2.
I haven't update to storekit2, but it shouldn't crash for storekit1.
For auto-renewable subscriptions, it is necessary to call the transaction completion after the purchase.
I understand that this needs to be called at the correct timing.
StoreKit v1: https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/finishing_a_transaction
Question
If the transaction does not finish for a long period, is the purchase cancelled and a refund issued? If so, how long is this period?
For example
case1: When I renewed the auto-renewable subscription from the OS settings app but did not open my own app.
case2: When there was a malfunction in my own app.
Similar forum
https://developer.apple.com/forums/thread/656255
Hi,
I am trying to build an app where users can upload music and sell it to other users on the app and have the money go straight to their account in such a way where stripe connect would be useful. I am wondering if I can use stripe for this or do I have to use in app purchases? If I have to use in app purchase how can i achieve this?
If I have a monthly subscription offering for an app and also a yearly subscription offering for the same app.
And if I set up a win-back offer through App Store Connect on the yearly subscription offering.
Will this win-back offer be shown to lapsed subscribers of both the monthly and yearly offerings?
Or would it be necessary to create a different win-back offer for each offering if we want lapsed subscribers to see a win-back offer regardless of which subscription they had previously purchased?
Thanks so much in advance!
in app purchase: receive a error resoponse ,the error detail is "error= Error Domain=SKErrorDomain Code=2 "无法连接iTunes Store" UserInfo={NSLocalizedDescription=无法连接iTunes Store}" , but the user paid successfullly and received a bill from apple , as a developer ,i cannot confirm the bill is real ,how dose the developer handle this user scenario 。in addition the user initiated a refund request on the app store ,but rejected by apple
App is approved and on App Store but Subscription is in review and localizations rejected. no way to edit.
anyone here that go this flow resolved and how?
线上的应用突然出现大量这样的失败案例。我在feedbackassistant有提交案例,但是没有收到回复。确定这个app是已经审核过的app,确定这个商品id是审核通过的商品id,请问有什么解决办法?
Hello Apple Dev Team,
I’m seeking guidance on how to ensure full compliance with the App Store Review Guidelines, specifically section 3.1.1 (In-App Purchase).
In-App Purchase Mechanisms:
I want to verify that my app is correctly using in-app purchases to unlock premium content, rather than alternative mechanisms. The guidelines outline various restrictions on unlocking content (e.g., license keys, QR codes, cryptocurrency). If I follow all of these restrictions, would Apple require anything else specific to prove compliance?
Subscription Handling Across Platforms:
Our app plans to offer a subscription service where users could subscribe on Android and then access the content on iOS with the same credentials (similar to Netflix). Users should also have the option to manage (including canceling) their subscription directly from their iOS device. Are there any specific requirements or precautions I should take to facilitate this cross-platform subscription access while remaining compliant?
Restoring Purchases:
I see that in-app purchases must have a restore mechanism. Could you confirm if Apple expects any specific UX or technical standards here, particularly if there are multiple types of IAPs?
I’d appreciate any insights or examples from other apps that meet these requirements successfully. Thanks in advance!
This should help clarify your approach, ensuring alignment with Apple’s guidelines.
I want to test in-app purchase in Sandbox environment but the SKProductsRequest method is returning invalidProductIdentifiers.
When I build the app on simulator or real device including the StoreKit config file, I'm able to see the products. But, when I test after excluding the config file or from the test flight build, I'm not able to see any products.
Can someone help, do we need to Sign up for Paid Apps Agreement with all the bank info and Tax forms even if we have to conduct the tests in Sandbox environment?