One Logo Pool Ball
StoreKit · IOS API REFERENCE

Product.SubscriptionInfo

struct · iOS 15.0+ · SDK 27.1

struct SubscriptionInfo

Properties and functionality specific to auto-renewable subscriptions.

Members (14)

get · iOS 16.4+

groupLevel

TypeScript
get groupLevel(): number
Swift declaration
@backDeployed(before: iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0)
var groupLevel: Int { get }

The level of this subscription relative to other subscriptions in the same group. Subscriptions with a lower group level indicate a higher level of service. For example, if someone subscribes to a subscription with a group level lower than their current subscription, this would be an upgrade. - Important: When using `groupLevel` on systems earlier than iOS 17.0, macOS 14.0, tvOS 17.0 or watchOS 10.0, the property may return a sentinel value of 0 in some uncommon cases: (1) StoreKit Testing in Xcode (workaround: test your app on a device running a more recent OS) or (2) a critical server error.

get · iOS 26.4+

pricingTerms

TypeScript
get pricingTerms(): Array<Product_SubscriptionInfo_PricingTerms>
Swift declaration
let pricingTerms: [Product.SubscriptionInfo.PricingTerms]
get · iOS 18.0+

winBackOffers

TypeScript
get winBackOffers(): Array<Product_SubscriptionOffer>
Swift declaration
let winBackOffers: [Product.SubscriptionOffer]

An array of all win-back offers configured for this subscription

get · iOS 16.4+

groupDisplayName

TypeScript
get groupDisplayName(): string
Swift declaration
@backDeployed(before: iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0)
var groupDisplayName: String { get }

A localized display name of the subscription's group. To get the display name of the subscription itself, use ``Product/displayName`` on the corresponding ``Product`` value. - Important: When using `groupDisplayName` on systems earlier than iOS 17.0, macOS 14.0, tvOS 17.0 or watchOS 10.0, the property may return a sentinel empty string in some uncommon cases: (1) StoreKit Testing in Xcode (workaround: test your app on a device running a more recent OS) or (2) a critical server error.

get · iOS 15.0+

introductoryOffer

TypeScript
get introductoryOffer(): (Product_SubscriptionOffer) | null
Swift declaration
let introductoryOffer: Product.SubscriptionOffer?

An optional introductory offer that will automatically be applied if the user is eligible.

get · iOS 15.0+

promotionalOffers

TypeScript
get promotionalOffers(): Array<Product_SubscriptionOffer>
Swift declaration
let promotionalOffers: [Product.SubscriptionOffer]

An array of all the promotional offers configured for this subscription.

get · iOS 15.0+

subscriptionPeriod

TypeScript
get subscriptionPeriod(): Product_SubscriptionPeriod
Swift declaration
let subscriptionPeriod: Product.SubscriptionPeriod

The duration that this subscription lasts before auto-renewing.

get · iOS 15.0+

subscriptionGroupID

TypeScript
get subscriptionGroupID(): string
Swift declaration
let subscriptionGroupID: String

The group identifier for this subscription.

get · iOS 27.0+

bundledSubscriptions

TypeScript
get bundledSubscriptions(): Array<Product_SubscriptionInfo_BundledSubscription>
Swift declaration
let bundledSubscriptions: [Product.SubscriptionInfo.BundledSubscription]

Properties and functionality specific to auto-renewable subscriptions included in a subscription bundle. This list is only populated if `type` is `.subscriptionBundle`, and always empty for all other product types.

static · iOS 15.0+

isEligibleForIntroOffer

TypeScript
static isEligibleForIntroOfferFor(groupID: string): Promise<boolean>
Swift declaration
static func isEligibleForIntroOffer(for groupID: String) async -> Bool

Whether the user is eligible to have an introductory offer applied to a purchase in this subscription group. - Parameter groupID: The group identifier to check eligibility for.

get · iOS 15.0+

isEligibleForIntroOffer

TypeScript
get isEligibleForIntroOffer(): Promise<boolean>
Swift declaration
var isEligibleForIntroOffer: Bool { get async }

Whether the user is eligible to have an introductory offer applied to their purchase.

static · iOS 18.4+

status

TypeScript
static statusTransactionID(transactionID: number): Promise<(Product_SubscriptionInfo_Status) | null>
Swift declaration
static func status(transactionID: UInt64) async throws -> SubscriptionStatus?
static · iOS 15.0+

status

TypeScript
static statusFor(groupID: string): Promise<Array<Product_SubscriptionInfo_Status>>
Swift declaration
static func status(for groupID: String) async throws -> [Product.SubscriptionInfo.Status]
get · iOS 15.0+

status

TypeScript
get status(): Promise<Array<Product_SubscriptionInfo_Status>>
Swift declaration
var status: [Product.SubscriptionInfo.Status] { get async throws }

Skipped declarations

No declarations were skipped in this snapshot.

All StoreKit types →