Hello
We have App Store Server Notifications v2 enabled for our app (we're selling renewable subscriptions), but recently some notifications of type SUBSCRIBED:INITIAL BUY have been missing (not reaching our endpoint).
However, we get DID_CHANGE_RENEWAL_STATUS notifications for these users later and we get SUBSCRIBED notifications for other users, currently this thing looks pretty random.
We've had several cases in the last few days. Example originalTransactionId: 110001866285315. We'd appreciate if Apple engineers could check it, or maybe anyone could share a similar experience. Thanks!
Subscriptions
RSS for tagGive users access to content, services, or premium features in your app on an ongoing basis with subscriptions, a type of in-app purchase.
Posts under Subscriptions tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
I have setup Subscription price group which includes Annual subscription and monthly subscription
How do I handle the Pricing and Availability section in the App considering I am relying on with subscription purchases? I currently have it set to $0. I cannot delete the $0 Price if it is incorrect. I cannot add more than 1 price to this section.
any one can help ???
I am wondering if I can require a subscription to be selected at the time of choosing to download, rather than making a paywall?
I am unable to display subscriptions list. The subscription status on the App store connect is set to "Approved".
IAPError(code: storekit_getproductrequest_platform_error, source: app_store, message: UNKNOWN_ERROR, details: Error Domain=SKErrorDomain Code=0 "UNKNOWN_ERROR" UserInfo={NSLocalizedDescription=UNKNOWN_ERROR, NSUnderlyingError=0x600002a38510 {Error Domain=ASDErrorDomain Code=507 "Error decoding object" UserInfo={NSLocalizedDescription=Error decoding object, NSLocalizedFailureReason=Attempted to decode store response}}})
Hello everyone.
Firstly, i wont be using anything outside the Apple Connect system for my question.
What my question is though:
Lets say my customer who pays $9.99 per month, and has been for a while, and we introduce a reward trigger, say reading 10 articles or something like that, can we then go, ok this person has triggered the reward, they get one month free, then resume as normal?
Can we also do this for things like, 5-star review, or sharing the app via SMS or something similar?
Thanks in advanse
When we added a price change (increase) on July 26th 2023, we selected the option to preserve the old (lower) price for existing subscribers; so we expected that only new subscribers would be charged the new price.
However, we have found that existing subscribers before the price change date were charged the new price starting from August. I checked the Subscription Pricing setting and did not find errors in setting. Does anyone have a clue what could have gone wrong?
Hi,
The "List Sandbox Testers" API endpoint (/v2/sandboxTesters) was working as expected, but last week it started returning an error, and the response format does not match the API reference.
Have you experienced this? Do you have any solution?
{
"servlet": "jersey",
"message": "Forbidden",
"url": "/iris/v2/sandboxTesters",
"status": "403"
}
I have created some in app payments and some subscriptions.
I have ticked the checkout that was visible when I added the new binary.
The submission got rejected (which is ok, not the issue here).
However, due to business decisions, I need to hold back the update and instead I need to publish another update with another feature (no in app purchase or subscription).
Unfortunately, I cannot find the checkbox anymore. I am unable to "uncheck" the selected in app payment items. I tried just to submit the new version and as expected, the new version got rejected because the review team cannot find the purchase button.
Is there anyway to hold back the in app payments / subscriptions?
My app contains 2 auto-renew subscriptions, one for monthly and another one for yearly duration.
Is there any way to hide or prevent user to subscribe for period without affecting existing subscribers?
Example case: Temporary prevent user to subscribe Monthly subscription for 2 weeks due to technical problem about premium feature. Existing monthly subscribers renewal is still running normally.
Appreciate for any help! Thank you. 🙏
Hi All,
We are looking to prevent any current subscriptions from auto-renewing when their billing cycle closes. We are looking to go away from subscriptions in the near future and offer a completely free app, but we would like to prevent any active subscriptions from auto-renewing at the close of their next billing period.
Is this possible and if so what are the steps to disable auto-renew?
Thank you!
On my purchase page I use RevenueCat to make the initial purchase and in my SettingsVC I have the in-app purchase API (as required) to later resubscribe:
// ...
try await AppStore.showManageSubscriptions(in: window as! UIWindowScene)
I followed these directions and these directions. Using an iPhone 8 simulator I logged into iCloud as a sandbox tester eg. sandboxtest%test.com, then logged into its Settings, loaded my app, made a purchase, the subscription went through and eventually expired. While in the iPhone 8 I checked my SettingsVC > in-app purchase API and it said Expired Nov 5, 2023 ... Select an option to resubscribe. So it worked. I send sandboxtest%test.com and the pw to App Review and got the below rejection:
Guideline 2.1 - Performance - App Completeness
We discovered one or more bugs in your app. Specifically, your app
displayed an error page when the Mange Subscription tab was tapped. We
found that while you have submitted in-app purchase products for your
app, the in-app purchase functionality is not present in your binary.
If you would like to include in-app purchases in your app, you will
need to upload a new binary that incorporates the in-app purchase API
to enable users to make a purchase
They sent me a screenshot and the in-app purchase API said Cannot Connect - Retry.
I later use my actual device and try these 3 ways:
1- While logged in as myself, without using any Sandbox Account, delete the app, run it again, then log into my app with sandboxtest%test.com
2- While logged in as myself, use a different sandbox tester such as whatever%test.com to log into the Sandbox Account, delete the app, run it again, then log into my app with sandboxtest%test.com
3- While logged in as myself, use sandboxtest%test.com for the Sandbox Account, delete the app, run it again, then log into my app with sandboxtest%test.com
For all 3 RevenueCat prints the initial subscription and the expiration date, but for some reason when I go to the in-app purchase API, it always returns You do not have any subscriptions.
What's strange is when I go back to the iPhone 8 while still logged in as sandboxtest%test.com, the in-app purchase API still shows Expired Nov 5, 2023 ... Select an option to resubscribe.
I'm kinda lost here because to use an actual device to login, it sends a SMS, so I don't see how giving the App Reviewer the sandboxtest%test.com/pw info to login into the device and iCloud will help him/her make a purchase because they can't get the SMS. I would assume they would only need sandboxtest%test.com, but that does't work for them.
Any advice?
I am currently working on an app in which the monthly payment must be made for a service so the user must purchase a subscription in this case with stripe.
I have read some posts that the app store review would reject my application because it only allows paying for the subscription with its native service, is this true?
Hi,
Is it mandatory to switch to a new framework StoreKit v2 for the in-app subscription still works on iOS 17+?
Pls give the official link about this.
thnks
I am facing a weird issue while making auto renewable subscription through in_app_purchase package in IOS simulator 17.0.
This is the preview of my issue:
https://www.loom.com/share/0a483d3dcba44807bec0a38e0a752e66?sid=b42a575e-aa3b-46c9-8fa5-8ee24cf40900
What works well:
I am able to fetch my subscription product from the app store.
Future<void> _getProducts() async { ProductDetailsResponse response = await _iap.queryProductDetails(productIds.toSet()); if (response.notFoundIDs.isNotEmpty) { print('These products were not found: ${response.notFoundIDs.join(', ')}'); } _products = response.productDetails; notifyListeners(); }
I am able to open the sandbox and start the pruchase using sanbox tester account in the apple app store.
Future<void> buyProduct(ProductDetails product) async { final PurchaseParam purchaseParam = PurchaseParam(productDetails: product); try { await _iap.buyNonConsumable(purchaseParam: purchaseParam); } catch (e) { print("$e"); } }
The sanbox shows the "DONE" UI, but I NEVER get the PurchasedStatus.purchased in my stream, and the sandbox reopens again.
The cycle repeats
Here is the output of my flutter doctor -v
• Flutter version 3.13.1 on channel stable at /Users/muhammadhamadjamal/Documents/FlutterDev/sdk/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision e1e47221e8 (3 months ago), 2023-08-22 21:43:18 -0700
• Engine revision b20183e040
• Dart version 3.1.0
• DevTools version 2.25.0
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
• Android SDK at /Users/muhammadhamadjamal/Library/Android/sdk
• Platform android-33, build-tools 33.0.2
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 15A240d
• CocoaPods version 1.13.0
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2022.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
[✓] VS Code (version 1.84.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.76.0
[✓] Connected device (3 available)
• iPhone 15 Pro Max (mobile) • DC9EDD04-0B17-4D27-BD2A-966F06BFCF7F • ios •
com.apple.CoreSimulator.SimRuntime.iOS-17-0 (simulator)
• macOS (desktop) • macos • darwin-x64 • macOS 14.0 23A344 darwin-x64
• Chrome (web) • chrome • web-javascript • Google Chrome 119.0.6045.105
[✓] Network resources
• All expected network resources are available.
• No issues found!
I intend to group together several free-to-play games in a bundle. While these games will be accessible without charge, users will have the option to subscribe (for example, to a VIP club) and make additional purchases for consumable or non-consumable items.
Although I've reviewed Apple's guidelines, I haven't found any information indicating whether it's permissible to offer consumable and non-consumable purchases after users have paid a subscription fee to access all the games in the bundle.
I would appreciate your assistance in clarifying this matter.
Hi,
I currently have an introductory offer set up in App Store Connect, which is in the 'Ready to Submit' state. When testing with the StoreKit configuration testing for Xcode, the introductory offer appears correctly, and I can successfully make and cancel purchases. However, when testing on a device without the StoreKit configuration, using a new sandbox account, the introductory offer does not appear, though the introductory price is visible for subscription. Could you advise on how to ensure the introductory offer is displayed in this scenario?
Using Storekit 2
Hello,
I have an application with features that I would like to lock for users without a subscription. My client would like to give voucher codes for influencers to spread it for their users. In the application there is a section for buy the subscription with an input field to enter the voucher code. In the app store I've set up a Subscription Group with 2 different subscription. Both are annual subscription but they have different prices.
premium_full 2$
premium_gift 1$
The mechanism:
We have a database where we store the custom voucher codes.
When the user wants to buy the subscription with a valid entered voucher code, then in the application I choose the subscription plan with the lower price. The IAP is handled by Revenuecat.
It is important to use custom and re-usable codes since we need to benchmark how many times they have been used.
This scenario works on the "other" platform but I found out via App review that it is not an acceptable approach.
Can you suggest an example how should I change the functionality to keep the desired mechanism?
Thanks!
We have a server to server setup for subscription management for the Apple subscriptions. Lately we observed that we are getting a lot of DID_RENEW notification, after decoded with the /verifyReceipt endpoints, these notifications have no purchase in them. We are in the Production environment.
The original_purchase_date is set to "1970-01-20 11:45:27 Etc/GMT" and we can se also the preorder_date field set to the date when we receive the notification. All our products are approved and released at the moment(nothing to be released). There are no other "usable" details for us in the decoded notification(data to identify user).
Can somebody please help explaining this scenario? Why are we receiving these notifications?
Thanks, David.
In XCode, when I use a subscriptionstoreview it works great, lists my products and allows me to to subscribe
in TestFlight it looks identical, allowing me to select a product, but when I click the subscribe button nothing happens
any help would be most appreciared