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.
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
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!
As of February 4th, my app is missing titles and subscription descriptions. Only the price with the USD currency symbol is displayed.
Attachment:
Example from 2 Feb Attachment:
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
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.
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.
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 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
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
Our app has been live for a while now and is working well. However, our promo codes have never worked correctly. When a user tries to download the app and use the promo code to get 6 months free (for example), it doesn't work. But when that same user uses the URL link provided to get the promo, that works just fine. What are we doing wrong?
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
}
}
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
Is it possible for us to handle a refund for a specific customer who contacted product support to request the cancellation of his subscription? The user has neglected to stop the auto-renewal for a few months after reaching us.
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!
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.
Please if you are reading this and are part of the apple review team, please review my subscriptions of my app. How on earth would my app be approved but not the subscriptions??? The app relies on the subscriptions
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