StoreKit

RSS for tag

Support in-app purchases and interactions with the App Store using StoreKit.

StoreKit Documentation

Post

Replies

Boosts

Views

Activity

Implementing In-App Purchases for the first time
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?
1
0
139
2w
How to remove Subscription from Review
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.
0
0
117
2w
Can I use AppTransaction to verify purchase of a paid macOS app?
I've tried to use AppTransaction.shared / AppTransaction.refresh() to verify that my app has been purchased from the Mac App Store. It works when testing a release build on my Mac, using a Sandbox Apple ID. But when I submit the app for review, the reviewer says it doesn't work. The error message returned by AppTransaction is "Unable to Complete Request", which is pretty vague. I get the same error when I try to use a real Apple ID for testing on my machine, so I have been wondering if maybe the problem is that App Review is testing a build that doesn't accept Sandbox Apple IDs? My app doesn't have a provisioning profile, could it be that this is the problem? As a Mac app developer, I'm not sure what provisioning profiles are good for, I thought they were only useful for iOS. Has anybody successfully submitted a Mac app that uses AppTransaction?
4
3
918
Apr ’23
subscriptionStorePolicyDestination is broken since iOS 18.0.1
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.
1
1
144
2w
iOS OfferCode testing in outside the app .
In my app, I need the user to redeem a code outside the app and then capture the transaction in the callback/response from the App Store. How can I test this process? Here's my function for opening a URL: if UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } } I am trying to get the transaction object in the TransactionObserver class: // Implementation details... } Here is the link to this class. However, I am not receiving the expected callback in this observer. I am testing on a TestFlight build. My question is: Is it possible to test offer codes in TestFlight? Or is there something wrong with my implementation?
2
0
171
Oct ’24
StoreKit2 - RenewalInfo parse decode error
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 // ...
0
0
160
2w
Your payments from Apple are on hold.
Hey everybody, today I received an email (seemingly automated) stating that my payment is on hold due to irregular activity. However, I haven't violated any rules, and I've seen that many other people have received the same message. As soon as I saw the email, I contacted support via phone, and the representative who assisted me confirmed that my account status is correct and in good standing. She requested that I forward the email to her for further investigation. Email received: "We noticed some irregular activity associated with your vendor number XXXXXXXX and have paused your earnings payments while we investigate. Once our review is complete, we'll determine if we can resume your payments." Questions: Has anyone else experienced this issue? If so, what was the process to resolve it? How long does it typically take to have the payments resumed? Wishing you all a great day, Thank you.
4
2
1.7k
Jul ’23
AppTransaction: how to use in ObjC apps (now that we are forced to use it after the exit(173) deprecation)
Hello We are developers of a long-running game series and now reports have started to come in that users who install any of our previous games from the Mac App Store on OS X Sequoia are shown a popup claiming "The exit(173) API is no longer available". It's actually a lie, the mechanism is still there, the receipt generation still works and the game still runs afterwards. But the popup is confusing to users therefore we need to update the code. Apparently the replacement for the old receipt generation mechanism is AppTransaction which does not exist for Objective C. We have attempted to use it using the Swift/ObjC interoperability and failed so far. The problem is that we need to call async methods in AppTransaction and all our attempts to make this work have failed so far. It seems as the actor/@MainActor concept is not supported by Swift/ObjC interoperability and without those concepts we don't know how to pass results from the async context to the callers from ObjC. The lack of usable information and code online regarding this topic is highly frustrating. Apple really needs to provide better support for developers if they want us to continue to support the Mac platform with high quality games and applications on the Mac App Store. We would appreciate if anyone can cook up a working sample code how to use AppTransaction in ObjC. Thanks in advance!
46
1
1.1k
Sep ’24
What happens if the transaction is not finished?
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
2
0
158
3w
Streamlined Purchasing Error with StoreKit2 in React Native App
Issue: Streamlined purchasing cannot be turned off because your latest approved binary doesn’t include the required StoreKit APIs. For this, I tried selecting the option "Turn Off Streamlined Purchasing" in App Store Connect, and I received this error. What I’ve Done So Far: I have added the StoreKit file in Xcode. Still, I get the error when submitting my app binary. In app capability added in xcode My Setup: React Native Xcode version StoreKit2 integration using React Native IAP sdk (react-native-iap) Code: Here is the code I am using to set up the in-app purchase system: RNIap.setup({ storekitMode: 'STOREKIT_HYBRID_MODE' }); const connection = await RNIap.initConnection(); if (connection) { if (isAndroid) { await RNIap.flushFailedPurchasesCachedAsPendingAndroid(); } else { await RNIap.clearTransactionIOS(); } if (isIos) { await RNIap.IapIosSk2.sync() .then(() => {}) .catch((error) => { console.log('Error IapIosSk2 IAP:', error); }); } await getAllSubscriptionList(); await getPlanStructure(); //For Subscription await RNIap.requestSubscription({ sku: sku, subscriptionOffers: [{ sku, offerToken }], }); //For Consumable Products await RNIap.requestPurchase({ sku: sku, andDangerouslyFinishTransactionAutomaticallyIOS: false, }); } Steps I’ve Taken to Troubleshoot: Cleaned and rebuilt the project. Checked App Store Connect settings for in-app purchases. Question: How can I resolve this error? Are there additional steps required to correctly enable StoreKit2 in a React Native project? Additional Info: Any advice or guidance on this issue would be greatly appreciated.
1
0
210
Oct ’24
Are win-back offers presented for the entire Subscription Group?
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!
1
0
192
3w
in app purchase: receive a error resoponse
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
0
0
150
3w
Error Domain=SKErrorDomain Code=0 "发生未知错误" UserInfo={NSLocalizedDescription=发生未知错误, NSUnderlyingError=0x3030d1bf0 {Error Domain=ASDServerErrorDomain Code=3504 "找不到此项目。" UserInfo={NSLocalizedFailureReason=找不到此项目。}}}
线上的应用突然出现大量这样的失败案例。我在feedbackassistant有提交案例,但是没有收到回复。确定这个app是已经审核过的app,确定这个商品id是审核通过的商品id,请问有什么解决办法?
0
0
95
3w
In App Purchase cross platforms
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.
0
0
132
3w
Not getting IAP products in Sandbox env
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?
1
0
144
3w
APP服务端如何查询内购订单的支付状态
当verifyReceipt API被标记为Deprecated后,我尝试通过调用Get Transaction Info API查询订单信息,对用户的内购订单做校验,但是响应结果中没有支付状态,APP服务端如何才能确认用户是否已经成功支付?还有附带的问题是如何做参数透传(即用户支付时APP调用Apple服务端将开发者自定义的参数带过去,然后APP服务端调用Apple服务端API时拿到这个参数),类似google内购的developerPayload参数
0
0
159
3w