Hello,
After processing the data I received from another source in my new application, I will offer it for sale as a monthly subscription.
However, pricing for my data source is based on calendar month, but subscription flows start from the purchase date and I could not find such a subscription flow in the store kit.
How can I draw this flow in a way that doesn't violate app store rules regarding pricing?
StoreKit
RSS for tagSupport in-app purchases and interactions with the App Store using StoreKit.
Post
Replies
Boosts
Views
Activity
After scheduling price changes for November 23 and selecting to "Preserve current price for existing subscribers", we are seeing around 31% "renewals" coming through at the new price on later app versions following the price change. Has anyone else experienced this?
Could this be something to do with a payment being marked as a renewal in the summary sales report but not actually being a renewal (and perhaps a reactivation instead?)
Thanks
I'm using the API to update and create in-app purchases. Up until now, the https://api.appstoreconnect.apple.com/v2/inAppPurchases endpoint would allow me to set the availableInAllTerritories attribute to true, but as of this week the API is returning this error:
ENTITY_ERROR.ATTRIBUTE.UNKNOWN - 'availableInAllTerritories' is not an attribute on the resource 'inAppPurchases'
It appears availableInAllTerritories has been removed from the class definition, but not the sample code.
The 3.2 release notes state that the enum "is no longer available for pricing related endpoints", but this isn't a pricing endpoint.
Anyone else having this issue?
I guess the only workaround would be to send a separate request to the inAppPurchaseAvailabilities endpoint.
Hello,
One of our customer's purchases of IAP consumable product have issue on its receipt verification. Verification via "https://buy.itunes.apple.com/verifyReceipt" returns {"environment": "Production", "status": 21004}.
He purchased 3 consumable items and only verification of 3rd purchase successfully got verified. All of other purchases in our app before and after had no problem with same secret, same server.
I once heard 21004 is for auto renewable subscription, not for consumable. Can it be returned for consumable purchase?
Is there any other known issue for receipt verification? We have no change of code, server, secret at that time and all other verification succeeded but two failed.
Thanks in advance.
Regards,
Hi all
We are working on an app that we bought and are looking at which version of StoreKit it uses.
Is there any guidance or methods we can use to quickly determine which version of StoreKit is being used.
Its either Storekit v1 or Storekit v2 but its not clear and we aren't able to get features working correctly.
I have a volumetric app. I am trying to present a review prompt using SKStoreReviewController's requestReview(in:) I'm using the code below:
if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
SKStoreReviewController.requestReview(in: scene)
}
When this code executes, though, I get a crash with the error:
Presentations are not permitted within volumetric window scenes.
What is the proper way to do this for a volumetric app?
Hello,
Over the past couple weeks we have been getting increased reports from our users who are unable to purchase IAPs within our app. Every time they go to make a purchase they are getting the 21107 error code. I haven't been able to find any concrete information about why users might be getting this error. The only thing that I have been able to find in the Apple documentation is:
Status codes 21100-21199 are various internal data access errors.
I did see some threads with this error code for people in sandbox accounts, but note that these are live users in our production environment. This is not internal testing. Users load the app, attempt to make an IAP purchase and they immediately get this OS error popup on the client and the purchase fails.
We are using the Unity IAP package 4.10.0
If anyone has any information or suggestions it would be much appreciated.
Hello,
I'm trying to publish a PWA application.
I got a refusal to publish the app because of the in-app purchase.
I asked for more information
I need some clarification regarding in-app purchases.
The application is a PWA that displays the content of the url https://revisions-crpe.app .
The purchase is made on the following site: https://maitresse-jero.com
Do you mean that if I make the in-app purchase available by staying on the url https://revisions-crpe.app the application will be approved?
I can't use services like StoreKit or Swift development because the application is a PWA.
How do other PWA applications with paid services work?
Apple's response
Hello,
We are not able to provide feedback on app concepts or features, but we recommend evaluating your suggestions against the App Store Review Guidelines, as well as the Apple Developer Program License Agreement, and the Human Interface Guidelines.
Additionally, if you are considering implementing any of the following functionality, we recommend reviewing all associated reference material and other resources available on Apple Developer for any additional requirements.
Apple Developer
Apple Copyright and Trademark Guidelines
Game Center
iCloud
In-App Purchase
You may also choose to post a question in the Apple Developer Forums.
Best regards,
My questions
So I wonder if offering direct purchase from https://revisions-crpe.app would be enough to get my pwa app published?
If not, I don't see how I can do it any other way, as I don't develop in Swift. I use PWABuilder.
Thanks for your help! :)
StoreKit.Transaction has an expirationDate property, but not a gracePeriodExpirationDate property. Product.SubscriptionInfo.RenewallInfo has a gracePeriodExpirationDate but no expirationDate.
If I have enabled a grace period I think I need to check both. That seems more complicated than it should be. Am I missing something?
The store review alert is shown hidden behind UI, I'm 100% sure it shows up, and I can see it when the current view is empty/transparent.
I tried using various ways to find the current window, launching on different threads but nothing works. I have no idea what else to try the library doesn't really provide any documentation or anything. If it matters we are using the unity framework in the app, and it is a multi-window app.
if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
serviceProvider.reviewService.requestReview(in: scene)
}
this is the invocation, the service then calls
func requestReview(in scene: UIWindowScene) {
SKStoreReviewController.requestReview(in: scene)
}
the result is that the prompt is shown, but it is hidden behind ui elements, if the view is empty, the prompt is visible and interactable.
If I use SubscriptionStoreView.init(groupID), it seems to be able to look up all the Products that have that subscription group ID. But I don't see any public method for doing that myself. Am I missing something, or is SubscriptionStoreView using a private method to do this lookup?
I know that historically it has always been necessary to know the product IDs of all the products you want to sell; you have never been able to ask Store Kit to give you a list. SubscriptionStoreView doesn't seem to have this limitation, which is a bit surprising.
Hi colleagues! I've encountered a technical issue during the setup of my In-App Purchase (IAP) server for my app (com.forgetmenuts) on AppStore Connect.
In the "Info" section of my app's page on AppStore Connect, I've configured the "App Store Server Notifications" endpoints to: https://sys-conf.com/hooks/subscription/ios/debug.
Here's the challenge I'm facing:
When I initiate a "Request a Test Notification," everything seems to function as expected. I successfully receive the "testNotificationToken."
However, the issue arises when I attempt to request the status of this token. At this stage, I encounter an error with the firstSendAttemptResult indicating a TLS_ISSUE.
the error is described here: app store docs.
I have verified the TLS configurations of my domain (sys-conf.com). Both TLS 1.2 and 1.3 are active and functioning correctly (verified through this TLS Checker: site24x7.com/tools/tls-checker.html
I am looking for guidance on how to resolve this TLS issue. Any insights or suggestions from the community would be greatly appreciated, especially from those who might have faced and resolved similar challenges.
The docs for Transaction.updates say:
Use updates to receive new transactions while the app is running. This sequence receives transactions that occur outside of the app, such as Ask to Buy transactions, subscription offer code redemptions, and purchases that customers make in the App Store. It also emits transactions that customers complete in your app on another device.
Note that after a successful in-app purchase on the same device, StoreKit returns the transaction through Product.PurchaseResult.success(_:).
So Transaction.updates isn't supposed to include transactions for purchases that are made in this instance of the app, right? I have this code to get those transactions:
SubscriptionStoreView(groupID: group_id) {
}
.onInAppPurchaseCompletion() { product, result in
.....
}
But when I make a purchase using this SubscriptionStoreView, I see that both this .onInAppPurchaseCompletion code and my code observing Transaction.updates is called.
Is this expected? Will it work reliably without the .onInAppPurchaseCompletion ?
Thanks.
My app is a login item that gets registered as a background agent using SMAppService. On launch it checks to see that the user has an active subscription, and when I run it from Xcode, this works fine.
But it seems that if I restart my machine and it is run from launchd right at login, StoreKit doesn't return any purchases. This results in my app throwing up a window to tell the user to subscribe.
It’s hard to be sure this is the behavior, because I can't really use a debugger, and for whatever reason, OSLog is not persisting messages (despite being configured to do so).
Does anyone know if it takes a while after restart or login for Store Kit to reliably return purchases?
Hello everyone, I have developed an app and actually only have 2 subscription models, one for a monthly subscription and one for a yearly subscription.
For the start I created these two subscriptions as an offer, then my customer wanted to create the actual price, so I created 2 more subscription models (monthly and annual).
At first I thought that I would change the price of the first two subscriptions, but since I wasn't sure whether the first buyers would have to pay the new price, I created 2 new subscriptions.
I let the respective subscriptions appear through a third party provider as I need them. But unfortunately you could simply change the subscription to the subscription with the lowest price in the store yourself. I would like to avoid that.
My question now is, could I simply change the price and the new buyers pay the new price but the previous buyers continue to pay the old price?
And if so, could I deactivate all other subscriptions and would the buyers of the deactivated subscriptions continue to pay this price and not the price of the active subscriptions?
It would be really great if you could answer these questions for me.
Thank you very much.
I am going to offer a Bundle of ten(10) apps having auto-renewing subscriptions.
My question is when user will purchase a subscription in ONE app. Will all other apps(non-purchased) also have RECEIPT available of the one purchased app's receipt? So,i can validate user have purchased one of apps from Bundle.
Hi,
I have an app that basically lets you hire a coach or book a playing field on demand. My clients can also subscribe to my app for a monthly fee. You have to pay for these services in app, but I have a 3rd party app for that. Do I have to still pay the 30% commission to apple per transaction?
The in-app payment window is not displayed on the commercial apps deployed in the App Store. (IAP is subscription type)
It is a WKWebView app, and in the development environment (build, testflight), the in-app payment window is displayed when the product button is pressed (sand box environment)
This app has been commercially distributed. And when you press the product button in actual commercial, the in-app payment window is not displayed.
Before payment, access the apple receipt server corresponding to the commercial server, determine whether it is [already subscribed] and display the payment window.
[Example]
https://buy.itunes.apple.com/verifyReceipt
I got you to call.
The source code related to No. 3 above is complicated, but there are many do-catch and if-else, and if it does not work normally, the source code is written to display an error message using an alert, but the alert is not displayed in actual commercial use.
I have uploaded one of my app to give some paid service. But when the user tries to make an in-app purchase, it opens one screen like the title is "Apple ID, Almost there Payment request will be created for xyzdemo@ybl" After I press the continue button this window(Screen) closes automatically. But UPI requests are sent on the particular app. So why is this happening on my app? Why does this window (Screen) dismiss automatically?
I have also attached the screen.
This screen automatically dismissed.
One of our apps aims to offer monthly payments after a 1 month free trial expires. To facilitate a seamless payment experience for our subscribers, we are planning to integrate Stripe for processing subscriptions and payments for Monthly subscriptions.
Understanding the importance of complying with the App Store Review Guidelines, we seek to clarify the following:
Web View for External Payments: Is it permissible under the current guidelines to open a web view within our app that directs users to a Stripe payment page for the purpose of subscribing to or purchasing a monthly subscription? We intend to ensure that this process is used strictly for recurring monthly payments.
Guideline Reference: We refer specifically to Guideline 3.1.1 concerning in-app purchases and would like to understand if there are exceptions or permissible use cases for integrating a web view that directs to an external payment system, under certain conditions or for specific types of goods and services.