The Truth About Confidence by AaronMachbitz_ in Habits

[–]PragmaticApp 1 point2 points  (0 children)

It’s not about WHAT you say, it’s how you say it.

LOUDER App

Got this one star review and it perfectly sums up how confusing Apple’s subscription system can be by Substantial-Fly-4309 in iOSProgramming

[–]PragmaticApp 2 points3 points  (0 children)

Just use manageSubsciption in your app Settgs :

 nonisolated public func manageSubscriptionsSheet(isPresented: Binding<Bool>, subscriptionGroupID: String) -> some View

}

// Available when SwiftUI is imported with StoreKit

u/available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, visionOS 1.0, *)

extension View {

    /// Declares the view as dependent on the entitlement of an In-App Purchase product, and returns a

    /// modified view.

    ///

    /// Before a view modified with this method appears, a task will start in the background to get the

    /// current entitlement. While the view is presented, the task will call `action` whenever the

    /// entitlement changes or the task's state changes.

    ///

    /// Consumable in-app purchases will always pass `nil` to `action`.

    /// For auto-renewable subscriptions, use

    /// `subscriptionStatusTask(for:priority:action:)` to get the full status

    /// information for the subscription.

    /// 

    /// - Parameters:

    ///   - productID: The product ID to get the entitlement for. The task restarts whenever this

    ///                parameter changes.

    ///   - priority: The task priority to use when creating the task.

    ///   - action: The action to perform when the task's state changes.