Subscriptions

RSS for tag

Give 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

How can I test my OFFER CODE in my development environment
I have a iOS mobile application where I am using OFFER CODES year by year where the users can login & re-new the subscription for the application. I have finished my development in my Backend & my iOS Frontend side & I have tested both the platforms individually and they are in the working condition. I need a way to test this after the integration using test flight with a verified application or using sandbox environment using my local application.
0
0
368
Feb ’24
Implementing Premium Services for Users Upgraded via Website in iOS App
Hello, I am seeking advice on integrating a feature in our iOS app related to user subscriptions and account upgrades. Our current setup allows users to upgrade their subscription to a premium account level exclusively through our website. The app, as it stands, does not support in-app account upgrades. However, we aim to offer advanced services within the app to users who have upgraded their accounts through the website. I'm interested in understanding the guidelines and best practices to follow for this scenario to ensure compliance with App Store policies. Any insights, experiences, or suggestions from the community would be greatly appreciated. Thank you!
0
0
281
Feb ’24
Issues with preserved pricing
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
0
0
249
Feb ’24
Volume-limited subscriptions
Hi, Is it possible to create IAP subscriptions (auto-renewables) that will be limited by both time and volume? Or a combination of items, or something similar, for example a subscription that includes consumables on each cycle Case: user subscribes to a VoIP provider on plan X which provides 300 minutes per month to destinations A and B. User stretch these 300 minutes by spending 10 minutes per day, or just **** the whole 5 hours on their first day, there is no limit on the consumption frequency. I can limit the consumption on the backend side, but I'm afraid of the refund abuse, as Apple refunds are in most cases non-negotiable and are only based on the time and not consumption.
0
0
227
Feb ’24
TLS_ISSUE with IAP Server Setup on AppStore Connect
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.
1
0
501
Feb ’24
Several subscriptions although I only need 2
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.
0
0
174
Feb ’24
The in-app payment window is not displayed on the commercial apps deployed in the App Store.
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.
0
0
213
Feb ’24
Including property list file in app bundle
I try to set up auto-renewable subscriptions. I learned I need to add in my app bundle a file like this: I wasn't successful. I don't know how to access my app's bundle and where it is located. I learned too, placing the file at an incorrect location could result in strange behaviour of my app or even in damage. So I am very careful Who can help? Best regards, Gerhard
0
0
291
Feb ’24
Manage Subscriptions
Hi, I'm now developing an app that uses purchase. I would like to create subscriptions for 3 and 6 months. The price should be €8.99 or €6.99 per month. That means you pay a total of €26.97 or €41.94 My problem is you can't enter these prices €26.97 and €41.94. How can I do that? thanks for any help rtko
2
0
198
Feb ’24
ButtonView File with AuthenticationFormProtocol: Where to Put in Code?
Hello! This is my first time posting a question on a form. So sorry ahead of time if I am not doing something right and please let me know how I can fix it! I am new to swift and I have been following a video by AppStuff. https://youtu.be/QJHmhLGv-_0?si=OwLGXKNTc3m-UH7r&t=5914 . The link is time stamped to the part of the video I need help with. My question is: Where do I put the AuthenticationFormProtocol var formIsValid so that way I can call on formIsValid to use the .disabled and .opacity in the ButtonView File depending on if formIsValid is true or not? I deviated from the video by making a new file called ButtonView so that way I didn't have to copy and paste code that I would be using in two different places. ButtonView File import SwiftUI struct ButtonView: View { let printTitle: String let title: String let systemIcon: String //@Binding var disabledPlaceHolder: String let taskAction: () -> Void var body: some View { Button(action: { taskAction() }) { HStack { Text(title) .fontWeight(.semibold) Image(systemName: systemIcon) } .foregroundStyle(Color(.white)) .frame(width: UIScreen.main.bounds.width - 32, height: 48) } .background(Color(.systemBlue)) //.disabled(disabledPlaceHolder) //.opacity(disabledPlaceHolder ? 1.0 : 0.5) .clipShape(RoundedRectangle(cornerRadius: 10)) .padding(.bottom, 50) } } #Preview { ButtonView(printTitle: "Sign user up...", title: "Sign Up", systemIcon: "arrow.right", //disabledPlaceHolder: .constant(""), taskAction: {}) } LoginView File import SwiftUI struct LoginView: View { @State private var email = "" @State private var password = "" @EnvironmentObject var viewModel: AuthViewModel var body: some View { NavigationStack { VStack { //image Image("TestLogo") .resizable() .scaledToFill() .frame(width: 100, height: 120) .clipShape(RoundedRectangle(cornerRadius: 20)) .padding(.vertical, 32) //form fields VStack(spacing: 24) { InputView(text: $email, title: "Email", placeholder: "name@example.com") .textInputAutocapitalization(.none) InputView(text: $password, title: "Password", placeholder: "Enter your password", isSecureField: true) } .padding(.horizontal) .padding(.top, 12) //sign in button ButtonView(printTitle: "Login In", title: "SIGN IN", systemIcon: "arrow.right") { Task { try await viewModel.signIn(withEmail: email, password: password) } } // .disabled(formIsValid) // .opacity(formIsValid ? 1.0 : 0.5) Spacer() //signup button NavigationLink { RegistrationView() .navigationBarBackButtonHidden(true) } label: { HStack(spacing: 3) { Text("Don't have an account?") Text("Sign Up") .fontWeight(.bold) } .font(.system(size: 14)) } } } } } extension LoginView: AuthenticationFormProtocol { var formIsValid: Bool { return !email.isEmpty && email.contains("@") && !password.isEmpty && password.count > 5 } } RegistationView File struct RegistrationView: View { @State private var email = "" @State private var fullName = "" @State private var password = "" @State private var confirmPassword = "" @EnvironmentObject var viewModel: AuthViewModel @Environment(\.dismiss) var dismiss var body: some View { VStack { //image Image("TestLogo") .resizable() .scaledToFill() .frame(width: 100, height: 120) .clipShape(RoundedRectangle(cornerRadius: 20)) .padding(.vertical, 32) //form fields VStack(spacing: 24) { InputView(text: $email, title: "Email", placeholder: "name@example.com") .textInputAutocapitalization(.none) InputView(text: $fullName, title: "Full name", placeholder: "Enter your name") InputView(text: $password, title: "Password", placeholder: "Enter your password", isSecureField: true) InputView(text: $confirmPassword, title: "Confirm Password", placeholder: "Confirm your password", isSecureField: true) } .padding(.horizontal) .padding(.top, 12) //sign up button ButtonView(printTitle: "Create User", title: "CREATE USER", systemIcon: "arrow.right") { Task { try await viewModel.createUser(withEmail: email, password: password, fullname: fullName) } } // .disabled(formIsValid) // .opacity(formIsValid ? 1.0 : 0.5) Spacer() Button { dismiss() } label: { HStack(spacing: 3) { Text("Already have an account?") Text("Sign In") .fontWeight(.bold) } .font(.system(size: 14)) } } } } extension RegistrationView: AuthenticationFormProtocol { var formIsValid: Bool { return !email.isEmpty && email.contains("@") && !password.isEmpty && password.count > 5 && confirmPassword == password && !fullName.isEmpty } }
1
0
361
Feb ’24
Is it possible to issue a refund for the upgraded subscription and then request a refund for the pre-upgrade subscription?
Hi, I have a question about Apple subscriptions. It is my understanding that when a user upgrades, the subscription prior to the upgrade is already prorated and partially refunded. Is it possible to issue a refund for the upgraded subscription and then request a refund for the pre-upgrade subscription? The server notifications I received were as follows purchase A upgrade A -> B A would have already been prorated and partially refunded refund B Has a revocationReason / revocationDate expired B refund A - should have already been prorated and partially refunded, but if the user requests another refund, will it be given? no revocationReason / revocationDate My guess is no because it's already in revoke status. refund reversed A This may not be present
0
0
435
Feb ’24
The StoreKit offerCodeRedemption(isPresented:) view modifier is not working for subscriptions.
The StoreKit offerCodeRedemption(isPresented:) view modifier is working fine for redeeming consumable offers from App Store Connect, but it fails to redeem subscription offers: When this same offer code is used in the App Store redemption flow, everything works as expected. So there's nothing wrong with the offer codes. Is there a trick to using offerCodeRedemption(isPresented:) when working with subscriptions rather than consumables? Any help is appreciated!
0
0
311
Feb ’24
Advanced Purchase of 3.1.3(e) Goods and Services Outside of the App
Hi There, I'm trying to understand the limitations we may have for an app we are developing. We have a coffee shop app, which would like to offer of a deal - example: a monthly coffee subscription, for $20 you get 10 black coffees for the month which can be redeemed in either our web or mobile apps during the set duration. This is not an in-app purchase, but one that will end up with physical coffee, though it will be received over a period of time. Do we know if it's okay to use a webview to link to the subscription page for managing their coffee subscription (handled outside of IAP as it is a physical good)? They would add their payment info the same way they already do with other integrations like square or stripe payment forms, and then we link them to the actual payment site. I see some things about not even giving the option to show the link or tell the customers what the link is if they want to investigate the option which would be very difficult for the customer to manage. We want a good experience. The guideline itself says "you must use purchase methods other than in-app purchase to collect those payments, such as Apple Pay or traditional credit card entry." Does anyone see an issue with the planned approach? I see the different lawsuits with EPIC and what not and we don't to end up with a rejected app if we can avoid it.
0
0
397
Feb ’24
In-App Subscription - How do we get paid?
Hey Everyone, I have an app running in-app subscriptions through RevenueCat. I am getting paid by Google regularly, but Apple is sitting on our money. I can see about 4 invoices since October last year (When the app went live). Am I meant to download those and send them back to Apple? Could this be why we aren't getting paid, and why isn't Apple just sending the money through, given we have setup banking and agreements correctly? Michael
3
0
281
Feb ’24